--- /srv/reproducible-results/rbuild-debian/r-b-build.ggsM7wLd/b1/linuxcnc_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.ggsM7wLd/b2/linuxcnc_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.changes ├── Files │ @@ -1,9 +1,9 @@ │ │ - 98ed73c81b2d1dbf83cf875132b3bdda 26378480 misc optional linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ - 9cfead5a69c7867757eeb8e549a9d179 26833980 misc optional linuxcnc-doc-en_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ - cccf5ab7436b5cbc4538c9445297b736 26046960 misc optional linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ - cb28cc95e0ae105c67c583f5f2c1d6b9 25961296 misc optional linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ - fd148a09b1a81d891a09c0b0581933fd 26003584 misc optional linuxcnc-doc-zh-cn_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ + eafa8c9244789941ffd919dca7cf51c5 26374948 misc optional linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ + 32c2bede73d2e88ba351297fd9afe569 26833968 misc optional linuxcnc-doc-en_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ + acbae69b3f483514c25d9a1c4f175371 26047500 misc optional linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ + 96e18d0445c2c0ba9a737333e4511023 25960012 misc optional linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ + 57159515f4da1012403a4f50c0e33a42 26003068 misc optional linuxcnc-doc-zh-cn_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ 1f29d4e4ec81ac2e2b098d9fb094f72f 11203892 debug optional linuxcnc-uspace-dbgsym_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb │ 7ffb1417c96a1a222a8a78c8e18a93d6 251204 devel optional linuxcnc-uspace-dev_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb │ - 2767404450985dc97a92a0de333bb5e3 21589024 misc optional linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb │ + 10992b9c223d25ddfb9340df5c24248e 21587092 misc optional linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb ├── linuxcnc-doc-de_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary │ │ -rw-r--r-- 0 0 0 1096 2023-02-10 04:33:18.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 26377192 2023-02-10 04:33:18.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 26373660 2023-02-10 04:33:18.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: linuxcnc-doc-de │ │ │ │ Source: linuxcnc │ │ │ │ Version: 2.9.0~pre1+git20230208.f1270d6ed7-1 │ │ │ │ Architecture: all │ │ │ │ Maintainer: LinuxCNC Developers │ │ │ │ -Installed-Size: 27143 │ │ │ │ +Installed-Size: 27141 │ │ │ │ Recommends: xdg-utils │ │ │ │ Suggests: pdf-viewer │ │ │ │ Provides: linuxcnc-doc │ │ │ │ Section: misc │ │ │ │ Priority: optional │ │ │ │ Multi-Arch: foreign │ │ │ │ Homepage: https://linuxcnc.org/ │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -4,16 +4,16 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 340 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_de.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 367 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_de.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 381 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_de.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 370 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_de.desktop │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 854990 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 26186714 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 854986 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 26184293 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf │ │ │ │ -rw-r--r-- 0 root (0) root (0) 513408 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_de.pdf │ │ │ │ -rw-r--r-- 0 root (0) root (0) 155414 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_de.pdf │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14868 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_de.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-de/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-de/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-de/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_de.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Entwickler-Handbuch │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Inhaltsverzeichnis │ │ │ │ │ 1 Einführung │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -117,15 +117,15 @@ │ │ │ │ │ │ │ │ │ │ 16 │ │ │ │ │ │ │ │ │ │ 3.8.3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 17 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.8.3.2 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 17 │ │ │ │ │ │ │ │ │ │ @@ -279,15 +279,15 @@ │ │ │ │ │ │ │ │ │ │ 21 │ │ │ │ │ │ │ │ │ │ 3.8.16.1Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 21 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 3.8.16.2Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 21 │ │ │ │ │ │ │ │ │ │ @@ -449,15 +449,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ 3.21.3Prozesslinie │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 3.21.4Kommentare zur Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 30 │ │ │ │ │ │ │ │ │ │ @@ -621,15 +621,15 @@ │ │ │ │ │ │ │ │ │ │ 43 │ │ │ │ │ │ │ │ │ │ 4.14Andere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 43 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ 5 Quellcode-Stil │ │ │ │ │ │ │ │ │ │ 45 │ │ │ │ │ │ │ │ │ │ @@ -779,15 +779,15 @@ │ │ │ │ │ │ │ │ │ │ 57 │ │ │ │ │ │ │ │ │ │ 8.4.1 LinuxCNC offizielles Git Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 57 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 8.4.2 Verwendung von Git im LinuxCNC-Projekt . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 58 │ │ │ │ │ │ │ │ │ │ @@ -876,15 +876,15 @@ │ │ │ │ │ │ │ │ │ │ 11 Index │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 74 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 1 │ │ │ │ │ │ │ │ │ │ Einführung │ │ │ │ │ │ │ │ │ │ @@ -907,15 +907,15 @@ │ │ │ │ │ LINUX® ist das eingetragene Warenzeichen von Linus Torvalds in den USA und anderen Ländern. │ │ │ │ │ Die eingetragene Marke Linux® wird im Rahmen einer Unterlizenz von LMI, dem exklusiven Lizenznehmer von Linus Torvalds, dem Eigentümer der Marke auf weltweiter Basis, verwendet. │ │ │ │ │ Das LinuxCNC-Projekt ist nicht mit Debian® verbunden. Debian_ ist ein eingetragenes Warenzeichen │ │ │ │ │ im Besitz von Software in the Public Interest, Inc. │ │ │ │ │ Das LinuxCNC-Projekt ist nicht mit UBUNTU® verbunden. UBUNTU ist eine eingetragene Marke im │ │ │ │ │ Besitz von Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 2 │ │ │ │ │ │ │ │ │ │ HAL Allgemeine Referenz │ │ │ │ │ 2.1 HAL-Entitätsnamen │ │ │ │ │ @@ -943,15 +943,15 @@ │ │ │ │ │ und Dingen, die sich einfach entwickelt haben. Infolgedessen gibt es viele Inkonsistenzen. Dieser │ │ │ │ │ Abschnitt versucht, dieses Problem zu lösen, indem er einige Konventionen definiert, aber es wird │ │ │ │ │ wahrscheinlich noch eine Weile dauern, bis alle Module so konvertiert sind, dass sie ihnen folgen. │ │ │ │ │ Halcmd und andere Low-Level-HAL-Utilities behandeln HAL-Namen als einzelne Einheiten ohne interne Struktur. Die meisten Module haben jedoch eine implizite Struktur. Ein Board bietet beispielsweise │ │ │ │ │ mehrere Funktionsblöcke, jeder Block kann mehrere Kanäle haben, und jeder Kanal hat einen oder │ │ │ │ │ mehrere Pins. Dies führt zu einer Struktur, die einem Verzeichnisbaum ähnelt. Auch wenn halcmd die │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 75 │ │ │ │ │ │ │ │ │ │ Baumstruktur nicht erkennt, kann es durch die richtige Wahl der Namenskonventionen verwandte Elemente zusammenfassen (da es die Namen sortiert). Darüber hinaus können Werkzeuge auf höherer │ │ │ │ │ Ebene so gestaltet werden, dass sie eine solche Struktur erkennen, wenn die Namen die notwendigen │ │ │ │ │ Informationen liefern. Um dies zu erreichen, sollten alle HAL-Komponenten diese Regeln befolgen: │ │ │ │ │ • Punkte (”.”) trennen die einzelnen Ebenen der Hierarchie. Dies ist vergleichbar mit dem Schrägstrich (”/”) in einem Dateinamen. │ │ │ │ │ @@ -986,15 +986,15 @@ │ │ │ │ │ zum Beispiel pid.0.Pgain anstelle von pid.0.p-gain. │ │ │ │ │ 2 Einige Hardwares verwenden Jumper oder andere Geräte, um eine spezifische Identifikation für jedes Gerät zu definieren. │ │ │ │ │ Im Idealfall bietet der Treiber dem Benutzer die Möglichkeit zu sagen: Gerätenummer 0 ist spezifisch für das Gerät mit der ID │ │ │ │ │ XXX, seine Untergruppen tragen alle eine Nummer, die mit 0 beginnt. Zurzeit verwenden einige Treiber jedoch die ID direkt │ │ │ │ │ als Peripherienummer. Das bedeutet, dass es möglich ist, ein Gerät mit der Nummer 2 zu haben, ohne eines mit der Nummer │ │ │ │ │ 0. Dies ist ein Fehler, der in Version 2.1 verschwinden sollte. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 75 │ │ │ │ │ │ │ │ │ │ (engl. channel-number, kurz chan-num) │ │ │ │ │ Praktisch jedes E/A-Gerät verfügt über mehrere Kanäle, und die Kanalnummer identifiziert einen dieser Kanäle. Wie die Gerätenummern beginnen auch die Kanalnummern bei Null und erhöhen sich. Fußnote:[Eine Ausnahme von der Regel ”Kanalnummern beginnen bei Null” ist der │ │ │ │ │ Parallelport. Seine HAL-Pins sind mit der entsprechenden Pin-Nummer auf dem DB-25-Stecker │ │ │ │ │ nummeriert. Dies ist praktisch für die Verdrahtung, aber inkonsistent mit anderen Treibern. Es │ │ │ │ │ @@ -1028,15 +1028,15 @@ │ │ │ │ │ (engl. device-name) │ │ │ │ │ Das gleiche wie für Pins und Parameter. │ │ │ │ │ (engl. device-num) │ │ │ │ │ Das spezifische Gerät, auf das die Funktion zugreift. │ │ │ │ │ (engl. io-type) │ │ │ │ │ Optional. Eine Funktion kann auf alle E/A auf einer Karte zugreifen oder nur auf einen bestimmten Typ. So kann es beispielsweise unabhängige Funktionen zum Lesen von Encoderzählern und │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 75 │ │ │ │ │ │ │ │ │ │ zum Lesen von digitalen E/A geben. Für solche unabhängigen Funktionen gibt das Feld die Art der E/A an, auf die sie zugreifen. Wenn eine einzige Funktion alle von der Karte │ │ │ │ │ bereitgestellten E/A liest, wird nicht verwendet. 3 │ │ │ │ │ │ │ │ │ │ Optional. Wird nur verwendet, wenn die E/A in Gruppen unterteilt ist und verschiedene │ │ │ │ │ @@ -1052,15 +1052,15 @@ │ │ │ │ │ Schreibt alle Ausgänge (Schrittgeneratoren, PWM, DACs und Digital) auf die erste Pico Systems │ │ │ │ │ ppmc-Karte. │ │ │ │ │ │ │ │ │ │ 3 Hinweis für Treiberprogrammierer: Implementieren Sie KEINE separaten Funktionen für verschiedene E/A-Typen, es │ │ │ │ │ sei denn, sie sind unterbrechbar und können in unabhängigen Threads arbeiten. Wenn die Unterbrechung eines EncoderLesevorgangs, das Lesen digitaler Eingänge und die anschließende Wiederaufnahme des Encoder-Lesevorgangs zu Problemen │ │ │ │ │ führen, dann implementieren Sie eine einzige Funktion, die alles erledigt. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 3 │ │ │ │ │ │ │ │ │ │ Code Anmerkungen │ │ │ │ │ 3.1 Zielgruppe │ │ │ │ │ @@ -1085,15 +1085,15 @@ │ │ │ │ │ und die Linearantriebe eines Hexapods entsprechen jedoch keiner Bewegung entlang einer kartesischen Achse, und im Allgemeinen ist es wichtig, zwischen den kartesischen Achsen und den │ │ │ │ │ Freiheitsgraden der Maschine zu unterscheiden. In diesem Dokument werden letztere als Gelenke und nicht als Achsen bezeichnet. Die grafischen Benutzeroberflächen und einige andere Teile │ │ │ │ │ des Quellcodes folgen dieser Unterscheidung vielleicht nicht immer, aber die Interna des ”Motion │ │ │ │ │ Controllers” schon. │ │ │ │ │ • GELENK (engl. JOINT)- Ein Gelenk ist eines der beweglichen Teile der Maschine. Gelenke unterscheiden sich von Achsen, obwohl die beiden Begriffe manchmal (fälschlicherweise) für dieselbe │ │ │ │ │ Sache verwendet werden. In LinuxCNC ist ein Gelenk einer physikalischen Sache, die bewegt werden kann, nicht eine Koordinate im Raum. Zum Beispiel sind die Pinole, das Knie, der Sattel und der │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 75 │ │ │ │ │ │ │ │ │ │ Tisch einer Bridgeport-Fräse alles Gelenke. Die Schulter, der Ellbogen und das Handgelenk eines │ │ │ │ │ Roboterarms sind Gelenke, ebenso wie die Linearaktuatoren eines Hexapods. Jedem Gelenk ist ein │ │ │ │ │ Motor oder Aktuator zugeordnet. Gelenke entsprechen nicht unbedingt den X-, Y- und Z-Achsen, │ │ │ │ │ obwohl dies bei Maschinen mit trivialer Kinematik der Fall sein kann. Selbst bei diesen Maschinen sind die Position des Gelenks und die Position der Achsen grundlegend verschieden. In diesem │ │ │ │ │ @@ -1124,19 +1124,19 @@ │ │ │ │ │ gedacht. │ │ │ │ │ │ │ │ │ │ 3.4 Architekturübersicht │ │ │ │ │ Die LinuxCNC-Architektur besteht aus vier Komponenten: einem Motion-Controller (EMCMOT), einem diskreten IO-Controller (EMCIO), einem Task-Executor, der diese koordiniert (EMCTASK) und │ │ │ │ │ mehreren textbasierten und grafischen Benutzerschnittstellen. Jede dieser Schnittstellen wird in diesem Dokument beschrieben, sowohl aus der Sicht des Designs als auch aus der Sicht der Entwickler │ │ │ │ │ (wo findet man benötigte Daten, wie kann man Dinge einfach erweitern/verändern, usw.). │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 75 │ │ │ │ │ │ │ │ │ │ 3.4.1 LinuxCNC-Softwarearchitektur │ │ │ │ │ Auf der gröbsten Ebene ist LinuxCNC eine Hierarchie von drei Controllern: der Task-Level-Befehlshandler │ │ │ │ │ und Programminterpreter, der Motion-Controller und der diskrete E/A-Controller (engl. I/O). Der diskrete E/A-Controller ist als eine Hierarchie von Controllern implementiert, in diesem Fall für Spindel, Kühlmittel- und Hilfs-Subsysteme (z. B. Notaus, Schmierung). Der Task-Controller koordiniert die │ │ │ │ │ Aktionen der Bewegungssteuerung und der diskreten E/A-Steuerung. Deren Aktionen werden in konventionellen numerischen Steuerungs- ”G- und M-Code” Programmen programmiert, die von der Aufgabensteuerung in NML-Nachrichten interpretiert und zu den entsprechenden Zeitpunkten entweder │ │ │ │ │ @@ -1163,19 +1163,19 @@ │ │ │ │ │ durch │ │ │ │ │ LinuxCNC wird durch das linuxcnc Skript gestartet, welches eine Konfigurations-.ini-Datei liest und │ │ │ │ │ alle benötigten Prozesse startet. Für die Echtzeit-Bewegungssteuerung lädt das Skript zunächst die │ │ │ │ │ Standard-Module tpmod und homemod und lädt dann die Kinematik- und Bewegungsmodule entsprechend den Einstellungen in halfiles, die in der .ini-Datei angegeben sind. │ │ │ │ │ Benutzerdefinierte Referenzfahrt- oder Flugbahnplanungsmodule können anstelle der Standardmodule über .ini-Datei-Einstellungen oder Befehlszeilenoptionen verwendet werden. Benutzerdefinierte │ │ │ │ │ Module müssen alle von den Standardmodulen verwendeten Funktionen implementieren. Das Dienstprogramm halcompile kann verwendet werden, um ein benutzerdefiniertes Modul zu erstellen. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 75 │ │ │ │ │ │ │ │ │ │ 3.6 Blockdiagramme und Datenfluss │ │ │ │ │ Die folgende Abbildung ist das Blockdiagramm einer Gelenksteuerung. Für jedes Gelenk gibt es genau │ │ │ │ │ eine Gelenksteuerung. Die Gelenksteuerungen arbeiten auf einer niedrigeren Ebene als die Kinematik, einer Ebene, auf der alle Gelenke völlig unabhängig sind. Alle Daten für ein Gelenk befinden sich │ │ │ │ │ in einer einzigen Gelenkstruktur. Einige Elemente dieser Struktur sind im Blockdiagramm sichtbar, │ │ │ │ │ @@ -1188,15 +1188,15 @@ │ │ │ │ │ wird mit der Traj-Rate aktualisiert, nicht mit der Servo-Rate. Im koordinierten Modus wird sie durch │ │ │ │ │ den Traj-Planer bestimmt. Im Teleop-Modus wird sie durch den Traj-Planer bestimmt? Im freien │ │ │ │ │ Modus sie entweder von actualPos kopiert oder durch Anwendung von Vorwärtskinematik auf (2) │ │ │ │ │ oder (3) erzeugt. │ │ │ │ │ • emcmotStatus->joints[n].coarse_pos - Dies ist die gewünschte Position, in Gelenkkoordinaten, aber │ │ │ │ │ vor der Interpolation. Sie wird mit der traj rate aktualisiert, nicht mit der servo rate. Im Koordinatenmodus wird sie durch Anwendung von inversen Kinetiken auf (1) erzeugt. Im Teleop-Modus wird │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 75 │ │ │ │ │ │ │ │ │ │ sie durch Anwendung von inversen Kinematiken auf (1) erzeugt. Im freien Modus wird sie von (3) │ │ │ │ │ kopiert, glaube ich. │ │ │ │ │ • ’emcmotStatus->joints[n].pos_cmd - Dies ist die gewünschte Position, in Gelenkkoordinaten, nach │ │ │ │ │ der Interpolation. Ein neuer Satz dieser Koordinaten wird in jeder Servoperiode erzeugt. Im Koordinatenmodus wird sie vom Interpolator aus (2) generiert. Im Teleop-Modus wird er durch den │ │ │ │ │ @@ -1219,26 +1219,26 @@ │ │ │ │ │ vorzutäuschen, oder B) zuzugeben, dass wir die kartesischen Koordinaten nicht wirklich kennen, │ │ │ │ │ und actualPos einfach nicht zu aktualisieren. Unabhängig davon, welcher Ansatz verwendet wird, │ │ │ │ │ sehe ich keinen Grund, es nicht auf die gleiche Weise zu tun, unabhängig von der Betriebsart. Ich │ │ │ │ │ würde das Folgende vorschlagen: Wenn es Vorwärts-Kins gibt, verwenden Sie sie, es sei denn, sie │ │ │ │ │ funktionieren nicht, weil die Achsen nicht beheimatet sind oder andere Probleme auftreten; in diesem Fall machen Sie (B). Wenn es keine Forward Kins gibt, dann mach (A), da sonst actualPos nie │ │ │ │ │ aktualisiert werden würde. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3.7 Referenzfahrt (engl. homing) │ │ │ │ │ 3.7.1 Zustandsdiagramm der Referenzfahrt │ │ │ │ │ │ │ │ │ │ 14 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 75 │ │ │ │ │ │ │ │ │ │ 3.7.2 Ein weiteres Homing-Diagramm │ │ │ │ │ │ │ │ │ │ 3.8 Befehle │ │ │ │ │ Die Befehle werden durch eine große Fallunterscheidung (Switch-Anweisung) in der Funktion emcmotCommandHandler() implementiert, die bei der Servo-Rate aufgerufen wird. Mehr zu dieser Funktion später. │ │ │ │ │ @@ -1251,15 +1251,15 @@ │ │ │ │ │ │ │ │ │ │ 3.8.1 Abbrechen │ │ │ │ │ Der Befehl ABORT (engl. für Abbruch) stoppt einfach alle Bewegungen. Er kann jederzeit erteilt werden und wird immer akzeptiert. Er deaktiviert den Motion Controller nicht und ändert auch keine │ │ │ │ │ Zustandsinformationen, sondern bricht lediglich eine laufende Bewegung ab.1 │ │ │ │ │ 1 Es scheint, dass der Code auf höherer Ebene (TASK und höher) ABORT auch zum Löschen von Fehlern verwendet. Wann │ │ │ │ │ immer ein anhaltender Fehler auftritt (z. B. wenn die Hardware-Endschalter überschritten werden), sendet der übergeordnete │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.1.1 Anforderungen │ │ │ │ │ Keine. Der Befehl wird immer angenommen und sofort ausgeführt. │ │ │ │ │ 3.8.1.2 Ergebnisse │ │ │ │ │ Im freien Modus sind die Trajektorienplaner für den freien Modus deaktiviert. Das führt dazu, dass │ │ │ │ │ @@ -1292,15 +1292,15 @@ │ │ │ │ │ Bewegung der Maschine auf kartesischen Koordinaten unter Verwendung der Kinematik und nicht auf │ │ │ │ │ einzelnen Gelenken wie im freien Modus. Der Trajektorienplaner als solcher wird jedoch nicht verwendet, stattdessen wird die Bewegung durch einen Geschwindigkeitsvektor gesteuert. Die Bewegung im │ │ │ │ │ Teleop-Modus ähnelt dem Joggen, mit dem Unterschied, dass sie im kartesischen Raum und nicht im │ │ │ │ │ Gelenkraum erfolgt. Auf einer Maschine mit trivialer Kinematik gibt es kaum einen Unterschied zwischen dem Teleop-Modus und dem freien Modus, und die grafischen Benutzeroberflächen für diese │ │ │ │ │ Code einen ständigen Strom von ABORTs an den Bewegungsregler, um den Fehler zu beheben. Tausende von ihnen…. Das │ │ │ │ │ bedeutet, dass die Bewegungssteuerung anhaltende Fehler vermeiden sollte. Dies muss untersucht werden. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 75 │ │ │ │ │ │ │ │ │ │ Maschinen geben diesen Befehl möglicherweise nicht einmal aus. Bei nicht-trivialen Maschinen wie │ │ │ │ │ Robotern und Hexapoden wird der Teleop-Modus jedoch für die meisten vom Benutzer befohlenen │ │ │ │ │ Jog-Bewegungen verwendet. │ │ │ │ │ 3.8.3.1 Anforderungen │ │ │ │ │ @@ -1331,15 +1331,15 @@ │ │ │ │ │ Wenn sich die Maschine bereits im Koordinatenmodus befindet, geschieht nichts. Andernfalls wird die │ │ │ │ │ Maschine in den Koordinatenmodus versetzt. Der Kinematikcode wird aktiviert, die Interpolatoren │ │ │ │ │ werden entleert und geleert, und die Warteschlangen des Bahnplaners sind leer. Der Trajektorienplaner ist aktiv und wartet auf einen LINE-, CIRCLE- oder PROBE-Befehl. │ │ │ │ │ │ │ │ │ │ 3.8.5 ENABLE (AKTIVIEREN) │ │ │ │ │ Der Befehl ENABLE aktiviert den Motion Controller. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.5.1 Anforderungen │ │ │ │ │ Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. │ │ │ │ │ 3.8.5.2 Ergebnisse │ │ │ │ │ Wenn der Controller bereits aktiviert ist, passiert nichts. Ansonsten wird der Controller aktiviert. Warteschlangen und Interpolatoren werden geleert. Alle Bewegungs- oder Referenzfahrtvorgänge werden │ │ │ │ │ @@ -1364,15 +1364,15 @@ │ │ │ │ │ Derzeit nichts. (Ein Aufruf der alten extAmpEnable-Funktion ist derzeit auskommentiert.) Eventuell │ │ │ │ │ wird der Amp-Enable-HAL-Pin auf true gesetzt. │ │ │ │ │ │ │ │ │ │ 3.8.8 DISABLE_AMPLIFIER │ │ │ │ │ Der Befehl DISABLE_AMPLIFIER schaltet den Amp-Enable-Ausgang für einen einzelnen Verstärker │ │ │ │ │ aus, ohne etwas anderes zu ändern. Auch dies ist nützlich für Spindeldrehzahlregler. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.8.1 Anforderungen │ │ │ │ │ Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. │ │ │ │ │ 3.8.8.2 Ergebnisse │ │ │ │ │ Derzeit nichts. (Ein Aufruf der alten extAmpEnable Funktion ist derzeit auskommentiert.) Eventuell │ │ │ │ │ @@ -1396,15 +1396,15 @@ │ │ │ │ │ nicht. │ │ │ │ │ │ │ │ │ │ 3.8.11 ENABLE_WATCHDOG │ │ │ │ │ Der Befehl ENABLE_WATCHDOG aktiviert einen hardwarebasierten Watchdog (falls vorhanden). │ │ │ │ │ 3.8.11.1 Anforderungen │ │ │ │ │ Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.11.2 Ergebnisse │ │ │ │ │ Derzeit nichts. Der alte Watchdog war ein seltsames Ding, das eine bestimmte Soundkarte verwendete. Möglicherweise wird in Zukunft eine neue Watchdog-Schnittstelle entwickelt. │ │ │ │ │ │ │ │ │ │ 3.8.12 DISABLE_WATCHDOG │ │ │ │ │ @@ -1427,15 +1427,15 @@ │ │ │ │ │ Der Befehl RESUME startet den Trajektorienplaner neu, wenn er angehalten wurde. Er hat keine │ │ │ │ │ Auswirkung im freien oder Teleop-Modus, oder wenn der Planer nicht angehalten ist. │ │ │ │ │ 3.8.14.1 Anforderungen │ │ │ │ │ Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. │ │ │ │ │ 3.8.14.2 Ergebnisse │ │ │ │ │ Der Trajektorienplaner arbeitet weiter. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.15 STEP │ │ │ │ │ Der STEP-Befehl (engl. für Schritt) startet den Trajektorienplaner neu, wenn er angehalten wurde, und │ │ │ │ │ weist ihn an, wieder anzuhalten, wenn er einen bestimmten Punkt erreicht. Er hat keine Wirkung im │ │ │ │ │ freien oder Teleop-Modus. Zu diesem Zeitpunkt weiß ich nicht genau, wie das funktioniert. Ich werde │ │ │ │ │ @@ -1464,15 +1464,15 @@ │ │ │ │ │ 3.8.17.1 Anforderungen │ │ │ │ │ Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. (Ich denke, es sollte nur │ │ │ │ │ im freien Modus funktionieren.) │ │ │ │ │ 3.8.17.2 Ergebnisse │ │ │ │ │ Die Begrenzungen für alle Gelenke werden bis zum Ende des nächsten JOG-Befehls außer Kraft gesetzt. (Dies ist derzeit nicht möglich… sobald ein OVERRIDE_LIMITS-Befehl empfangen wird, werden │ │ │ │ │ die Begrenzungen ignoriert, bis ein weiterer OVERRIDE_LIMITS-Befehl sie wieder aktiviert.) │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.18 HOME │ │ │ │ │ Der HOME-Befehl leitet eine Referenzfahrt an einem bestimmten Gelenk ein. Die tatsächliche Referenzierungssequenz wird durch eine Reihe von Konfigurationsparametern bestimmt und kann vom │ │ │ │ │ einfachen Setzen der aktuellen Position auf Null bis hin zu einer mehrstufigen Suche nach einem │ │ │ │ │ Referenzschalter und einem Indeximpuls, gefolgt von einer Bewegung zu einer beliebigen Referenzposition, reichen. Weitere Informationen über die Referenzfahrt-Sequenz finden Sie im Abschnitt Referenzfahrt des Integrator-Handbuchs. │ │ │ │ │ @@ -1498,15 +1498,15 @@ │ │ │ │ │ 3.8.20 JOG_INCR │ │ │ │ │ Der JOG_INCR-Befehl initiiert einen inkrementellen Tippbetrieb für ein einzelnes Gelenk. Inkrementelle Verfahrbewegungen sind kumulativ, d.h. wenn Sie zwei JOG_INCR-Befehle geben, die jeweils │ │ │ │ │ eine Bewegung von 0,100 Zoll erfordern, ergibt dies eine Bewegung von 0,200 Zoll, auch wenn der │ │ │ │ │ zweite Befehl gegeben wird, bevor der erste beendet ist. Normalerweise stoppen Inkremental-Jogs, │ │ │ │ │ wenn sie die gewünschte Strecke zurückgelegt haben, aber sie stoppen auch, wenn sie an eine Grenze │ │ │ │ │ stoßen, oder bei einem ABORT-Befehl. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.20.1 Anforderungen │ │ │ │ │ Der Befehlshandler lehnt den JOG_INCR-Befehl stillschweigend ab, wenn sich die Maschine nicht im │ │ │ │ │ freien Modus befindet, wenn ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE) │ │ │ │ │ oder wenn die Bewegung nicht aktiviert ist. Der Befehl wird auch ignoriert, wenn das Gelenk bereits │ │ │ │ │ @@ -1538,15 +1538,15 @@ │ │ │ │ │ und die Maschine fährt zur befohlenen Endposition. Der Planer im freien Modus beschleunigt zu │ │ │ │ │ Beginn der Bewegung mit der Gelenkbeschleunigungsgrenze und bremst mit der Gelenkbeschleunigungsgrenze ab, um an der Zielposition anzuhalten. │ │ │ │ │ │ │ │ │ │ 3.8.22 SET_LINE │ │ │ │ │ Der Befehl SET_LINE fügt eine gerade Linie in die Warteschlange des Trajektorienplaners ein. │ │ │ │ │ (Mehr dazu später) │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 75 │ │ │ │ │ │ │ │ │ │ 3.8.23 SET_CIRCLE │ │ │ │ │ Der Befehl SET_CIRCLE fügt eine kreisförmige Bewegung in die Warteschlange des Trajektorienplaners ein. │ │ │ │ │ (Mehr dazu später) │ │ │ │ │ │ │ │ │ │ @@ -1576,15 +1576,15 @@ │ │ │ │ │ + Umkehrspiel- und Schraubenfehlerkompensation │ │ │ │ │ │ │ │ │ │ 3.10 Task-Controller (EMCTASK) │ │ │ │ │ 3.10.1 Zustand │ │ │ │ │ Die Aufgabe hat drei mögliche interne Zustände: Notaus (E-Stop), Notaus-Reset (E-Stop Reset) und │ │ │ │ │ Maschine Ein (Machine On). │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 75 │ │ │ │ │ │ │ │ │ │ 3.11 IO-Controller (EMCIO) │ │ │ │ │ Die E/A-Steuerung (engl. I/O controller) ist ein separates Modul, das NML-Befehle von TASK annimmt. │ │ │ │ │ Es interagiert mit externen E/A über HAL-Pins. iocontrol.cc wird über das linuxcnc-Skript vor TASK │ │ │ │ │ geladen. Derzeit gibt es zwei Versionen von iocontrol. Die zweite Version behandelt Hardware-Fehler │ │ │ │ │ @@ -1608,15 +1608,15 @@ │ │ │ │ │ #define EMC_TOOL_ABORT_TYPE ((NMLTYPE) 1103) │ │ │ │ │ #define EMC_TOOL_PREPARE_TYPE ((NMLTYPE) 1104) │ │ │ │ │ #define EMC_TOOL_LOAD_TYPE ((NMLTYPE) 1105) │ │ │ │ │ #define EMC_TOOL_UNLOAD_TYPE ((NMLTYPE) 1106) │ │ │ │ │ #define EMC_TOOL_LOAD_TOOL_TABLE_TYPE ((NMLTYPE) 1107) │ │ │ │ │ #define EMC_TOOL_SET_OFFSET_TYPE ((NMLTYPE) 1108) │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 75 │ │ │ │ │ │ │ │ │ │ #define EMC_TOOL_SET_NUMBER_TYPE ((NMLTYPE) 1109) │ │ │ │ │ // die folgende Nachricht wird gleich zu Beginn eines M6 an io gesendet │ │ │ │ │ // noch bevor emccanon die Bewegung zur Werkzeugwechselposition ausgibt │ │ │ │ │ #define EMC_TOOL_START_CHANGE_TYPE ((NMLTYPE) 1110) │ │ │ │ │ @@ -1647,15 +1647,15 @@ │ │ │ │ │ Stellt einen Block von gemeinsamem Speicher zusammen mit einer Semaphore (geerbt von der Klasse │ │ │ │ │ Semaphore) bereit. Die Erstellung und Zerstörung der Semaphore wird durch den SharedMemoryKonstruktor und -Destruktor gehandhabt. │ │ │ │ │ │ │ │ │ │ 3.17 ShmBuffer │ │ │ │ │ Klasse zur Weitergabe von NML-Nachrichten zwischen lokalen Prozessen unter Verwendung eines │ │ │ │ │ gemeinsamen Speicherpuffers. Ein Großteil der internen Arbeitsweise wird von der CMS-Klasse geerbt. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 75 │ │ │ │ │ │ │ │ │ │ 3.18 Timer │ │ │ │ │ Die Klasse Timer bietet einen periodischen Timer, der nur durch die Auflösung der Systemuhr begrenzt ist. Wenn zum Beispiel ein Prozess alle 5 Sekunden ausgeführt werden muss, unabhängig von │ │ │ │ │ der Zeit, die für die Ausführung des Prozesses benötigt wird. Der folgende Codeschnipsel zeigt wie : │ │ │ │ │ main() │ │ │ │ │ @@ -1685,15 +1685,15 @@ │ │ │ │ │ NML verwendeten Funktionen enthält. Viele der internen Funktionen sind überladen, um spezifische │ │ │ │ │ hardwareabhängige Methoden der Datenübergabe zu ermöglichen. Letztlich dreht sich alles um einen zentralen Speicherblock (der als Nachrichtenpuffer oder einfach Puffer bezeichnet wird). Dieser │ │ │ │ │ Puffer kann ein gemeinsam genutzter Speicherblock sein, auf den andere CMS/NML-Prozesse zugreifen, oder ein lokaler und privater Puffer für Daten, die über Netzwerk- oder serielle Schnittstellen │ │ │ │ │ übertragen werden. │ │ │ │ │ Der Puffer wird zur Laufzeit dynamisch zugewiesen, um eine größere Flexibilität des CMS/NMLSubsystems zu ermöglichen. Die Puffergröße muss groß genug sein, um die größte Nachricht aufzunehmen, eine kleine Menge für den internen Gebrauch und die Möglichkeit, die Nachricht zu kodieren, wenn diese Option gewählt wird (auf kodierte Daten wird später eingegangen). Die folgende │ │ │ │ │ Abbildung zeigt eine interne Ansicht des Pufferspeichers. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 75 │ │ │ │ │ │ │ │ │ │ CMS-Puffer Die CMS-Basisklasse ist in erster Linie für die Erstellung der Kommunikationswege und │ │ │ │ │ der Schnittstellen zum Betriebssystem verantwortlich. │ │ │ │ │ │ │ │ │ │ 3.21 Format der Konfigurationsdatei │ │ │ │ │ @@ -1711,15 +1711,15 @@ │ │ │ │ │ • neut - ein boolescher Wert, der angibt, ob die Daten im Puffer in einem maschinenunabhängigen │ │ │ │ │ Format oder im Rohformat kodiert sind. │ │ │ │ │ • RPC# - Obsolet - Platzhalter nur noch aus Gründen der Abwärtskompatibilität. │ │ │ │ │ • buffer# - Eine eindeutige ID-Nummer, die verwendet wird, wenn ein Server mehrere Puffer kontrolliert. │ │ │ │ │ • max_procs - ist die maximale Anzahl von Prozessen, die sich mit diesem Puffer verbinden dürfen. │ │ │ │ │ • key - ist ein numerischer Bezeichner für einen gemeinsamen Speicherpuffer │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 75 │ │ │ │ │ │ │ │ │ │ 3.21.2 Typspezifische Konfigurationen │ │ │ │ │ Der Puffertyp impliziert zusätzliche Konfigurationsoptionen, während das Host-Betriebssystem bestimmte Kombinationen ausschließt. In dem Bemühen, die veröffentlichte Dokumentation in ein kohärentes Format zu bringen, wird nur der Puffertyp SHMEM behandelt. │ │ │ │ │ • mutex=os_sem - Standardmodus für die Bereitstellung von Semaphore-Sperren des Pufferspeichers. │ │ │ │ │ • mutex=none - Nicht verwendet │ │ │ │ │ @@ -1751,15 +1751,15 @@ │ │ │ │ │ • host - gibt an, wo im Netzwerk dieser Prozess ausgeführt wird. │ │ │ │ │ • ops - gibt dem Prozess nur Lese-, nur Schreib- oder Lese-/Schreibzugriff auf den Puffer. │ │ │ │ │ • server - gibt an, ob dieser Prozess einen Server für diesen Puffer betreiben wird. │ │ │ │ │ • timeout - legt die Timeout-Eigenschaften für Zugriffe auf den Puffer fest. │ │ │ │ │ • master - gibt an, ob dieser Prozess für die Erstellung und Löschung des Puffers verantwortlich ist. │ │ │ │ │ • c_num - eine Ganzzahl zwischen Null und (max_procs -1) │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 75 │ │ │ │ │ │ │ │ │ │ 3.21.4 Kommentare zur Konfiguration │ │ │ │ │ Einige der Konfigurationskombinationen sind ungültig, während andere bestimmte Beschränkungen │ │ │ │ │ mit sich bringen. Auf einem Linux-System ist GLOBMEM überflüssig, während PHANTOM nur in der │ │ │ │ │ Testphase einer Anwendung wirklich nützlich ist, gleiches gilt für FILEMEM. LOCMEM ist für eine │ │ │ │ │ @@ -1798,15 +1798,15 @@ │ │ │ │ │ 3.22 NML-Basisklasse │ │ │ │ │ Mehr zu Listen und die Beziehung zwischen NML, NMLmsg und den untergeordneten cms-Klassen. │ │ │ │ │ Nicht zu verwechseln mit NMLmsg, RCS_STAT_MSG, oder RCS_CMD_MSG. │ │ │ │ │ NML ist verantwortlich für das Parsen der Konfigurationsdatei, die Konfiguration der cms-Puffer und │ │ │ │ │ die Weiterleitung von Nachrichten an die richtigen Puffer. Zu diesem Zweck erstellt NML mehrere │ │ │ │ │ Listen für: │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 75 │ │ │ │ │ │ │ │ │ │ • cms-Puffer, die erstellt oder die verbunden wurden. │ │ │ │ │ • Prozesse und die Puffer, mit denen sie verbunden sind │ │ │ │ │ • eine lange Liste von Formatfunktionen für jeden Nachrichtentyp │ │ │ │ │ Dieser letzte Punkt ist wahrscheinlich der Kern eines Großteils der schlechten Bewertung von libnml/rcslib und NML im Allgemeinen. Jede Nachricht, die über NML weitergegeben wird, erfordert neben │ │ │ │ │ @@ -1833,15 +1833,15 @@ │ │ │ │ │ übergibt. In format_xxx() findet die Arbeit des Aufbaus oder Abbaus der Nachricht statt. Eine Liste │ │ │ │ │ verschiedener Funktionen wird nacheinander aufgerufen, um verschiedene Teile des NML-Headers │ │ │ │ │ (nicht zu verwechseln mit dem cms-Header) in die richtige Reihenfolge zu bringen - die letzte aufgerufene Funktion ist emcFormat() in emc.cc. │ │ │ │ │ 3.22.1.3 NMLmsg und NML-Beziehungen │ │ │ │ │ NMLmsg ist die Basisklasse, von der alle Nachrichtenklassen abgeleitet sind. Für jede Nachrichtenklasse muss eine eindeutige ID definiert (und an den Konstruktor übergeben) werden sowie eine │ │ │ │ │ update(*cms)-Funktion. Die update()-Funktion wird von den NML-Lese-/Schreibfunktionen aufgerufen, wenn der NML-Formatierer aufgerufen wird - der Zeiger auf den Formatierer wird irgendwann │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 75 │ │ │ │ │ │ │ │ │ │ im NML-Konstruktor deklariert worden sein. Durch die von NML erstellten verknüpften Listen ist es │ │ │ │ │ möglich, den cms-Zeiger auszuwählen, der an den Formatierer übergeben wird, und damit den zu │ │ │ │ │ verwendenden Puffer. │ │ │ │ │ │ │ │ │ │ @@ -1873,15 +1873,15 @@ │ │ │ │ │ Beispiele für nicht-zufällige Werkzeugwechsler sind der ”manuelle” Werkzeugwechsler, Drehautomaten und Regalwechsler. │ │ │ │ │ Wenn für einen nicht-zufälligen Werkzeugwechsler konfiguriert, ändert LinuxCNC die Platznummer in │ │ │ │ │ der Werkzeugtabellen-Datei nicht wenn Werkzeuge geladen bzw. entladen werden. LinuxCNC-intern │ │ │ │ │ werden bei einem Werkzeugwechsel die Werkzeug-Informationen von der Werkzeugtabelle kopiert │ │ │ │ │ von der jeweiligen Taschennummer der Quelle (der Ablage) zur Tasche mit der Nummer 0 (welche │ │ │ │ │ die Spindel darstellt). Dies ersetzt die vorherigen dort abgelegten Werkzeuginformationen. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 75 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ In einem für nicht-zufällige Werkzeugwechsler konfigurierten LinuxCNC hat Werkzeug 0 (T0) eine │ │ │ │ │ besondere Bedeutung: ”kein Werkzeug”. T0 kann nicht in der Werkzeugtabelle Datei erscheinen, │ │ │ │ │ und der Wechsel zu T0 wird in LinuxCNC verstehen, dass die Spindel kein Werkzeug führt. │ │ │ │ │ @@ -1912,15 +1912,15 @@ │ │ │ │ │ • Wenn LinuxCNC für einen nicht-zufälligen Werkzeugwechsler konfiguriert ist, muss diese Zahl │ │ │ │ │ positiv sein. T0 bekommt eine Sonderbehandlung und darf nicht in der Werkzeugtabelle erscheinen. │ │ │ │ │ • Wenn LinuxCNC für einen zufälligen Werkzeugwechsler konfiguriert ist, muss diese Zahl nichtnegativ sein. T0 ist in der Werkzeugtabelle erlaubt, und wird in der Regel verwendet, um ”kein │ │ │ │ │ Werkzeug”, d.h. die leere Tasche darstellen. │ │ │ │ │ Taschennummer │ │ │ │ │ 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ängig davon ob für zufällige und nicht-zufällige Werkzeugwechsler konfiguriert: │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 75 │ │ │ │ │ │ │ │ │ │ • Wenn LinuxCNC für einen nicht-zufälligen Werkzeugwechsler konfiguriert ist, kann die Platznummer in der Werkzeugdatei jede positive ganze Zahl (Tasche 0 ist nicht erlaubt) sein. LinuxCNC verdichtet die Platznummern stillschweigend, wenn es die Werkzeugdatei lädt, so kann es │ │ │ │ │ einen Unterschied zwischen den Platznummern in der Werkzeugdatei und den internen Platznummern von LinuxCNC geben. │ │ │ │ │ • Wenn LinuxCNC für einen zufälligen Werkzeugwechsler konfiguriert ist, müssen die Platznummern in der Werkzeugdatei zwischen 0 und 1000, einschließlich sein. Pockets 1-1000 sind im │ │ │ │ │ Werkzeugwechsler, Tasche 0 ist die Spindel. │ │ │ │ │ @@ -1947,15 +1947,15 @@ │ │ │ │ │ setzt IO emcioStatus.tool.pocketPrepped auf die angeforderte Werkzeugplatz-/taschennummer. │ │ │ │ │ 2. Zurück in interp, wird settings->selected_pocket dem tooldata-Index (engl. für WerkzeugdatenIndex) des angeforderten Werkzeugs xxx zugewiesen. │ │ │ │ │ Anmerkung │ │ │ │ │ Die inzwischen nicht mehr verwendeten Namen selected_pocket und current_pocket verweisen │ │ │ │ │ auf einen sequentiellen Werkzeugdatenindex für Werkzeugelemente, die aus einer Werkzeugtabelle │ │ │ │ │ ([EMCIO]TOOL_TABLE) oder über eine Werkzeugdatenbank ([EMCIO]DB_PROGRAM) geladen werden. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 75 │ │ │ │ │ │ │ │ │ │ 3.24.3.2 M6 │ │ │ │ │ Weist den Werkzeugwechsler an, zum aktuell ausgewählten Werkzeug zu wechseln (ausgewählt durch │ │ │ │ │ den vorherigen Befehl Txxx). │ │ │ │ │ Wird von Interp::convert_tool_change() behandelt. │ │ │ │ │ @@ -1990,15 +1990,15 @@ │ │ │ │ │ b. (emccanon) Erstellt eine Nachricht EMC_TRAJ_SET_OFFSET mit den Offsets und sendet sie an │ │ │ │ │ Task. Task kopiert die Offsets nach emcStatus->task.toolOffset und sendet sie über einen │ │ │ │ │ EMCMOT_SET_OFFSET-Befehl an Motion weiter. Motion kopiert die Offsets nach emcmotStatus->tool │ │ │ │ │ wo sie zum Offset für zukünftige Bewegungen verwendet werden. │ │ │ │ │ 3. Zurück in interp werden die Offsets in settings->tool_offset aufgezeichnet. Die effektive Tasche wird in settings->tool_offset_index aufgezeichnet, obwohl dieser Wert nie verwendet │ │ │ │ │ wird. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 75 │ │ │ │ │ │ │ │ │ │ 3.24.3.4 G10 L1/L10/L11 │ │ │ │ │ Ändert die Werkzeugtabelle. │ │ │ │ │ Wird von Interp::convert_setup_tool() behandelt. │ │ │ │ │ 1. Wählt die Werkzeugnummer aus dem P-Wort im Block aus und findet die Tasche für dieses Werkzeug: │ │ │ │ │ @@ -2031,15 +2031,15 @@ │ │ │ │ │ (Diese zweite Aktualisierung der Werkzeugtabelle wird bei Maschinen mit Zufallswerkzeugwechsler nicht benötigt, da die Werkzeuge dort keinen Stammplatz haben und wir stattdessen nur das │ │ │ │ │ Werkzeug in Platz 0 direkt aktualisieren.) │ │ │ │ │ 3.24.3.5 M61 │ │ │ │ │ Setze aktuelle Werkzeugnummer. Dies wechselt LinuxCNC’s interne Darstellung, welches Werkzeug │ │ │ │ │ in der Spindel ist, ohne tatsächlich bewegen den Werkzeugwechsler oder Austausch von Werkzeugen. │ │ │ │ │ Wird von Interp::convert_tool_change() behandelt. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 75 │ │ │ │ │ │ │ │ │ │ Canon: CHANGE_TOOL_NUMBER() │ │ │ │ │ settings->current_pocket wird dem Werkzeugdaten-Index zugewiesen, der das durch das Q-WortArgument angegebene Werkzeug enthält. │ │ │ │ │ 3.24.3.6 G41/G41.1/G42/G42.1 │ │ │ │ │ Aktiviert die Fräserradiuskompensation (engl. kurz cutter comp genannt). │ │ │ │ │ @@ -2065,15 +2065,15 @@ │ │ │ │ │ Werkzeugnummer des aktuell in der Spindel installierten Werkzeugs. Wird über den HAL-Pin │ │ │ │ │ iocontrol.0.tool-number (s32) exportiert. │ │ │ │ │ emcioStatus.tool.toolTable[] │ │ │ │ │ Ein Array von CANON_TOOL_TABLE Strukturen, CANON_POCKETS_MAX lang. Wird beim Starten aus │ │ │ │ │ der Werkzeugtabellendatei geladen und danach beibehalten. Index 0 ist die Spindel, die Indizes 1-(CANON_POCKETS_MAX-1) sind die Plätze im Werkzeugwechsler. Dies ist eine vollständige Kopie der Werkzeuginformationen, die getrennt von Interp’s settings.tool_table gepflegt │ │ │ │ │ wird. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 75 │ │ │ │ │ │ │ │ │ │ 3.24.4.2 interp │ │ │ │ │ │ │ │ │ │ settings ist vom Typ settings, definiert als struct setup_struct ist in src/emc/rs274ngc/interp_inter │ │ │ │ │ settings.selected_pocket │ │ │ │ │ @@ -2107,15 +2107,15 @@ │ │ │ │ │ settings.tool_table │ │ │ │ │ Dies ist ein Array von CANON_TOOL_TABLE Strukturen (definiert in src/emc/nml_intf/emctool.h), │ │ │ │ │ mit CANON_POCKETS_MAX Einträgen. Indiziert durch ”Taschen-Nummer”, auch bekannt als ”SlotNummer”. Index 0 ist die Spindel, die Indizes 1 bis (CANON_POCKETS_MAX-1) sind die Plätze │ │ │ │ │ im Werkzeugwechsler. Bei einem Zufallswerkzeugwechsler sind die Platznummern sinnvoll. Bei │ │ │ │ │ einem nicht-zufälligen Werkzeugwechsler sind die Platznummern bedeutungslos; die Platznummern in der Werkzeugtabellendatei werden ignoriert und die Werkzeuge werden den tool_table │ │ │ │ │ Plätzen nacheinander zugewiesen. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 75 │ │ │ │ │ │ │ │ │ │ settings.tool_change_at_g30 , settings.tool_change_quill_up , settings.tool_change_with_spindle_ │ │ │ │ │ Diese werden über INI-Variablen im Abschnitt [EMCIO] gesetzt und bestimmen, wie Werkzeugwechsel durchgeführt werden. │ │ │ │ │ │ │ │ │ │ 3.25 Parameter-Bestimmung von Gelenken und Achsen │ │ │ │ │ @@ -2150,15 +2150,15 @@ │ │ │ │ │ Die Echtzeitkomponente des Motion Controllers erhält zunächst die Anzahl der Joints aus dem LoadTime-Parameter num_joints. Dieser bestimmt, wie viele Gelenke mit HAL-Pins beim Start erzeugt │ │ │ │ │ werden. │ │ │ │ │ Die Anzahl der Gelenke einer Bewegung kann zur Laufzeit mit dem Befehl EMCMOT_SET_NUM_JOINTS │ │ │ │ │ aus dem Task heraus geändert werden. │ │ │ │ │ Der Motion Controller arbeitet immer mit EMCMOT_MAX_AXIS-Achsen. Er erstellt immer neun Sätze von │ │ │ │ │ ”Achsen..”-Pins. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Kapitel 4 │ │ │ │ │ │ │ │ │ │ NML-Nachrichten │ │ │ │ │ Liste der NML-Nachrichten. │ │ │ │ │ Für Einzelheiten siehe src/emc/nml_intf/emc.hh. │ │ │ │ │ │ │ │ │ │ @@ -2190,15 +2190,15 @@ │ │ │ │ │ EMC_JOINT_UNHOME_TYPE │ │ │ │ │ EMC_JOINT_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.3 ACHSE │ │ │ │ │ │ │ │ │ │ 40 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_AXIS_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.4 JOG │ │ │ │ │ EMC_JOG_CONT_TYPE │ │ │ │ │ EMC_JOG_INCR_TYPE │ │ │ │ │ EMC_JOG_ABS_TYPE │ │ │ │ │ @@ -2244,15 +2244,15 @@ │ │ │ │ │ EMC_TRAJ_RIGID_TAP_TYPE │ │ │ │ │ EMC_TRAJ_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.6 MOTION (engl. für Bewegung) │ │ │ │ │ │ │ │ │ │ 41 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 75 │ │ │ │ │ │ │ │ │ │ EMC_MOTION_INIT_TYPE │ │ │ │ │ EMC_MOTION_HALT_TYPE │ │ │ │ │ EMC_MOTION_ABORT_TYPE │ │ │ │ │ EMC_MOTION_SET_AOUT_TYPE │ │ │ │ │ @@ -2297,15 +2297,15 @@ │ │ │ │ │ EMC_TOOL_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.9 AUX (engl. Kurzform für ”andere Hilfsfunktionen”) │ │ │ │ │ EMC_AUX_ESTOP_ON_TYPE │ │ │ │ │ EMC_AUX_ESTOP_OFF_TYPE │ │ │ │ │ EMC_AUX_ESTOP_RESET_TYPE │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 75 │ │ │ │ │ │ │ │ │ │ EMC_AUX_INPUT_WAIT_TYPE │ │ │ │ │ EMC_AUX_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.10 SPINDLE (engl. für Spindel) │ │ │ │ │ @@ -2340,28 +2340,28 @@ │ │ │ │ │ EMC_IO_ABORT_TYPE │ │ │ │ │ EMC_IO_SET_CYCLE_TIME_TYPE │ │ │ │ │ EMC_IO_STAT_TYPE │ │ │ │ │ EMC_IO_PLUGIN_CALL_TYPE │ │ │ │ │ │ │ │ │ │ 4.14 Andere │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_NULL_TYPE │ │ │ │ │ EMC_SET_DEBUG_TYPE │ │ │ │ │ EMC_SYSTEM_CMD_TYPE │ │ │ │ │ EMC_INIT_TYPE │ │ │ │ │ EMC_HALT_TYPE │ │ │ │ │ EMC_ABORT_TYPE │ │ │ │ │ EMC_STAT_TYPE │ │ │ │ │ EMC_EXEC_PLUGIN_CALL_TYPE │ │ │ │ │ │ │ │ │ │ 44 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 5 │ │ │ │ │ │ │ │ │ │ Quellcode-Stil │ │ │ │ │ Dieses Kapitel beschreibt den vom LinuxCNC-Team bevorzugten Quellcode-Stil. │ │ │ │ │ @@ -2385,15 +2385,15 @@ │ │ │ │ │ │ │ │ │ │ 5.4 Setzen von Klammern │ │ │ │ │ Setzen Sie die öffnende Klammer zuletzt auf die Linie, und setzen Sie die schließende Klammer zuerst: │ │ │ │ │ if (x) { │ │ │ │ │ // macht irgendetwas der Situation Angepasstes │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 75 │ │ │ │ │ │ │ │ │ │ Die schließende Klammer steht in einer eigenen Zeile, es sei denn, es folgt eine Fortsetzung derselben │ │ │ │ │ Anweisung, z. B. ein while in einer do-Anweisung oder ein else in einer if-Anweisung, wie hier: │ │ │ │ │ do { │ │ │ │ │ // etwas Wichtiges │ │ │ │ │ @@ -2427,15 +2427,15 @@ │ │ │ │ │ 5.6 Funktionen │ │ │ │ │ Funktionen sollten kurz und knapp sein und nur einen Zweck erfüllen. Sie sollten auf einen oder zwei │ │ │ │ │ Bildschirme voller Text passen (die ISO/ANSI-Bildschirmgröße beträgt 80x24, wie wir alle wissen) │ │ │ │ │ und nur eine Aufgabe erfüllen, und diese gut. │ │ │ │ │ Die maximale Länge einer Funktion ist umgekehrt proportional zur Komplexität und zum Grad der │ │ │ │ │ Einrückung dieser Funktion. Wenn Sie also eine konzeptionell einfache Funktion haben, die nur aus │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 75 │ │ │ │ │ │ │ │ │ │ einer einzigen langen (aber einfachen) Fallanweisung besteht, bei der Sie viele kleine Dinge für viele │ │ │ │ │ verschiedene Fälle tun müssen, ist es in Ordnung, eine längere Funktion zu haben. │ │ │ │ │ Wenn Sie jedoch eine komplexe Funktion haben und Sie vermuten, dass ein weniger begabter Anfänger nicht einmal versteht, worum es in der Funktion geht, sollten Sie sich um so mehr an die │ │ │ │ │ Höchstgrenzen halten. Verwenden Sie Hilfsfunktionen mit aussagekräftigen Namen (Sie können den │ │ │ │ │ @@ -2471,15 +2471,15 @@ │ │ │ │ │ awk-Aufruf als gawk oder mawk. │ │ │ │ │ │ │ │ │ │ 5.9 C++-Konventionen │ │ │ │ │ C++-Codierungsstile sind wiederholt Anlass für hitzige Debatten (ähnlich wie der Streit zwischen │ │ │ │ │ emacs und vi). Eines ist jedoch sicher: Ein gemeinsamer Stil, der von allen an einem Projekt Beteiligten │ │ │ │ │ verwendet wird, führt zu einheitlichem und lesbarem Code. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 75 │ │ │ │ │ │ │ │ │ │ Namenskonventionen: Konstanten entweder aus #defines oder aus Enumerationen sollten durchgehend in Großbuchstaben geschrieben werden. Begründung: Erleichtert das Erkennen von durch den │ │ │ │ │ Präprozessor substituierten Ausdrücke im Quellcode, z.B. EMC_MESSAGE_TYPE. │ │ │ │ │ Klassen und Namensräume (engl. namespace) sollten den ersten Buchstaben eines jeden Wortes │ │ │ │ │ groß schreiben und Unterstriche vermeiden. Begründung: Identifiziert Klassen, Konstruktoren und │ │ │ │ │ @@ -2515,15 +2515,15 @@ │ │ │ │ │ Implizite Tests auf Null sollten mit Ausnahme von booleschen Variablen nicht verwendet werden, z.B. │ │ │ │ │ if (spindle_speed != 0), NICHT if (spindle_speed). │ │ │ │ │ In einem for()-Konstrukt dürfen nur Anweisungen zur Schleifenkontrolle enthalten sein, z.B. sum = 0; │ │ │ │ │ for (i = 0; i < 10; i++) { sum += value[i]; } ̀+ NICHT: ̀ │ │ │ │ │ for (i=0, sum=0; i<10; i++) sum │ │ │ │ │ += value[i];. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 75 │ │ │ │ │ │ │ │ │ │ Ebenso müssen ausführbare Anweisungen in Konditionalen vermieden werden, z.B. ist if (fd = │ │ │ │ │ open(file_name)) böse. │ │ │ │ │ Komplexe bedingte Anweisungen sollten vermieden werden - führen Sie stattdessen temporäre boolesche Variablen ein. │ │ │ │ │ Klammern sollten in mathematischen Ausdrücken reichlich verwendet werden - Verlassen Sie sich │ │ │ │ │ @@ -2536,15 +2536,15 @@ │ │ │ │ │ Use the PEP 8 style for Python code. │ │ │ │ │ │ │ │ │ │ 5.11 Comp-Codierungs-Standards │ │ │ │ │ Im Deklarationsteil einer .comp-Datei beginnen Sie jede Deklaration mit der ersten Spalte. Fügen Sie │ │ │ │ │ zusätzliche Leerzeilen ein, wenn sie zur Gruppierung verwandter Elemente beitragen. │ │ │ │ │ Im Code-Teil einer .comp-Datei ist der normale C-Codierungsstil zu beachten. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 6 │ │ │ │ │ │ │ │ │ │ Kompilieren (”bauen”) von LinuxCNC │ │ │ │ │ 6.1 Einführung │ │ │ │ │ @@ -2572,15 +2572,15 @@ │ │ │ │ │ Nachdem Sie erfolgreich LinuxCNC gebaut haben, ist es nun Zeit, die Tests durchzuführen: │ │ │ │ │ >$ source ../scripts/rip-environment │ │ │ │ │ >$ runtests │ │ │ │ │ │ │ │ │ │ Auch das kann fehlschlagen! Lesen Sie das gesamte Dokument, insbesondere aber den Abschnitt │ │ │ │ │ Einrichten der Testumgebung. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 75 │ │ │ │ │ │ │ │ │ │ 6.2 Unterstützte Plattformen │ │ │ │ │ Das LinuxCNC-Projekt orientiert sich an moderne Debian-basierte Distributionen, einschließlich Debian, Ubuntu und Mint. │ │ │ │ │ Wir testen kontinuierlich auf den unter http://buildbot.linuxcnc.org aufgeführten Plattformen. │ │ │ │ │ LinuxCNC baut auf die meisten anderen Linux-Distributionen, obwohl die Verwaltung von Abhängigkeiten mehr manuell und weniger automatisch sein wird. Patches zur Verbesserung der Portabilität │ │ │ │ │ @@ -2610,15 +2610,15 @@ │ │ │ │ │ nützlich für die Simulation der Ausführung von G-Code und für die Prüfung der Nicht-Echtzeit-Teile │ │ │ │ │ des Systems (wie die Benutzeroberflächen, und einige Arten von Komponenten und Gerätetreiber). │ │ │ │ │ │ │ │ │ │ 6.3 Build-Modi │ │ │ │ │ Es gibt zwei Möglichkeiten, LinuxCNC zu bauen: den entwicklerfreundlichen ”run in place” Modus │ │ │ │ │ und den benutzerfreundlichen Debian-Packaging-Modus. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 75 │ │ │ │ │ │ │ │ │ │ 6.3.1 Kompilieren (bauen) für eine Ausführung ohne Installation (”run-inplace”) │ │ │ │ │ In einem Run-In-Place-Build werden die LinuxCNC-Programme aus den Quellen kompiliert und dann │ │ │ │ │ direkt aus dem Build-Verzeichnis ausgeführt. Nichts wird außerhalb des Build-Verzeichnisses installiert. │ │ │ │ │ Dies ist schnell und einfach und eignet sich für schnelle Iterationen von Änderungen. │ │ │ │ │ @@ -2648,15 +2648,15 @@ │ │ │ │ │ Der Befehl make akzeptiert zwei nützliche optionale Argumente. │ │ │ │ │ Parallele Kompilierung │ │ │ │ │ make nimmt ein optionales Argument -jN (wobei N eine Zahl ist). Dies ermöglicht die parallele │ │ │ │ │ Kompilierung mit N gleichzeitigen Prozessen, was Ihre Erstellung erheblich beschleunigen kann. │ │ │ │ │ Ein nützlicher Wert für N ist die Anzahl der CPUs in Ihrem Build-System. Sie können die Anzahl │ │ │ │ │ der CPUs ermitteln, indem Sie nproc ausführen. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 75 │ │ │ │ │ │ │ │ │ │ Bauen nur eines bestimmten Ziels │ │ │ │ │ Wenn Sie nur einen bestimmten Teil von LinuxCNC bauen wollen, können Sie das, was Sie bauen │ │ │ │ │ wollen, in der Kommandozeile make nennen. Wenn Sie zum Beispiel an einer Komponente namens │ │ │ │ │ ”froboz” arbeiten, können Sie seine ausführbare Datei zu bauen, indem Sie: │ │ │ │ │ @@ -2696,15 +2696,15 @@ │ │ │ │ │ 6.3.2.1 debian/configure Argumente │ │ │ │ │ │ │ │ │ │ Das Skript debian/configure konfiguriert das Debian-Paket. Es muss ausgeführt werden, bevor dpkg-check │ │ │ │ │ und dpkg-buildpackage ausgeführt werden können. │ │ │ │ │ Es erwartet ein einziges Argument, das die Echtzeit- oder Nicht-Echtzeit-Plattform angibt, für die │ │ │ │ │ gebaut werden soll. Die normalen Werte für dieses Argument sind: │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 75 │ │ │ │ │ │ │ │ │ │ uspace │ │ │ │ │ Konfigurieren Sie das Debian-Paket für Preempt-RT-Echtzeit oder für Nicht-Echtzeit (diese beiden sind kompatibel). │ │ │ │ │ noauto , rtai , xenomai │ │ │ │ │ Normalerweise wird die Liste der RTOS, die uspace Echtzeit unterstützen soll, automatisch erkannt. Wenn Sie möchten, können Sie jedoch eine oder mehrere dieser Optionen nach uspace │ │ │ │ │ @@ -2743,15 +2743,15 @@ │ │ │ │ │ $ dpkg-checkbuilddeps │ │ │ │ │ │ │ │ │ │ Es wird eine Liste von Paketen ausgegeben, die erforderlich sind, um LinuxCNC auf Ihrem System zu │ │ │ │ │ bauen, die aber noch nicht installiert sind. Installieren Sie sie alle mit sudo apt-get install, gefolgt │ │ │ │ │ von den Paketnamen. │ │ │ │ │ Sie können dpkg-checkbuilddeps jederzeit erneut ausführen, um alle fehlenden Pakete aufzulisten. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 55 / 75 │ │ │ │ │ │ │ │ │ │ 6.5 Einrichten der Umgebung │ │ │ │ │ Dieser Abschnitt beschreibt die speziellen Schritte, die benötigt werden, um eine Maschine einzurichten, um die LinuxCNC-Programme auszuführen, einschließlich der Tests. │ │ │ │ │ │ │ │ │ │ 6.5.1 Erhöhen Sie das Limit für den gesperrten Speicher │ │ │ │ │ @@ -2785,15 +2785,15 @@ │ │ │ │ │ hosting service and code sharing website. You can easily (and for no cost) create a fork of our git repo │ │ │ │ │ at github, and use that to track and publish your changes. │ │ │ │ │ Nachdem Sie Ihren eigenen Github-Fork von LinuxCNC erstellt haben, klonen Sie ihn auf Ihren Entwicklungsrechner und fahren Sie wie gewohnt mit den von Ihnen gwünschten Änderungen (gerne │ │ │ │ │ auch ”hacking” genannt) fort. │ │ │ │ │ Wir vom LinuxCNC-Projekt hoffen, dass Sie Ihre Änderungen mit uns teilen werden, damit die Gemeinschaft von Ihrer Arbeit profitieren kann. Github macht dieses Teilen sehr einfach: Nachdem Sie Ihre │ │ │ │ │ Änderungen aufpoliert und in Ihren Github-Fork gepusht haben, schicken Sie uns einen Pull Request. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 7 │ │ │ │ │ │ │ │ │ │ Hinzufügen von Konfigurationsauswahl │ │ │ │ │ elementen │ │ │ │ │ @@ -2803,15 +2803,15 @@ │ │ │ │ │ /usr/share/linuxcnc/aux_examples │ │ │ │ │ │ │ │ │ │ • Laufzeiteinstellungen — der Konfigurationsselektor kann auch Konfigurationsunterverzeichnisse anbieten, die zur Laufzeit mit einer exportierten Umgebungsvariablen (LINUXCNC_AUX_CONFIGS) │ │ │ │ │ angegeben werden. Diese Variable sollte eine Pfadliste von einem oder mehreren Konfigurationsverzeichnissen sein, die durch ein (:) getrennt sind. Typischerweise wird diese Variable in einer │ │ │ │ │ Shell gesetzt, die linuxcnc startet, oder in einem Startskript des Benutzers ~/.profile. Beispiel: │ │ │ │ │ export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 57 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 8 │ │ │ │ │ │ │ │ │ │ Mitwirkung an LinuxCNC │ │ │ │ │ 8.1 Einführung │ │ │ │ │ @@ -2832,15 +2832,15 @@ │ │ │ │ │ All of the LinuxCNC source is maintained in the Git revision control system. │ │ │ │ │ │ │ │ │ │ 8.4.1 LinuxCNC offizielles Git Repository │ │ │ │ │ The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/ │ │ │ │ │ Jeder kann eine schreibgeschützte Kopie des LinuxCNC-Quellbaums über git erhalten: │ │ │ │ │ git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 58 / 75 │ │ │ │ │ │ │ │ │ │ Wenn Sie ein Entwickler mit Schreibrechten (genannt ”push” in Anlehnung an das git-Kommando) │ │ │ │ │ sind, folgen Sie den Anweisungen in github, um ein Repository einzurichten, von dem aus Sie pushen │ │ │ │ │ können. │ │ │ │ │ Beachten Sie, dass der Clone-Befehl das lokale LinuxCNC Repo in ein Verzeichnis namens linuxcnc-dev │ │ │ │ │ @@ -2873,15 +2873,15 @@ │ │ │ │ │ • git tutorial 2: https://www.kernel.org/pub/software/scm/git/docs/gittutorial-2.html │ │ │ │ │ │ │ │ │ │ • Alltägliches Git mit 20 Befehlen oder so: https://www.kernel.org/pub/software/scm/git/docs/giteveryday.ht │ │ │ │ │ • Git-Benutzerhandbuch: https://www.kernel.org/pub/software/scm/git/docs/user-manual.html │ │ │ │ │ For a more thorough documentation of git see the ”Pro Git” book: https://git-scm.com/book │ │ │ │ │ Ein weiteres Online-Tutorial, das empfohlen wurde, ist ”Git for the Lazy”: https://wiki.spheredev.org/index.php/Git_for_the_lazy │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 75 │ │ │ │ │ │ │ │ │ │ 8.5 Überblick über den Prozess │ │ │ │ │ Ein Überblick darüber, wie man Änderungen am Quelltext vornimmt, sieht folgendermaßen aus: │ │ │ │ │ • Kommunizieren Sie mit den Projektentwicklern und lassen Sie uns wissen, woran Sie hacken │ │ │ │ │ • Klonen des Git-Repositories │ │ │ │ │ @@ -2914,15 +2914,15 @@ │ │ │ │ │ Benutzen Sie Ihren richtigen Namen und eine direkt nutzbare E-Mail Adresse. │ │ │ │ │ │ │ │ │ │ 8.7 Effektive Nutzung von Git │ │ │ │ │ 8.7.1 Commit-Inhalte │ │ │ │ │ Halten Sie Ihre Commits klein und auf den Punkt. Jeder Commit sollte eine logische Änderung am │ │ │ │ │ Projektarchiv bewirken. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 60 / 75 │ │ │ │ │ │ │ │ │ │ 8.7.2 Schreiben Sie gute Commit-Nachrichten │ │ │ │ │ Halten Sie die Commit-Meldungen etwa 72 Spalten breit (damit sie in einem Terminalfenster mit │ │ │ │ │ Standardgröße nicht umbrechen, wenn sie von git log angezeigt werden). │ │ │ │ │ Verwenden Sie die erste Zeile als Zusammenfassung der Absicht der Änderung (fast wie die Betreffzeile einer E-Mail). Danach folgt eine Leerzeile und dann eine längere Nachricht, in der die Änderung │ │ │ │ │ @@ -2954,15 +2954,15 @@ │ │ │ │ │ Entwicklern teilen │ │ │ │ │ Mit Git ist es möglich, jede Bearbeitung und jeden Fehlstart als separaten Commit aufzuzeichnen. │ │ │ │ │ Dies ist sehr praktisch, um während der Entwicklung Kontrollpunkte zu setzen, aber oft möchte man │ │ │ │ │ diese Fehlstarts nicht mit anderen teilen. │ │ │ │ │ Git bietet zwei Möglichkeiten, die Historie zu bereinigen, die beide frei durchgeführt werden können, │ │ │ │ │ bevor Sie die Änderung freigeben: │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 61 / 75 │ │ │ │ │ │ │ │ │ │ Mit git commit --amend können Sie zusätzliche Änderungen an dem letzten Commit vornehmen und │ │ │ │ │ optional auch die Commit-Nachricht ändern. Benutzen Sie dies, wenn Sie sofort merken, dass Sie │ │ │ │ │ etwas in der Commit-Nachricht vergessen haben, oder wenn Sie sich in der Commit-Nachricht vertippt │ │ │ │ │ haben. │ │ │ │ │ @@ -3001,30 +3001,30 @@ │ │ │ │ │ Verwenden Sie git pull --rebase anstelle von git pull, um eine schöne lineare Historie zu erhalten. Wenn Sie rebasen, behalten Sie Ihre Arbeit immer als Revisionen, die vor origin/master liegen, so │ │ │ │ │ dass Sie Dinge wie git format-patch ausführen können, um Entwicklungen mit anderen zu teilen, │ │ │ │ │ ohne sie in das zentrale Repository zu pushen. │ │ │ │ │ │ │ │ │ │ 8.8 Übersetzungen │ │ │ │ │ Das LinuxCNC-Projekt verwendet gettext, um die Software in viele Sprachen zu übersetzen. Wir begrüßen Beiträge und Hilfe in diesem Bereich! Das Verbessern und Erweitern der Übersetzungen ist │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 75 │ │ │ │ │ │ │ │ │ │ einfach: Sie müssen keine Programmierkenntnisse haben und Sie müssen keine speziellen Übersetzungsprogramme oder andere Software installieren. │ │ │ │ │ Der einfachste Weg, bei Übersetzungen zu helfen, ist die Nutzung von Weblate, einem Open-SourceWebdienst. Unser Übersetzungsprojekt finden Sie hier: https://hosted.weblate.org/projects/linuxcnc/ │ │ │ │ │ Die Dokumentation zur Verwendung von Weblate finden Sie hier: https://docs.weblate.org/en/latest/user/basic.html │ │ │ │ │ Wenn Webdienste nicht Ihr Ding sind, können Sie auch mit einer Reihe lokaler Gettext-ÜbersetzerApps wie gtranslator, poedit und vielen anderen an Übersetzungen arbeiten. │ │ │ │ │ │ │ │ │ │ 8.9 Andere Möglichkeiten, einen Beitrag zu leisten │ │ │ │ │ Es gibt viele Möglichkeiten, zu LinuxCNC beizutragen, die in diesem Dokument nicht behandelt werden. Diese Wege umfassen: │ │ │ │ │ • Beantwortung von Fragen im Forum, auf Mailinglisten und im IRC │ │ │ │ │ • Melden von Fehlern im Bug-Tracker, im Forum, auf Mailinglisten oder im IRC │ │ │ │ │ • Hilfe beim Testen experimenteller Funktionen │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 9 │ │ │ │ │ │ │ │ │ │ Glossar │ │ │ │ │ Eine Auflistung von Begriffen und deren Bedeutung. Einige Begriffe haben eine allgemeine Bedeutung │ │ │ │ │ @@ -3049,15 +3049,15 @@ │ │ │ │ │ Bewegungen, oder im Falle von Bewegungen, die durch äußere Kräfte verursacht werden (z. B. │ │ │ │ │ Schneidewerkzeug, das am Werkstück zieht), können Schneidewerkzeuge brechen. Dies kann │ │ │ │ │ passieren, weil die Spanbelastung des Fräsers plötzlich ansteigt, wenn das Werkstück durch das │ │ │ │ │ Schneidwerkzeug über die Spielstrecke gezogen wird. │ │ │ │ │ Umkehrspiel-Kompensation │ │ │ │ │ Jede Technik, mit der versucht wird, die Auswirkungen des Spiels zu verringern, ohne es tatsächlich aus dem mechanischen System zu entfernen. Dies geschieht in der Regel durch Software in │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 64 / 75 │ │ │ │ │ │ │ │ │ │ der Steuerung. Auf diese Weise kann die endgültige Ruhestellung des Teils während der Bewegung korrigiert werden, aber Probleme im Zusammenhang mit Richtungsänderungen während │ │ │ │ │ der Bewegung (z. B. Kreisinterpolation) und Bewegungen, die durch äußere Kräfte (z. B. Ziehen │ │ │ │ │ des Schneidwerkzeugs am Werkstück) verursacht werden, sind nicht gelöst. │ │ │ │ │ Kugelumlaufspindel │ │ │ │ │ @@ -3096,15 +3096,15 @@ │ │ │ │ │ Referenzposition anzuzeigen. DROs sind bei handgeführten Werkzeugmaschinen sehr beliebt, da │ │ │ │ │ sie die tatsächliche Werkzeugposition spielfrei messen, selbst wenn die Maschine sehr lockere │ │ │ │ │ Acme-Schrauben hat. Einige DROs verwenden lineare Quadratur-Drehgeber, um Positionsinformationen von der Maschine zu erhalten, und einige verwenden Methoden, die einem Resolver │ │ │ │ │ ähneln, der immer wieder umläuft. │ │ │ │ │ EDM │ │ │ │ │ Die Funkenerosion ist ein Verfahren zum Abtragen von Metall in harten oder schwer zu bearbeitenden oder zähen Metallen oder in Fällen, in denen rotierende Werkzeuge nicht in der Lage │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 75 │ │ │ │ │ │ │ │ │ │ wären, die gewünschte Form auf kostengünstige Weise herzustellen. Ein hervorragendes Beispiel │ │ │ │ │ sind rechteckige Stanzformen, bei denen scharfe Innenecken gewünscht sind. Bei Fräsvorgängen können mit Werkzeugen mit begrenztem Durchmesser keine scharfen Innenecken erzeugt │ │ │ │ │ werden. Eine Drahterodiermaschine kann Innenecken mit einem Radius herstellen, der nur geringfügig größer als der Radius des Drahtes’ ist. Eine Senkerodiermaschine kann Innenecken │ │ │ │ │ mit einem Radius herstellen, der nur geringfügig größer ist als der Radius an der Ecke der Senkelektrode. │ │ │ │ │ @@ -3139,15 +3139,15 @@ │ │ │ │ │ Allgemeines │ │ │ │ │ Eine Art von Schnittstelle zur Kommunikation zwischen einem Computer und einem Menschen (in den meisten Fällen) über die Manipulation von Symbolen und anderen Elementen │ │ │ │ │ (Widgets) auf einem Computerbildschirm. │ │ │ │ │ LinuxCNC │ │ │ │ │ Eine Anwendung, die dem Maschinenbediener einen grafischen Bildschirm präsentiert zur │ │ │ │ │ Bedienung der Maschine und des Steuerungsprogramms. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 75 │ │ │ │ │ │ │ │ │ │ HAL │ │ │ │ │ Hardware-Abstraktionsschicht. Auf der höchsten Ebene ist es einfach eine Möglichkeit, eine Reihe von Bausteinen zu laden und miteinander zu verbinden, um ein komplexes System zusammenzustellen. Viele der Bausteine sind Treiber für Hardwaregeräte. HAL kann jedoch mehr als nur │ │ │ │ │ Hardwaretreiber konfigurieren. │ │ │ │ │ Pos1 │ │ │ │ │ @@ -3183,15 +3183,15 @@ │ │ │ │ │ Manuelle Dateneingabe (engl. Abkürzung für Manual Data Input). Dies ist eine Betriebsart, bei │ │ │ │ │ der das Steuergerät einzelne Zeilen des G-Codes ausführt, wie sie vom Bediener eingegeben │ │ │ │ │ werden. │ │ │ │ │ NIST │ │ │ │ │ das US Institut ”Nationales Institut für Normung und Technologie” (engl. Abkurzung für National Institute of Standards and Technology). Eine Einrichtung des Handelsministeriums der │ │ │ │ │ Vereinigten Staaten. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 75 │ │ │ │ │ │ │ │ │ │ NML │ │ │ │ │ Die Neutral Message Language bietet einen Mechanismus für die Handhabung mehrerer Nachrichtentypen im selben Puffer sowie eine Vereinfachung der Schnittstelle für die Kodierung und │ │ │ │ │ Dekodierung von Puffern im neutralen Format und des Konfigurationsmechanismus. │ │ │ │ │ Versätze │ │ │ │ │ @@ -3230,15 +3230,15 @@ │ │ │ │ │ LinuxCNC verwendet wurde, um Echtzeitleistung zu erreichen. Veraltet, ersetzt durch RTAI. │ │ │ │ │ RTAPI │ │ │ │ │ Eine portable Schnittstelle zu Echtzeitbetriebssystemen einschließlich RTAI und POSIX pthreads │ │ │ │ │ mit Echtzeit-Erweiterungen. │ │ │ │ │ RS-274/NGC │ │ │ │ │ Der formale Name für die Sprache, die von LinuxCNC-Werkstück-Programmen verwendet wird. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 68 / 75 │ │ │ │ │ │ │ │ │ │ Servomotor │ │ │ │ │ Im Allgemeinen ein Motor, der über Fehlererkennung die Korrektur der Position eines Stellglieds │ │ │ │ │ vornimmt. Auch ein Motor, der speziell für eine verbesserte Leistung in solchen Anwendungen │ │ │ │ │ ausgelegt ist. │ │ │ │ │ @@ -3273,15 +3273,15 @@ │ │ │ │ │ Einheiten │ │ │ │ │ Siehe ”Maschineneinheiten”, ”Anzeigeeinheiten”, oder ”Programmeinheiten”. │ │ │ │ │ Ganzzahl ohne Vorzeichen │ │ │ │ │ Eine ganze Zahl, die kein Vorzeichen hat. In HAL wird sie als u32 bezeichnet. (Eine vorzeichenlose 32-Bit-Ganzzahl hat einen nutzbaren Bereich von Null bis 4.294.967.296.) │ │ │ │ │ Weltkoordinaten │ │ │ │ │ Dies ist der absolute Bezugsrahmen. Es gibt die Koordinaten in Bezug auf einen festen Bezugsrahmen an, der an einem Punkt (im Allgemeinen der Basis) der Werkzeugmaschine befestigt ist. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 69 / 75 │ │ │ │ │ │ │ │ │ │ Kapitel 10 │ │ │ │ │ │ │ │ │ │ Juristischer Abschnitt │ │ │ │ │ Die Übersetzungen dieser Datei im Quellbaum sind nicht rechtsverbindlich. │ │ │ │ │ @@ -3310,15 +3310,15 @@ │ │ │ │ │ für freie Software ist. │ │ │ │ │ Wir haben diese Lizenz entworfen, um sie für Handbücher für freie Software zu verwenden, weil freie │ │ │ │ │ Software freie Dokumentation braucht: ein freies Programm sollte mit Handbüchern geliefert werden, │ │ │ │ │ welche die gleichen Freiheiten bieten wie die Software. Aber diese Lizenz ist nicht auf SoftwareHandbücher beschränkt; sie kann für jedes textliche Werk verwendet werden, unabhängig vom Thema │ │ │ │ │ oder ob es als gedrucktes Buch veröffentlicht wird. Wir empfehlen diese Lizenz in erster Linie für │ │ │ │ │ Werke, deren Zweck die Anleitung oder das Nachschlagen ist. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 70 / 75 │ │ │ │ │ │ │ │ │ │ 1. ANWENDBARKEIT UND DEFINITIONEN │ │ │ │ │ Diese Lizenz gilt für jedes Handbuch oder andere Werk, das einen Hinweis des Urheberrechtsinhabers │ │ │ │ │ enthält, der besagt, dass es unter den Bedingungen dieser Lizenz verbreitet werden darf. Das ”Dokument”, unten, bezieht sich auf ein solches Handbuch oder Werk. Jedes Mitglied der Öffentlichkeit ist │ │ │ │ │ ein Lizenznehmer und wird als ”Sie” angesprochen. │ │ │ │ │ @@ -3352,15 +3352,15 @@ │ │ │ │ │ oder nicht kommerziell, vorausgesetzt, dass diese Lizenz, die Urheberrechtsvermerke und der Lizenzvermerk, der besagt, dass diese Lizenz für das Dokument gilt, in allen Kopien wiedergegeben │ │ │ │ │ werden, und dass Sie keine weiteren Bedingungen zu denen dieser Lizenz hinzufügen. Sie dürfen keine technischen Maßnahmen anwenden, um das Lesen oder weitere Kopieren der von Ihnen erstellten │ │ │ │ │ oder verbreiteten Kopien zu behindern oder zu kontrollieren. Sie dürfen jedoch eine Vergütung im │ │ │ │ │ Austausch für Kopien annehmen. Wenn Sie eine ausreichend große Anzahl von Kopien verbreiten, │ │ │ │ │ müssen Sie auch die Bedingungen in Abschnitt 3 einhalten. │ │ │ │ │ Sie können auch Kopien unter den oben genannten Bedingungen ausleihen und öffentlich ausstellen. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 71 / 75 │ │ │ │ │ │ │ │ │ │ 3. MASSENHAFTES KOPIEREN │ │ │ │ │ Wenn Sie mehr als 100 gedruckte Exemplare des Dokuments veröffentlichen und der Lizenzhinweis │ │ │ │ │ des Dokuments Umschlagtexte verlangt, müssen Sie die Exemplare in Umschläge einlegen, die deutlich und lesbar alle diese Umschlagtexte enthalten: Vorderseitentexte auf dem vorderen Umschlag │ │ │ │ │ und Rückseitentexte auf dem hinteren Umschlag. Auf beiden Umschlägen müssen Sie außerdem deutlich und leserlich als Verleger dieser Exemplare ausgewiesen sein. Der vordere Umschlag muss den │ │ │ │ │ @@ -3398,15 +3398,15 @@ │ │ │ │ │ bei. I. Behalten Sie den Abschnitt mit dem Titel Geschichte” und seinen Titel bei und fügen Sie │ │ │ │ │ ihm einen Punkt hinzu, der mindestens den Titel, das Jahr, die neuen Autoren und den Herausgeber der modifizierten Version angibt, wie auf der Titelseite angegeben. Wenn es keinen Abschnitt │ │ │ │ │ mit dem Titel ”Geschichte” in dem Dokument gibt, erstellen Sie einen, der den Titel, das Jahr, │ │ │ │ │ die Autoren und den Herausgeber des Dokuments angibt, wie auf der Titelseite angegeben, und │ │ │ │ │ fügen Sie dann einen Punkt hinzu, der die geänderte Version beschreibt, wie im vorherigen Satz │ │ │ │ │ angegeben. J. Bewahren Sie den im Dokument angegebenen Netzwerkstandort, falls vorhanden, │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 72 / 75 │ │ │ │ │ │ │ │ │ │ für den öffentlichen Zugang zu einer transparenten Kopie des Dokuments auf, und ebenso die im │ │ │ │ │ Dokument angegebenen Netzwerkstandorte für frühere Versionen, auf denen es basierte. Diese │ │ │ │ │ können im Abschnitt ”Historie” abgelegt werden. Sie können eine Netzwerkadresse für ein Werk │ │ │ │ │ weglassen, das mindestens vier Jahre vor dem Dokument selbst veröffentlicht wurde, oder wenn │ │ │ │ │ @@ -3446,15 +3446,15 @@ │ │ │ │ │ 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 │ │ │ │ │ is included in the collection, provided that you follow the rules of this License for verbatim copying of │ │ │ │ │ each of the documents in all other respects. │ │ │ │ │ You may extract a single document from such a collection, and distribute it individually under this │ │ │ │ │ License, provided you insert a copy of this License into the extracted document, and follow this License │ │ │ │ │ in all other respects regarding verbatim copying of that document. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 73 / 75 │ │ │ │ │ │ │ │ │ │ 7. AGGREGATION WITH INDEPENDENT WORKS │ │ │ │ │ A compilation of the Document or its derivatives with other separate and independent documents or │ │ │ │ │ works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified │ │ │ │ │ Version of the Document, provided no compilation copyright is claimed for the compilation. Such a │ │ │ │ │ @@ -3496,15 +3496,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Kapitel 11 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ A │ │ │ │ │ Achse), 63 │ │ │ │ │ Acme-Schraube, 63 │ │ │ │ │ @@ -3578,15 +3578,15 @@ │ │ │ │ │ Spindel, 68 │ │ │ │ │ T │ │ │ │ │ TASK, 68 │ │ │ │ │ Tk, 68 │ │ │ │ │ │ │ │ │ │ 74 / 75 │ │ │ │ │ │ │ │ │ │ - Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Entwickler-Handbuch V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Traverse Bewegung, 68 │ │ │ │ │ U │ │ │ │ │ Umkehrspiel, 63 │ │ │ │ │ Umkehrspiel-Kompensation, 63 │ │ │ │ │ V │ │ │ │ │ Versatz, 67 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_de.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ LinuxCNC │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Inhaltsverzeichnis │ │ │ │ │ │ │ │ │ │ I Erste Schritte & Konfiguration │ │ │ │ │ │ │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ │ │ │ │ │ │ 1.3.3 Testen von LinuxCNC │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 1.3.4 LinuxCNC installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 10 │ │ │ │ │ │ │ │ │ │ @@ -282,15 +282,15 @@ │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ 1.5.6 HAL Änderungen (Aktualisierungen für joints_axes 2.8.x) . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 1.5.6.1 halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ @@ -452,15 +452,15 @@ │ │ │ │ │ │ │ │ │ │ 40 │ │ │ │ │ │ │ │ │ │ 1.5.14.7Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 40 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 1.5.15Änderungen nach 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 40 │ │ │ │ │ │ │ │ │ │ @@ -615,15 +615,15 @@ │ │ │ │ │ │ │ │ │ │ 2.3.1 Trajectory Control │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 58 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2.3.1.1 Trajectory Planning │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ @@ -787,15 +787,15 @@ │ │ │ │ │ │ │ │ │ │ 69 │ │ │ │ │ │ │ │ │ │ 2.5.2.12Werkzeugwechsel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 69 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 2.5.2.13Paletten-Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 69 │ │ │ │ │ │ │ │ │ │ @@ -955,15 +955,15 @@ │ │ │ │ │ │ │ │ │ │ 87 │ │ │ │ │ │ │ │ │ │ 2.7.7.3 Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 87 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ viii │ │ │ │ │ │ │ │ │ │ 2.7.7.4 Beispiel HAL-Code für Hypersensing . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 88 │ │ │ │ │ │ │ │ │ │ @@ -1097,15 +1097,15 @@ │ │ │ │ │ 3.1.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 3.1.2 Startseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 │ │ │ │ │ 3.1.3 Grundlegende Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ 3.1.4 Latenz-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 │ │ │ │ │ 3.1.5 Einrichtung der parallelen Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . 105 │ │ │ │ │ 3.1.6 Einrichtung des zweiten parallelen Ports . . . . . . . . . . . . . . . . . . . . . . . . . . 106 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ix │ │ │ │ │ │ │ │ │ │ 3.1.7 Achsenkonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 │ │ │ │ │ 3.1.7.1 Bestimmen der maximalen Geschwindigkeit . . . . . . . . . . . . . . . . . . . 109 │ │ │ │ │ 3.1.7.2 Bestimmen der maximalen Beschleunigung . . . . . . . . . . . . . . . . . . . 110 │ │ │ │ │ 3.1.8 Spindel-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 │ │ │ │ │ @@ -1155,15 +1155,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . 149 │ │ │ │ │ │ │ │ │ │ 4.1.3.1 Basiszeitraum (engl. base period) . . . . . . . . . . . . . . . . . . . . . . . . . 149 │ │ │ │ │ 4.1.3.2 Schritt-Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 │ │ │ │ │ 4.1.4 Servosysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 │ │ │ │ │ 4.1.4.1 Grundbetrieb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ x │ │ │ │ │ │ │ │ │ │ 4.1.4.2 Proportionaler Ausdruck . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 │ │ │ │ │ 4.1.4.3 Integraler Begriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 │ │ │ │ │ 4.1.4.4 Differenzierender-Anteil (D-Anteil) . . . . . . . . . . . . . . . . . . . . . . . . 153 │ │ │ │ │ 4.1.4.5 Schleifenabstimmung │ │ │ │ │ @@ -1219,15 +1219,15 @@ │ │ │ │ │ │ │ │ │ │ 4.4.2.6 [TASK] Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 │ │ │ │ │ 4.4.2.7 [HAL] Abschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 │ │ │ │ │ 4.4.2.8 [HALUI] Abschnitt │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4.4.2.9 [APPLICATIONS] Abschnitt │ │ │ │ │ 4.4.2.10Abschnitt [TRAJ] │ │ │ │ │ │ │ │ │ │ xi │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 │ │ │ │ │ @@ -1294,15 +1294,15 @@ │ │ │ │ │ │ │ │ │ │ 4.6.5 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 │ │ │ │ │ 4.7 Konfiguration der Drehmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 4.7.1 Standard-Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 4.7.2 INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 4.8 Stepper Schnellstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xii │ │ │ │ │ │ │ │ │ │ 4.8.1 Latenz-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ 4.8.4 Maschineninformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ @@ -1340,15 +1340,15 @@ │ │ │ │ │ 5.1.1.3 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ 5.1.1.4 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ 5.1.1.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ 5.1.2 HAL-Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 │ │ │ │ │ 5.1.3 HAL-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 5.1.4 Timing-Probleme in HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiii │ │ │ │ │ │ │ │ │ │ 5.2 HAL-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 5.2.1 HAL-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ @@ -1410,15 +1410,15 @@ │ │ │ │ │ 5.4.2.3 Die RTAPI-Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 │ │ │ │ │ 5.4.3 Ein einfaches Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 │ │ │ │ │ 5.4.3.1 Laden einer Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 │ │ │ │ │ 5.4.3.2 Untersuchung der HAL │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiv │ │ │ │ │ │ │ │ │ │ 5.4.3.3 Echtzeitcode zum Laufen bringen . . . . . . . . . . . . . . . . . . . . . . . . . 237 │ │ │ │ │ 5.4.3.4 Ändern von Parametern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 │ │ │ │ │ 5.4.3.5 Speichern der HAL-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . 239 │ │ │ │ │ 5.4.3.6 Halrun beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 │ │ │ │ │ @@ -1469,15 +1469,15 @@ │ │ │ │ │ 5.6.2 Spindel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 │ │ │ │ │ 5.6.2.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 │ │ │ │ │ 5.6.3 Achs- und Gelenkpins und Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 │ │ │ │ │ 5.6.4 iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 │ │ │ │ │ 5.6.4.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 │ │ │ │ │ 5.6.5 INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xv │ │ │ │ │ │ │ │ │ │ 5.6.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 │ │ │ │ │ 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 │ │ │ │ │ 5.7.1 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 │ │ │ │ │ 5.7.1.1 Benutzerschnittstellen (Userspace) . . . . . . . . . . . . . . . . . . . . . . . . 272 │ │ │ │ │ @@ -1535,15 +1535,15 @@ │ │ │ │ │ 5.8.5.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 5.8.6 Entprellung (engl. debounce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.8.6.2 Parameter │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvi │ │ │ │ │ │ │ │ │ │ 5.8.6.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.8.7 Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.8.7.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 │ │ │ │ │ 5.8.7.2 Parameter │ │ │ │ │ @@ -1588,15 +1588,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 │ │ │ │ │ │ │ │ │ │ 5.10HALTCL-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 │ │ │ │ │ 5.10.1Kompatibilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 │ │ │ │ │ 5.10.2Haltcl-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvii │ │ │ │ │ │ │ │ │ │ 5.10.3Haltcl INI-Datei-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 │ │ │ │ │ 5.10.4Konvertieren von HAL-Dateien in Tcl-Dateien . . . . . . . . . . . . . . . . . . . . . . . 316 │ │ │ │ │ 5.10.5Haltcl Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 │ │ │ │ │ 5.10.6Haltcl Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 │ │ │ │ │ @@ -1655,15 +1655,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 │ │ │ │ │ │ │ │ │ │ 5.11.6.22 │ │ │ │ │ stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 │ │ │ │ │ 5.11.6.23 │ │ │ │ │ stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xviii │ │ │ │ │ │ │ │ │ │ 5.11.6.24 │ │ │ │ │ set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 │ │ │ │ │ 5.11.7Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 │ │ │ │ │ 5.11.8System-Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 │ │ │ │ │ @@ -1702,15 +1702,15 @@ │ │ │ │ │ 5.13.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 │ │ │ │ │ 5.13.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 5.13.5Sim-Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 5.13.6simulate_probe (Sonde simulieren) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ 5.13.7HAL Histogramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 5.13.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xix │ │ │ │ │ │ │ │ │ │ 6 Hardware-Treiber │ │ │ │ │ │ │ │ │ │ 338 │ │ │ │ │ │ │ │ │ │ @@ -1770,15 +1770,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ │ │ │ │ │ 6.3.6 Status-LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xx │ │ │ │ │ │ │ │ │ │ 6.3.6.4 Booten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 6.3.6.5 Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 6.3.7 RS485 E/A-Erweiterungsmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 6.3.7.1 Relais-Ausgangsmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 │ │ │ │ │ @@ -1835,15 +1835,15 @@ │ │ │ │ │ 6.5.14.2Parameter │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 │ │ │ │ │ │ │ │ │ │ 6.5.14.3Ausgangsparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ 6.5.15Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxi │ │ │ │ │ │ │ │ │ │ 6.5.15.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ 6.5.15.2Parameter │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 │ │ │ │ │ @@ -1903,15 +1903,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 │ │ │ │ │ │ │ │ │ │ 6.8.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ 6.9 Opto22 Treiber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ 6.9.1 Die Adapterkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ 6.9.2 Der Treiber (engl. driver) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxii │ │ │ │ │ │ │ │ │ │ 6.9.3 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 │ │ │ │ │ 6.9.4 Parameter │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 │ │ │ │ │ @@ -1959,15 +1959,15 @@ │ │ │ │ │ 6.13.2Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ 6.13.3Parameter │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 │ │ │ │ │ │ │ │ │ │ 6.13.4Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiii │ │ │ │ │ │ │ │ │ │ 6.14Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 │ │ │ │ │ 6.14.1Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 │ │ │ │ │ 6.14.2Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 │ │ │ │ │ 6.14.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 │ │ │ │ │ @@ -2011,15 +2011,15 @@ │ │ │ │ │ 8.1 ClassicLadder Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 │ │ │ │ │ 8.1.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 │ │ │ │ │ 8.1.2 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 │ │ │ │ │ 8.1.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 │ │ │ │ │ 8.1.4 Grundlegende selbsthaltende Ein-Aus-Schaltung . . . . . . . . . . . . . . . . . . . . . 430 │ │ │ │ │ 8.2 ClassicLadder / Kontaktplan Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . 431 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiv │ │ │ │ │ │ │ │ │ │ 8.2.1 SPS / Kontaktplan Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 │ │ │ │ │ 8.2.2 Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 │ │ │ │ │ 8.2.3 Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 │ │ │ │ │ 8.2.3.1 Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 │ │ │ │ │ @@ -2064,15 +2064,15 @@ │ │ │ │ │ 8.2.12.2Hinzufügen der Kontaktplanlogik . . . . . . . . . . . . . . . . . . . . . . . . . 461 │ │ │ │ │ 8.3 ClassicLadder Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 │ │ │ │ │ 8.3.1 Umlaufender (engl. wrapping) Zähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 │ │ │ │ │ 8.3.2 Extra-Impulse zurückweisen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 │ │ │ │ │ 8.3.3 Externer Notaus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 │ │ │ │ │ 8.3.4 Beispiel für Timer/Bedienung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxv │ │ │ │ │ │ │ │ │ │ 9 Fortgeschrittene Themen │ │ │ │ │ │ │ │ │ │ 473 │ │ │ │ │ │ │ │ │ │ @@ -2116,15 +2116,15 @@ │ │ │ │ │ 9.3.7 Kundenspezifische Kinematik-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 516 │ │ │ │ │ 9.3.8 Abbildungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 │ │ │ │ │ 9.3.9 VERWEISE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 │ │ │ │ │ 9.4 Schaltbare Kinematik (switchkins) │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvi │ │ │ │ │ │ │ │ │ │ 9.4.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 │ │ │ │ │ 9.4.2 Schaltbare Kinematik-Module │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 │ │ │ │ │ @@ -2168,15 +2168,15 @@ │ │ │ │ │ 9.6.3.1 Die REMAP-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 │ │ │ │ │ 9.6.3.2 Useful REMAP option combinations . . . . . . . . . . . . . . . . . . . . . . . . 534 │ │ │ │ │ 9.6.3.3 The argspec parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 │ │ │ │ │ 9.6.4 Aktualisieren einer bestehenden Konfiguration für die Neuzuordnung . . . . . . . . 538 │ │ │ │ │ 9.6.5 Codes für den Wechsel des Remapping-Werkzeugs: T, M6, M61 . . . . . . . . . . . . 538 │ │ │ │ │ 9.6.5.1 Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvii │ │ │ │ │ │ │ │ │ │ 9.6.5.2 Verstehen der Rolle von ”iocontrol” mit neu zugeordneten Werkzeugwechselcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 │ │ │ │ │ 9.6.5.3 Specifying the M6 replacement │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . 540 │ │ │ │ │ @@ -2213,15 +2213,15 @@ │ │ │ │ │ 9.6.12.1NGC procedure call environment during remaps . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 9.6.12.2Nested remapped codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 9.6.12.3Sequence number during remaps . . . . . . . . . . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 9.6.12.4Debugging-Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 9.6.12.5Fehlersuche in eingebettetem Python-Code . . . . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 9.6.13Axis Preview and Remapped code execution . . . . . . . . . . . . . . . . . . . . . . . . 560 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxviii │ │ │ │ │ │ │ │ │ │ 9.6.14Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 │ │ │ │ │ 9.6.14.1Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 560 │ │ │ │ │ 9.6.14.2Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 │ │ │ │ │ 9.6.14.3Derzeit nicht zugewiesene M-Codes: . . . . . . . . . . . . . . . . . . . . . . . 564 │ │ │ │ │ @@ -2264,15 +2264,15 @@ │ │ │ │ │ 9.8 Eigenständiger Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 9.8.1 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 9.8.2 Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 9.9 Offsets der externen Achse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 9.9.1 INI File Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ 9.9.2 HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxix │ │ │ │ │ │ │ │ │ │ 9.9.2.1 Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ 9.9.2.2 Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ 9.9.3 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ 9.9.3.1 Offset-Berechnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 │ │ │ │ │ @@ -2319,15 +2319,15 @@ │ │ │ │ │ │ │ │ │ │ 10.1.3AXIS Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 │ │ │ │ │ 10.1.3.1Menüpunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 │ │ │ │ │ 10.1.3.2Schaltflächen der Symbolleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 │ │ │ │ │ 10.1.3.3Grafischer Anzeigebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 │ │ │ │ │ 10.1.3.4Textanzeigebereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxx │ │ │ │ │ │ │ │ │ │ 10.1.3.5Manuelle Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 │ │ │ │ │ 10.1.3.6MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 │ │ │ │ │ 10.1.3.7Vorschub Neufestsetzung (engl. override) . . . . . . . . . . . . . . . . . . . . 601 │ │ │ │ │ 10.1.3.8Spindeldrehzahl-Anpassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 │ │ │ │ │ @@ -2396,15 +2396,15 @@ │ │ │ │ │ 10.1.14.9 │ │ │ │ │ Neue HAL-Komponente und Pins erstellen . . . . . . . . . . . . . . . . . . . . 617 │ │ │ │ │ 10.1.14.10 │ │ │ │ │ Tabs wechseln mit HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617 │ │ │ │ │ 10.1.14.11 │ │ │ │ │ Hinzufügen einer GOTO Referenzpunkt (engl. Home)-Taste . . . . . . . . . 617 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxi │ │ │ │ │ │ │ │ │ │ 10.1.14.12 │ │ │ │ │ Button zum manuellen Rahmen hinzufügen . . . . . . . . . . . . . . . . . . . 618 │ │ │ │ │ 10.1.14.13 │ │ │ │ │ Interne Variablen lesen │ │ │ │ │ @@ -2456,15 +2456,15 @@ │ │ │ │ │ │ │ │ │ │ 10.2.6.1Werkzeugmess-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 │ │ │ │ │ 10.2.6.2Änderungen an der INI-Datei für Werkzeugmessungen . . . . . . . . . . . . 646 │ │ │ │ │ 10.2.6.3Benötigte Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 │ │ │ │ │ 10.2.6.4Benötigte HAL-Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 │ │ │ │ │ 10.2.7Die Einstellungsseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxii │ │ │ │ │ │ │ │ │ │ 10.2.7.1Erscheinungsbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 │ │ │ │ │ 10.2.7.2Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 │ │ │ │ │ 10.2.7.3Erweiterte Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 │ │ │ │ │ 10.2.8Icon Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 │ │ │ │ │ @@ -2511,15 +2511,15 @@ │ │ │ │ │ 10.4.3Erstellen eines einfachen benutzerdefinierten Bildschirms . . . . . . . . . . . . . . . 675 │ │ │ │ │ 10.4.4Beispiel für eine Handler-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 │ │ │ │ │ 10.4.4.1Hinzufügen von Funktionen für Tastenkombinationen . . . . . . . . . . . . . 678 │ │ │ │ │ 10.4.4.2LinuxCNC-Status Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 │ │ │ │ │ 10.4.4.3Jogging-Tasten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 │ │ │ │ │ 10.4.5Gscreen Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiii │ │ │ │ │ │ │ │ │ │ 10.4.6INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 │ │ │ │ │ 10.4.7Benutzerdialog-Meldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 │ │ │ │ │ 10.4.7.1Kopieren Sie die Datei ”Stock Handler/Glade” zur Bearbeitung . . . . . . . 683 │ │ │ │ │ 10.5QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 │ │ │ │ │ @@ -2581,15 +2581,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 │ │ │ │ │ │ │ │ │ │ 10.5.14.1 │ │ │ │ │ Werkstückhöhe Antasten │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiv │ │ │ │ │ │ │ │ │ │ 10.5.14.2 │ │ │ │ │ Werkzeugmess-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702 │ │ │ │ │ 10.5.14.3 │ │ │ │ │ Änderungen an der INI-Datei für Werkzeugmessungen . . . . . . . . . . . . 702 │ │ │ │ │ @@ -2661,15 +2661,15 @@ │ │ │ │ │ 10.6.5.1NGCGUI in AXIS einbetten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716 │ │ │ │ │ 10.6.5.2PyNGCGUI als GladeVCP-Registerkarte in ein GUI einbetten . . . . . . . . 717 │ │ │ │ │ 10.6.5.3Zusätzliche INI-Datei-Elemente, die für NGCGUI oder PyNGCGUI erforderlich sind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 │ │ │ │ │ 10.6.5.4Truetype Tracer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 │ │ │ │ │ 10.6.5.5INI File Path Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 │ │ │ │ │ 10.6.5.6Zusammenfassung der Details der INI-Datei für die Verwendung von NGCGUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxv │ │ │ │ │ │ │ │ │ │ 10.6.6Dateianforderungen für NGCGUI-Kompatibilität . . . . . . . . . . . . . . . . . . . . . 723 │ │ │ │ │ 10.6.6.1Anforderungen an eine G-code-Unterroutine (.ngc) in einer Datei │ │ │ │ │ │ │ │ │ │ . . . . . 723 │ │ │ │ │ @@ -2719,15 +2719,15 @@ │ │ │ │ │ 10.8.5.6Erstmalige Einrichtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 │ │ │ │ │ 10.8.6Migrating to QtPlasmac From PlasmaC (AXIS or GMOCCAPY) │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . 750 │ │ │ │ │ │ │ │ │ │ 10.8.6.1Quick Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvi │ │ │ │ │ │ │ │ │ │ 10.8.6.2Neue Basis-Konfigurationsmethode . . . . . . . . . . . . . . . . . . . . . . . . 752 │ │ │ │ │ 10.8.7Other QtPlasmaC Setup Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . 753 │ │ │ │ │ 10.8.7.1Lowpass Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 │ │ │ │ │ 10.8.7.2Contact Bounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754 │ │ │ │ │ @@ -2776,15 +2776,15 @@ │ │ │ │ │ 10.8.9.20 │ │ │ │ │ Initial Height Sense (IHS) Skip . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 │ │ │ │ │ 10.8.9.21 │ │ │ │ │ Sondieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792 │ │ │ │ │ 10.8.9.22 │ │ │ │ │ Offset Probing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvii │ │ │ │ │ │ │ │ │ │ 10.8.9.23 │ │ │ │ │ Cut Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 │ │ │ │ │ 10.8.9.24 │ │ │ │ │ Hole Cutting - Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 │ │ │ │ │ @@ -2859,15 +2859,15 @@ │ │ │ │ │ 10.8.15 │ │ │ │ │ QtPlasmaC Fortgeschrittene Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ 10.8.15.1 │ │ │ │ │ Benutzerdefinierte Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ 10.8.15.2 │ │ │ │ │ Peripheral Offsets (Laser, Camera, Scribe, Offset Probe) . . . . . . . . . . . 828 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxviii │ │ │ │ │ │ │ │ │ │ 10.8.15.3 │ │ │ │ │ Keep Z Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 │ │ │ │ │ 10.8.15.4 │ │ │ │ │ Externe HAL-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 │ │ │ │ │ @@ -2925,15 +2925,15 @@ │ │ │ │ │ 10.9.2.1INI-Datei Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 │ │ │ │ │ 10.9.2.2Kommandozeilen-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 │ │ │ │ │ 10.9.2.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 │ │ │ │ │ 10.9.3MDRO Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 │ │ │ │ │ 10.9.4Index-Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 │ │ │ │ │ 10.9.5Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxix │ │ │ │ │ │ │ │ │ │ 11 G-Code Programmierung │ │ │ │ │ │ │ │ │ │ 852 │ │ │ │ │ │ │ │ │ │ @@ -2975,15 +2975,15 @@ │ │ │ │ │ 11.3.4Eigenständige Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872 │ │ │ │ │ 11.4G-Code Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 │ │ │ │ │ 11.4.1Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 │ │ │ │ │ 11.4.2Format einer Zeile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 │ │ │ │ │ 11.4.2.1/: Block löschen (engl. block delete) . . . . . . . . . . . . . . . . . . . . . . . . 874 │ │ │ │ │ 11.4.2.2Zeilennummer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xl │ │ │ │ │ │ │ │ │ │ 11.4.2.3Wort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 │ │ │ │ │ 11.4.2.4Nummern(Nummern) │ │ │ │ │ 11.4.3Parameter │ │ │ │ │ │ │ │ │ │ @@ -3050,15 +3050,15 @@ │ │ │ │ │ 11.5.2G-Code-Kurzübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896 │ │ │ │ │ 11.5.3G0 Eilgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898 │ │ │ │ │ 11.5.3.1Eilgangs-Geschwindigkeitsrate . . . . . . . . . . . . . . . . . . . . . . . . . . . 898 │ │ │ │ │ 11.5.4G1 Lineare Bewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898 │ │ │ │ │ 11.5.5G2, G3 Bogenbewegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899 │ │ │ │ │ 11.5.5.1Bögen durch ihr Zentrum beschrieben . . . . . . . . . . . . . . . . . . . . . . 900 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xli │ │ │ │ │ │ │ │ │ │ 11.5.5.2Beispiele für Center-Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 │ │ │ │ │ 11.5.5.3Bögen im Radiusformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 │ │ │ │ │ 11.5.6G4 Verweilzeit (engl. Dwell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 │ │ │ │ │ 11.5.7G5 Kubischer Spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 │ │ │ │ │ @@ -3136,15 +3136,15 @@ │ │ │ │ │ 11.5.40 │ │ │ │ │ G73 Bohrzyklus mit Spanbrecher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925 │ │ │ │ │ 11.5.41 │ │ │ │ │ G74 Linkshändiger Gewindeschneidzyklus mit Verweilzeit . . . . . . . . . . . . . . . 926 │ │ │ │ │ 11.5.42 │ │ │ │ │ G76 Gewindeschneidzyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlii │ │ │ │ │ │ │ │ │ │ 11.5.43 │ │ │ │ │ G80-G89 Canned Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 │ │ │ │ │ 11.5.43.1 │ │ │ │ │ Geläufige Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930 │ │ │ │ │ @@ -3234,15 +3234,15 @@ │ │ │ │ │ 11.6.6.2Werkzeugwechsler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948 │ │ │ │ │ 11.6.7M7, M8, M9 Kühlmittelsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948 │ │ │ │ │ 11.6.8M19 Spindel Orientierung (engl. orient spindle) . . . . . . . . . . . . . . . . . . . . . 949 │ │ │ │ │ 11.6.9M48, M49 Geschwindigkeits- und Vorschub-Override-Steuerung . . . . . . . . . . . 950 │ │ │ │ │ 11.6.10 │ │ │ │ │ M50 Vorschub-Neufestsetzungs-Steuerung (engl. feed override control) . . . . . . 950 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliii │ │ │ │ │ │ │ │ │ │ 11.6.11 │ │ │ │ │ M51 Spindeldrehzahl-Neufestsetzuung (engl. override) Steuerung . . . . . . . . . . 950 │ │ │ │ │ 11.6.12 │ │ │ │ │ M52 Adaptive Vorschubregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950 │ │ │ │ │ @@ -3307,15 +3307,15 @@ │ │ │ │ │ 11.9.1Beispiele für eine Fräsmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 │ │ │ │ │ 11.9.1.1Fräsen von Spiralbohrungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 │ │ │ │ │ 11.9.1.2Schlitzen (engl. slotting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 │ │ │ │ │ 11.9.1.3Rastersonde (engl. grid probe) . . . . . . . . . . . . . . . . . . . . . . . . . . . 968 │ │ │ │ │ 11.9.1.4Intelligente Sonde (engl. smart probe) . . . . . . . . . . . . . . . . . . . . . . 969 │ │ │ │ │ 11.9.1.5Werkzeuglängen-Messtaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliv │ │ │ │ │ │ │ │ │ │ 11.9.1.6Lochsonde (engl. hole probe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970 │ │ │ │ │ 11.9.1.7Fräserkompensation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970 │ │ │ │ │ 11.9.2Beispiele für Drehmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971 │ │ │ │ │ 11.9.2.1Gewinde-Drehen (engl. threading) . . . . . . . . . . . . . . . . . . . . . . . . . 971 │ │ │ │ │ @@ -3383,15 +3383,15 @@ │ │ │ │ │ 12.1PyVCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 │ │ │ │ │ 12.1.1Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 │ │ │ │ │ 12.1.2Panel Konstruktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 │ │ │ │ │ 12.1.3Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 │ │ │ │ │ 12.1.4AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 │ │ │ │ │ 12.1.4.1Beispiel-Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlv │ │ │ │ │ │ │ │ │ │ 12.1.5Eigenständig (engl. stand alone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982 │ │ │ │ │ 12.1.6Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 │ │ │ │ │ 12.1.6.1Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 │ │ │ │ │ 12.1.6.2Allgemeine Anmerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 │ │ │ │ │ @@ -3436,15 +3436,15 @@ │ │ │ │ │ 12.3.3.3Testen eines Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021 │ │ │ │ │ 12.3.3.4Vorbereiten der HAL-Befehlsdatei . . . . . . . . . . . . . . . . . . . . . . . . . 1021 │ │ │ │ │ 12.3.3.5Einbindung in AXIS, wie PyVCP . . . . . . . . . . . . . . . . . . . . . . . . . . 1021 │ │ │ │ │ 12.3.3.6Einbetten als Registerkarte (engl. tab) . . . . . . . . . . . . . . . . . . . . . . 1022 │ │ │ │ │ 12.3.3.7Integration in Touchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ 12.3.4GladeVCP-Befehlszeilenoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvi │ │ │ │ │ │ │ │ │ │ 12.3.5Den GladeVCP-Startvorgang verstehen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 │ │ │ │ │ 12.3.6HAL Widget-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025 │ │ │ │ │ 12.3.6.1Benennung von Widgets und HAL-Pins . . . . . . . . . . . . . . . . . . . . . . 1026 │ │ │ │ │ 12.3.6.2Python-Attribute und Methoden von HAL Widgets . . . . . . . . . . . . . . . 1026 │ │ │ │ │ @@ -3505,15 +3505,15 @@ │ │ │ │ │ 12.3.7.1VCP Action-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 │ │ │ │ │ 12.3.7.2VCP Action Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 │ │ │ │ │ 12.3.7.3VCP ToggleAction-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ 12.3.7.4Die Action_MDI Toggle und Action_MDI Widgets . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ 12.3.7.5Ein einfaches Beispiel: Ausführen eines MDI-Befehls bei Button-Druck . . 1063 │ │ │ │ │ 12.3.7.6Parameterübergabe mit Action_MDI- und ToggleAction_MDI-Widgets . . . 1063 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvii │ │ │ │ │ │ │ │ │ │ 12.3.7.7Ein fortgeschrittenes Beispiel: Übergabe von Parametern an eine O-WortUnterroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1064 │ │ │ │ │ 12.3.7.8Vorbereitung einer MDI-Aktion und anschließendes Aufräumen . . . . . . . 1064 │ │ │ │ │ 12.3.7.9Verwendung des LinuxCNC Stat-Objekts zum Umgang mit Statusänderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 │ │ │ │ │ 12.3.8GladeVCP-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066 │ │ │ │ │ @@ -3568,15 +3568,15 @@ │ │ │ │ │ 12.5.2Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 │ │ │ │ │ 12.5.2.1QtVCP Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 │ │ │ │ │ 12.5.2.2INI-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089 │ │ │ │ │ 12.5.2.3Qt Designer UI Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 │ │ │ │ │ 12.5.2.4Handler-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 │ │ │ │ │ 12.5.2.5Bibliotheken Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlviii │ │ │ │ │ │ │ │ │ │ 12.5.2.6Themen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 │ │ │ │ │ 12.5.2.7Lokale Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092 │ │ │ │ │ 12.5.2.8Veränderung mitglieferter Bildschirmmasken . . . . . . . . . . . . . . . . . . 1092 │ │ │ │ │ 12.5.3VCP-Paneele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093 │ │ │ │ │ @@ -3614,15 +3614,15 @@ │ │ │ │ │ 12.6.1.3test_button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 │ │ │ │ │ 12.6.1.4test_led . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 │ │ │ │ │ 12.6.1.5test_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 │ │ │ │ │ 12.6.1.6cam_align . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117 │ │ │ │ │ 12.6.1.7sim_panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119 │ │ │ │ │ 12.6.1.8tool_dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlix │ │ │ │ │ │ │ │ │ │ 12.6.2vismach 3D Simulation Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 │ │ │ │ │ 12.6.2.1QtVCP vismach_mill_xyz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 │ │ │ │ │ 12.6.2.2QtVCP vismach_scara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122 │ │ │ │ │ 12.6.2.3QtVCP vismach_millturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123 │ │ │ │ │ @@ -3675,15 +3675,15 @@ │ │ │ │ │ 12.7.2.11 │ │ │ │ │ StatusLabel - Anzeige-Widget für Controller-Variablen-Zustandsbeschriftung1148 │ │ │ │ │ 12.7.2.12 │ │ │ │ │ StatusImageSwitcher - Controller Status Image Switcher . . . . . . . . . . 1150 │ │ │ │ │ 12.7.2.13 │ │ │ │ │ StatusStacked - Mode Status Display Switching Widget . . . . . . . . . . . 1152 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ l │ │ │ │ │ │ │ │ │ │ 12.7.2.14 │ │ │ │ │ JogIncrements - Jog Increments Value Selection Widget . . . . . . . . . . . 1152 │ │ │ │ │ 12.7.2.15 │ │ │ │ │ ScreenOption - General Options Setting widget . . . . . . . . . . . . . . . . 1152 │ │ │ │ │ @@ -3751,15 +3751,15 @@ │ │ │ │ │ 12.7.3.12 │ │ │ │ │ MachineLogDialog - Machine and Debugging Logs Dialog Widget . . . . . 1181 │ │ │ │ │ 12.7.4Other Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 │ │ │ │ │ 12.7.4.1NurbsEditor - NURBS Editing Widget . . . . . . . . . . . . . . . . . . . . . . 1182 │ │ │ │ │ 12.7.4.2JoyPad - 5 button D-pad Widget . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 │ │ │ │ │ 12.7.5BaseClass/Mixin-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ li │ │ │ │ │ │ │ │ │ │ 12.7.5.1IndicatedPushButtons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 │ │ │ │ │ 12.7.6Import-Only Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188 │ │ │ │ │ 12.7.6.1Automatische Höhe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188 │ │ │ │ │ 12.7.6.2G-Code Dienstprogramm │ │ │ │ │ @@ -3799,15 +3799,15 @@ │ │ │ │ │ 12.8.8.1Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199 │ │ │ │ │ 12.8.9Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200 │ │ │ │ │ 12.8.9.1Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200 │ │ │ │ │ 12.8.9.2Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201 │ │ │ │ │ 12.8.10 │ │ │ │ │ Notify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lii │ │ │ │ │ │ │ │ │ │ 12.8.10.1 │ │ │ │ │ Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202 │ │ │ │ │ 12.8.11 │ │ │ │ │ Preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202 │ │ │ │ │ @@ -3870,15 +3870,15 @@ │ │ │ │ │ 12.9.11 │ │ │ │ │ Grundstruktur eines QtVismach-Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . 1216 │ │ │ │ │ 12.9.12 │ │ │ │ │ Builtin Vismach Sample Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217 │ │ │ │ │ 12.10 │ │ │ │ │ QtVCP: Building Custom Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liii │ │ │ │ │ │ │ │ │ │ 12.10.1 │ │ │ │ │ Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218 │ │ │ │ │ 12.10.1.1 │ │ │ │ │ Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1218 │ │ │ │ │ @@ -3959,15 +3959,15 @@ │ │ │ │ │ Builtin Locations │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 │ │ │ │ │ │ │ │ │ │ 12.12.3 │ │ │ │ │ QtVCP vom Startup bis zum Herunterfahren . . . . . . . . . . . . . . . . . . . . . . . 1249 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liv │ │ │ │ │ │ │ │ │ │ 12.12.3.1 │ │ │ │ │ QtVCP Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 │ │ │ │ │ 12.12.3.2 │ │ │ │ │ QtVCP Herunterfahren (engl. shutdown) . . . . . . . . . . . . . . . . . . . . . 1249 │ │ │ │ │ @@ -4026,15 +4026,15 @@ │ │ │ │ │ 13.3.4.6Referenzfahrt (engl. homing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 │ │ │ │ │ 13.3.4.7Schmiermittel (engl. lube) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 │ │ │ │ │ 13.3.4.8Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 │ │ │ │ │ 13.3.4.9Max. Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 │ │ │ │ │ 13.3.4.10 │ │ │ │ │ MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lv │ │ │ │ │ │ │ │ │ │ 13.3.4.11 │ │ │ │ │ Gelenk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1267 │ │ │ │ │ 13.3.4.12 │ │ │ │ │ Gelenk-Joggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1268 │ │ │ │ │ @@ -4089,15 +4089,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . 1291 │ │ │ │ │ │ │ │ │ │ 13.6.3Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292 │ │ │ │ │ 13.6.4Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297 │ │ │ │ │ 13.6.5Bekannte Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lvi │ │ │ │ │ │ │ │ │ │ 13.7Vismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1300 │ │ │ │ │ 13.7.1Start the script │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302 │ │ │ │ │ @@ -4140,23 +4140,23 @@ │ │ │ │ │ 17.1.1Namensänderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321 │ │ │ │ │ 17.1.2Zusätzliche Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1321 │ │ │ │ │ │ │ │ │ │ 18 Index │ │ │ │ │ │ │ │ │ │ 1322 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Teil I │ │ │ │ │ │ │ │ │ │ Erste Schritte & Konfiguration │ │ │ │ │ │ │ │ │ │ 1 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 1 │ │ │ │ │ │ │ │ │ │ Erste Schritte mit LinuxCNC │ │ │ │ │ 1.1 Über LinuxCNC │ │ │ │ │ @@ -4178,15 +4178,15 @@ │ │ │ │ │ Konfiguration für Ihre Maschine │ │ │ │ │ – eine mit Leiterdiagrammen programmierbare Software-SPS │ │ │ │ │ • Es bietet keine Zeichnungsfunktionen (CAD - Computer Aided Design) oder G-Code-Generierung │ │ │ │ │ aus der Zeichnung (CAM - Computer Automated Manufacturing). │ │ │ │ │ • Er kann bis zu 9 Achsen gleichzeitig bewegen und unterstützt eine Vielzahl von Schnittstellen. │ │ │ │ │ • 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 1327 │ │ │ │ │ │ │ │ │ │ • Zu den Funktionen der Bewegungssteuerung gehören: Fräserradius- und Längenkompensation, auf │ │ │ │ │ eine bestimmte Toleranz begrenzte Bahnabweichung, Gewindedrehen, synchronisierte Achsenbewegung, adaptiver Vorschub, Vorschubübersteuerung durch den Bediener und konstante Geschwindigkeitsregelung. │ │ │ │ │ • Unterstützung für nicht-kartesische Bewegungssysteme wird über benutzerdefinierte Kinematikmodule bereitgestellt. Zu den verfügbaren Architekturen gehören Hexapoden (Stewart-Plattformen │ │ │ │ │ und ähnliche Konzepte) und Systeme mit Drehgelenken für die Bewegung wie PUMA- oder SCARARoboter. │ │ │ │ │ @@ -4215,15 +4215,15 @@ │ │ │ │ │ für beide Seiten Zeit spart. │ │ │ │ │ Dateien teilen │ │ │ │ │ Die gängigste Art, Dateien im IRC auszutauschen, besteht darin, die Datei auf einen der folgenden oder einen ähnlichen Dienst hochzuladen und den Link einzufügen: │ │ │ │ │ • For text: https://pastebin.com/, http://pastie.org/, https://gist.github.com/ │ │ │ │ │ • For pictures: https://imagebin.org/, https://imgur.com/, https://bayimg.com/ │ │ │ │ │ • For files: https://filedropper.com/, https://filefactory.com/, https://1fichier.com/ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 1327 │ │ │ │ │ │ │ │ │ │ 1.1.3.2 Mailingliste │ │ │ │ │ Eine Internet-Mailingliste ist eine Möglichkeit, Fragen zu stellen, die jeder auf dieser Liste sehen und │ │ │ │ │ nach Belieben beantworten kann. Auf einer Mailingliste können Sie Ihre Fragen besser stellen als │ │ │ │ │ im IRC, aber die Antworten dauern länger. Kurz gesagt: Sie senden eine Nachricht an die Liste und │ │ │ │ │ @@ -4254,15 +4254,15 @@ │ │ │ │ │ Additional information is on the LinuxCNC Wiki site: Hardware Requirements │ │ │ │ │ LinuxCNC und Debian Linux sollte einigermaßen gut auf einem Computer mit den folgenden minimalen Hardware-Spezifikationen laufen. Diese Zahlen sind nicht das absolute Minimum, sondern wird │ │ │ │ │ eine angemessene Leistung für die meisten Stepper-Systeme geben. │ │ │ │ │ • 700 MHz x86-Prozessor (1,2 GHz x86-Prozessor empfohlen) oder Raspberry Pi 4 oder besser. │ │ │ │ │ • Um LinuxCNC 2.8 und Debian Buster von der LiveCD auszuführen, sollte das System 64-Bit-fähig │ │ │ │ │ sein. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 1327 │ │ │ │ │ │ │ │ │ │ • 512 MB oder mehr RAM │ │ │ │ │ • 8 GB Festplatte │ │ │ │ │ • Grafikkarte mit einer Auflösung von mindestens 1024x768, die nicht die proprietären NVidia- oder │ │ │ │ │ ATI-Treiber verwendet. Moderne Onboard-Grafikchipsätze scheinen im Allgemeinen in Ordnung zu │ │ │ │ │ @@ -4294,15 +4294,15 @@ │ │ │ │ │ systems using the Mesa ethernet-connected hardware driver cards. In general preempt-rt has the │ │ │ │ │ worst latency of the available systems, but there are exceptions. │ │ │ │ │ 1.2.2.2 RTAI mit linuxcnc-Paket │ │ │ │ │ RTAI ist seit vielen Jahren die Hauptstütze der LinuxCNC-Distributionen. Es wird in der Regel die │ │ │ │ │ beste Echtzeit-Leistung in Bezug auf niedrige Latenz, aber möglicherweise schlechtere PeripherieUnterstützung und nicht so viele Bildschirmauflösungen haben. Ein RTAI-Kernel ist im LinuxCNCPaket-Repository verfügbar. Wenn Sie aus dem Live/Install-Image installiert haben, wird der Wechsel │ │ │ │ │ zwischen Kernel und LinuxCNC-Flavour in [Installing-RTAI] beschrieben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 1327 │ │ │ │ │ │ │ │ │ │ 1.2.2.3 Xenomai mit linuxcnc-uspace Paket │ │ │ │ │ Xenomai wird auch unterstützt, aber Sie müssen den Kernel finden oder bauen und LinuxCNC aus │ │ │ │ │ den Quellen kompilieren, um es zu nutzen. │ │ │ │ │ 1.2.2.4 RTAI mit linuxcnc-uspace-Paket │ │ │ │ │ @@ -4332,15 +4332,15 @@ │ │ │ │ │ Festplatte Ihres Computers zu installieren). │ │ │ │ │ Der Prozesses sieht grob umrissen wie folgt aus: │ │ │ │ │ 1. Laden Sie das Live/Installations-Image herunter. │ │ │ │ │ 2. Schreiben Sie das Image auf ein USB-Speichergerät oder eine DVD. │ │ │ │ │ 3. Booten Sie das Live-System, um LinuxCNC zu testen. │ │ │ │ │ 4. Booten Sie das Installationsprogramm, um LinuxCNC zu installieren. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 1327 │ │ │ │ │ │ │ │ │ │ 1.3.1 Das Festplattenabbild (engl. kurz image) herunterladen │ │ │ │ │ In diesem Abschnitt werden einige Methoden zum Herunterladen des Live/Install Image beschrieben. │ │ │ │ │ 1.3.1.1 Normales Herunterladen │ │ │ │ │ Für x86-PCs laden Sie die Live/Installations-CD herunter, indem Sie hier klicken: │ │ │ │ │ @@ -4371,15 +4371,15 @@ │ │ │ │ │ │ │ │ │ │ zsync unter Windows Es gibt eine Windows-Portierung von zsync. Sie funktioniert als Konsolenanwendung. Sie kann heruntergeladen werden von: │ │ │ │ │ https://www.assembla.com/spaces/zsync-windows/documents │ │ │ │ │ 1.3.1.3 Überprüfen des Abbilds │ │ │ │ │ (Dieser Schritt ist nicht erforderlich, wenn Sie zsync verwendet haben) │ │ │ │ │ 1. Überprüfen Sie nach dem Herunterladen die Prüfsumme des Bildes, um die Integrität sicherzustellen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 1327 │ │ │ │ │ │ │ │ │ │ md5sum linuxcnc-2.8.4-buster.iso │ │ │ │ │ │ │ │ │ │ oder │ │ │ │ │ sha256sum linuxcnc-2.8.4-buster.iso │ │ │ │ │ @@ -4414,15 +4414,15 @@ │ │ │ │ │ 2. Stecken Sie den USB-Stick ein und notieren Sie sich den Namen der neuen Festplatte, die angezeigt wird, z. B. /dev/disk5 │ │ │ │ │ 3. trennen Sie den USB-Anschluss. Die oben gefundene Zahl sollte anstelle des N ersetzt werden │ │ │ │ │ diskutil unmountDisk /dev/diskN │ │ │ │ │ │ │ │ │ │ 4. Übertragen Sie die Daten mit dd, wie oben für Linux beschrieben. Beachten Sie, dass der Datenträgername ein ”r” am Anfang hat │ │ │ │ │ sudo dd if=/path-to.iso of=/dev/rdiskN bs=1m │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 1327 │ │ │ │ │ │ │ │ │ │ 5. Bitte beachten Sie, dass dieser Vorgang sehr lange dauern kann und dass Sie während des Vorgangs keine Rückmeldung erhalten. │ │ │ │ │ Schreiben des Abbilds auf eine DVD unter Linux │ │ │ │ │ 1. Legen Sie einen DVD-Rohling in Ihren Brenner ein. Ein Fenster ”CD/DVD Creator” oder ”Disc-Typ │ │ │ │ │ auswählen” wird angezeigt. Schließen Sie es, da wir es nicht verwenden werden. │ │ │ │ │ @@ -4451,15 +4451,15 @@ │ │ │ │ │ Sobald der Computer hochgefahren ist, können Sie LinuxCNC ausprobieren, ohne es zu installieren. │ │ │ │ │ Sie können keine benutzerdefinierten Konfigurationen erstellen oder ändern die meisten Systemeinstellungen in einer Live-Sitzung, aber Sie können (und sollten) den Latenz-Test durchführen. │ │ │ │ │ Um LinuxCNC auszuprobieren: Wählen Sie aus dem Menü Anwendungen/CNC den Eintrag LinuxCNC. │ │ │ │ │ Es öffnet sich ein Dialogfeld, aus dem Sie eine von vielen Beispielkonfigurationen auswählen können. │ │ │ │ │ An diesem Punkt ist es nur wirklich sinnvoll, eine ”sim” Konfiguration zu wählen. Einige der Beispielkonfigurationen enthalten auf dem Bildschirm 3D simulierte Maschinen, suchen Sie nach ”Vismach”, │ │ │ │ │ um diese zu sehen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 1327 │ │ │ │ │ │ │ │ │ │ Um festzustellen, ob Ihr Computer für die Erzeugung von Software-Schrittimpulsen geeignet ist, führen Sie den Latenztest wie folgt aus: here. │ │ │ │ │ Zum Zeitpunkt des Schreibens der Live-Image ist nur mit dem preempt-rt Kernel und einem passenden LinuxCNC verfügbar. Auf mancher Hardware bietet dies möglicherweise keine ausreichende │ │ │ │ │ Latenzzeit. Es gibt eine experimentelle Version, die den RTAI-Echtzeit-Kernel verwendet, der oft eine │ │ │ │ │ bessere Latenzzeit bietet. │ │ │ │ │ @@ -4524,15 +4524,15 @@ │ │ │ │ │ │ │ │ │ │ Maschinensteuerung │ │ │ │ │ und -simulation │ │ │ │ │ Maschinensteuerung │ │ │ │ │ (bekannte │ │ │ │ │ Probleme) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Distribution │ │ │ │ │ │ │ │ │ │ Architektur │ │ │ │ │ │ │ │ │ │ Kernel │ │ │ │ │ │ │ │ │ │ @@ -4628,15 +4628,15 @@ │ │ │ │ │ exit. While running the system appears to be stable. But should nevertheless be considered │ │ │ │ │ experimental at this point. │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ If you decide to use the RTAI 5.2 kernel and see a problem outside the circumstances described │ │ │ │ │ above, then please report it immediately to the project developers. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 1327 │ │ │ │ │ │ │ │ │ │ 1.3.7.1 Installation auf Debian Buster (mit Preempt-RT-Kernel) │ │ │ │ │ │ │ │ │ │ 1. Install Debian Buster (Debian 10), amd64 version. You can download the installer here: https://www.deb │ │ │ │ │ releases/buster/ . │ │ │ │ │ @@ -4677,15 +4677,15 @@ │ │ │ │ │ │ │ │ │ │ 8. Installieren Sie uspace (vor der Installation von uspace kann ein Neustart erforderlich sein) │ │ │ │ │ sudo apt-get install linuxcnc-uspace │ │ │ │ │ │ │ │ │ │ 9. Optional können Sie Mesaflash installieren, wenn Sie eine Mesa-Karte verwenden. │ │ │ │ │ sudo apt install mesaflash │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 1327 │ │ │ │ │ │ │ │ │ │ 1.3.7.2 Installation unter Debian Buster (mit experimentellem RTAI-Kernel) │ │ │ │ │ │ │ │ │ │ Warnung │ │ │ │ │ This kernel has known stability problems. It appears to run reliably once LinuxCNC is loaded. │ │ │ │ │ @@ -4720,15 +4720,15 @@ │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring. │ │ │ │ │ # Alternativer Schlüsselserver: keyserver.ubuntu.com │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ │ │ │ │ │ 4. Fügen Sie das apt-Repository hinzu: │ │ │ │ │ echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee /etc/apt/sources. ←list.d/linuxcnc.list │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 1327 │ │ │ │ │ │ │ │ │ │ 5. Aktualisieren Sie die Paketliste von linuxcnc.org │ │ │ │ │ sudo apt-get update │ │ │ │ │ │ │ │ │ │ 6. den Echtzeit-Kernel installieren │ │ │ │ │ @@ -4767,15 +4767,15 @@ │ │ │ │ │ 8. Starten Sie neu und vergewissern Sie sich, dass Sie mit dem rtai-Kernel booten. Wenn Sie sich │ │ │ │ │ anmelden, stellen Sie sicher, dass der Kernel-Name 3.4-9-rtai-686-pae lautet. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Ausführen │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 1327 │ │ │ │ │ │ │ │ │ │ 1.4 Ausführen von LinuxCNC │ │ │ │ │ 1.4.1 Aufrufen von LinuxCNC │ │ │ │ │ Nach der Installation startet LinuxCNC wie jedes andere Linux-Programm: Führen Sie es aus dem │ │ │ │ │ terminal aus, indem Sie den Befehl linuxcnc eingeben, oder wählen Sie es im Menü Anwendungen -> │ │ │ │ │ @@ -4807,15 +4807,15 @@ │ │ │ │ │ • pyvcp_demo’ - Virtuelle Kontrolltafeln Python │ │ │ │ │ • qtvcp_screens - Mit Qt5 und Python erstellte Anleitungen │ │ │ │ │ • tklinuxcnc - Tastatur- und Maus-Gui (wird nicht mehr gepflegt) │ │ │ │ │ • touchy - Touchscreen-GUI │ │ │ │ │ Ein GUI-Konfigurationsverzeichnis kann Unterverzeichnisse mit Konfigurationen enthalten, die spezielle Situationen oder die Einbettung anderer Anwendungen veranschaulichen. │ │ │ │ │ Die by_interface-Konfigurationen sind um gängige, unterstützte Schnittstellen herum organisiert: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 1327 │ │ │ │ │ │ │ │ │ │ • allgemeine Mechatronik │ │ │ │ │ • mesa │ │ │ │ │ • parport │ │ │ │ │ • pico │ │ │ │ │ @@ -4846,15 +4846,15 @@ │ │ │ │ │ • parport - Anwendungen zum Testen von parport. │ │ │ │ │ • pyvcp - Beispiele für pyvcp-Anwendungen. │ │ │ │ │ • xhc-hb04 – Anwendungen zum Testen eines drahtlosen USB-MPG xhc-hb04 │ │ │ │ │ Anmerkung │ │ │ │ │ Im Verzeichnis Apps werden nur Anwendungen zum Kopieren in das Benutzerverzeichnis angeboten, │ │ │ │ │ die vom Benutzer sinnvollerweise geändert werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 1.1: LinuxCNC-Konfigurationsauswahl │ │ │ │ │ Klicken Sie auf eine der aufgelisteten Konfigurationen, um spezifische Informationen zu ihr anzuzeigen. Doppelklicken Sie auf eine Konfiguration oder klicken Sie auf OK, um die Konfiguration zu │ │ │ │ │ starten. │ │ │ │ │ Wählen Sie ”Desktop-Verknüpfung erstellen” und klicken Sie dann auf ”OK”, um ein Symbol auf dem │ │ │ │ │ @@ -4869,15 +4869,15 @@ │ │ │ │ │ Konfiguration finden Sie im Integrator-Handbuch. │ │ │ │ │ │ │ │ │ │ 1.4.4 Simulator-Konfigurationen │ │ │ │ │ Alle unter Beispielkonfigurationen/Sim aufgeführten Konfigurationen können auf jedem Computer │ │ │ │ │ ausgeführt werden. Es ist keine spezielle Hardware erforderlich und Echtzeitunterstützung ist nicht │ │ │ │ │ notwendig. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 1327 │ │ │ │ │ │ │ │ │ │ Diese Konfigurationen sind nützlich, um einzelne Fähigkeiten oder Optionen zu untersuchen. Die │ │ │ │ │ Sim-Konfigurationen sind nach der in der Demonstration verwendeten grafischen Benutzeroberfläche geordnet. Das Verzeichnis für die Achse enthält die meisten Auswahlmöglichkeiten und Unterverzeichnisse, da es sich um die am häufigsten getestete grafische Benutzeroberfläche handelt. Die │ │ │ │ │ Fähigkeiten, die mit einer bestimmten grafischen Benutzeroberfläche demonstriert werden, sind möglicherweise auch in anderen grafischen Benutzeroberflächen verfügbar. │ │ │ │ │ │ │ │ │ │ @@ -4909,15 +4909,15 @@ │ │ │ │ │ This section describes how to upgrade LinuxCNC from version 2.8 to the new 2.9.0 version. It assumes │ │ │ │ │ that you have an existing 2.8 install that you want to update. │ │ │ │ │ To upgrade LinuxCNC from a version older than 2.8, you have to first upgrade your old install to 2.8, │ │ │ │ │ then follow these instructions to upgrade to the new version. │ │ │ │ │ Wenn Sie keine alte Version von LinuxCNC zu aktualisieren haben, dann sind Sie am besten aus │ │ │ │ │ machen eine frische Installation der neuen Version, wie im Abschnitt LinuxCNC erhalten beschrieben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 1327 │ │ │ │ │ │ │ │ │ │ Darüber hinaus ist es unter Ubuntu Precise oder Debian Wheezy eine Überlegung wert, ein Backup │ │ │ │ │ des ”linuxcnc”-Verzeichnisses auf einem Wechselmedium vorzunehmen und eine Neuinstallaion des │ │ │ │ │ neuesn Betriebsystems und der LinuxCNC version durchzuführen, da diese Versionen des OS 2017 │ │ │ │ │ bzw. 2018 ausliefen. Wenn Sie Ubuntu Lucid nutzen, dann werden Sie dies tun müssen, da Lucid nicht │ │ │ │ │ @@ -4957,15 +4957,15 @@ │ │ │ │ │ ∗ Klicken Sie auf das Menü ”System”, dann auf ”Verwaltung” und dann auf ”Synaptic Package │ │ │ │ │ Manager”. │ │ │ │ │ ∗ Klicken Sie in Synaptic auf das Menü Einstellungen und dann auf Repositories, um das │ │ │ │ │ Fenster Softwarequellen zu öffnen. │ │ │ │ │ • Wählen Sie im Fenster ”Software-Quellen” die Registerkarte ”Andere Software”. │ │ │ │ │ • Löschen oder deaktivieren Sie alle alten linuxcnc.org-Einträge (lassen Sie alle nicht-linuxcnc.orgZeilen unverändert). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 1327 │ │ │ │ │ │ │ │ │ │ • Klicken Sie auf die Schaltfläche ”Hinzufügen” und fügen Sie eine neue apt-Zeile hinzu. Die Zeile │ │ │ │ │ wird auf den verschiedenen Plattformen etwas anders aussehen: │ │ │ │ │ Plattform │ │ │ │ │ Debian Stretch │ │ │ │ │ @@ -4999,15 +4999,15 @@ │ │ │ │ │ Da Ihr Computer nun weiß, wo er die neue Version der Software erhält, müssen wir sie nun installieren. │ │ │ │ │ Der Prozess unterscheidet sich wiederum je nach Plattform. │ │ │ │ │ Debian Wheezy und Stretch verwenden beide den Synaptic Package Manager. │ │ │ │ │ • Öffnen Sie Synaptic gemäß den Anweisungen in Festlegen der apt sources oben. │ │ │ │ │ • Klicken Sie auf die Schaltfläche ”Neu laden”. │ │ │ │ │ • Verwenden Sie die Suchfunktion, um nach linuxcnc zu suchen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 1327 │ │ │ │ │ │ │ │ │ │ • Das Paket heißt „linuxcnc“ für RTAI-Kernel und „linuxcnc-uspace“ für preempt-rt. │ │ │ │ │ • Klicken Sie auf das Kontrollkästchen, um die neuen Pakete linuxcnc und linuxcnc-doc-* für ein Upgrade zu markieren. Der Paketmanager kann eine Reihe zusätzlicher Pakete auswählen, die installiert werden sollen, um die Abhängigkeiten zu erfüllen, die das neue linuxcnc-Paket hat. │ │ │ │ │ • Klicken Sie auf die Schaltfläche ”Anwenden”, und lassen Sie Ihren Computer das neue Paket installieren. Das alte linuxcnc-Paket wird automatisch auf das neue Paket aktualisiert. │ │ │ │ │ 1.5.1.3 Ubuntu Precise │ │ │ │ │ @@ -5040,15 +5040,15 @@ │ │ │ │ │ │ │ │ │ │ 1.5.3 Updating Configuration Files for 2.9 │ │ │ │ │ 1.5.3.1 Stricter handling of pluggable interpreters │ │ │ │ │ If you just run regular G-code and you don’t know what a pluggable interpreter is, then this section │ │ │ │ │ does not affect you. │ │ │ │ │ A seldom-used feature of LinuxCNC is support for pluggable interpreters, controlled by the undocumented [TASK]INTERPRETER INI setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 1327 │ │ │ │ │ │ │ │ │ │ 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. │ │ │ │ │ As of 2.9.0, an incorrect [TASK]INTERPRETER value will cause LinuxCNC to refuse to start up. Fix this │ │ │ │ │ condition by deleting the [TASK]INTERPRETER setting from your INI file, so that LinuxCNC will use │ │ │ │ │ the default G-code interpreter. │ │ │ │ │ @@ -5079,15 +5079,15 @@ │ │ │ │ │ wird das update_ini Skript einen Dialog öffnen, um anzubieten, die Benutzerdateien zu bearbeiten, │ │ │ │ │ um eine aktualisierte Konfiguration zu erstellen. Wenn der Benutzer zustimmt, wird die Konfiguration │ │ │ │ │ aktualisiert. │ │ │ │ │ Wenn die Benutzerkonfiguration beispielsweise bigmill.ini heißt, werden die Datei bigmill.ini und die │ │ │ │ │ mit ihr verbundenen lokalen HAL-Dateien bearbeitet, um die Änderungen an joints_axes zu übernehmen. Alle Dateien der ursprünglichen Konfiguration werden in einem neuen Verzeichnis gespeichert, │ │ │ │ │ das nach der ursprünglichen Konfiguration mit dem Suffix ”.old” benannt ist (im Beispiel bigmill.old). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 1327 │ │ │ │ │ │ │ │ │ │ Das Skript update_ini behandelt alle gängigen Benutzerelemente, die in einfachen Maschinen mit │ │ │ │ │ Identitätskinematik zu finden sind. Weniger gängige Elemente aus komplexeren Maschinen werden │ │ │ │ │ möglicherweise nicht automatisch konvertiert. Beispiele für komplexe Maschinenkonfigurationen sind: │ │ │ │ │ • Portale mit zwei Gelenken für eine Achse │ │ │ │ │ @@ -5115,15 +5115,15 @@ │ │ │ │ │ │ │ │ │ │ 1.5.4.5 Kinematik-Module │ │ │ │ │ Die Kinematikmodule gentrivkins und gantrykins wurden entfernt, da ihre Funktionalität nun im aktualisierten Modul trivkins verfügbar ist. │ │ │ │ │ Das Modul gentrivkins war nur in früheren joints_axes-Zweigen verfügbar. Für die Konvertierung ist │ │ │ │ │ es notwendig, den Namen zu ändern. │ │ │ │ │ Beispiele für HAL-Dateien: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 1327 │ │ │ │ │ │ │ │ │ │ war: loadrt gentrivkins │ │ │ │ │ ist: loadrt trivkins │ │ │ │ │ war: loadrt gentrivkins koordinaten=xyyz │ │ │ │ │ ist: loadrt trivkins koordinaten=xyyz │ │ │ │ │ @@ -5163,15 +5163,15 @@ │ │ │ │ │ JOINTS = 2 │ │ │ │ │ [TRAJ] │ │ │ │ │ COORDINATES = XZ │ │ │ │ │ ... │ │ │ │ │ [AXIS_X] │ │ │ │ │ ... │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 1327 │ │ │ │ │ │ │ │ │ │ [AXIS_Z] │ │ │ │ │ ... │ │ │ │ │ [JOINT_0] │ │ │ │ │ ... │ │ │ │ │ @@ -5217,15 +5217,15 @@ │ │ │ │ │ [KINS]KINEMATICS = lineardeltakins │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 4 │ │ │ │ │ [TRAJ]COORDINATES = XYZA │ │ │ │ │ │ │ │ │ │ Note: Einige universelle Kinematikmodule (wie trivkins) implementieren Identitätskinematik mit Unterstützung für Koordinatenangaben (Achsenbuchstaben). Achsenbuchstaben können weggelassen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 1327 │ │ │ │ │ │ │ │ │ │ werden. Achsenbuchstaben können dupliziert werden. Gelenke werden den Achsenbuchstaben auf │ │ │ │ │ definierte Weise zugewiesen (”$ man trivkins”). │ │ │ │ │ Note: Für das Laden von trivkins-Modulen dürfen Sie keine Leerzeichen um das =-Zeichen oder Buchstaben einfügen: │ │ │ │ │ This: │ │ │ │ │ @@ -5264,15 +5264,15 @@ │ │ │ │ │ [EMCMOT] │ │ │ │ │ EMCMOT = motmod unlock_joints_mask=BITMASK │ │ │ │ │ │ │ │ │ │ Nehmen wir als Beispiel eine Maschine mit einer Trivkins-Kinematik mit den Koordinaten XYZB, wobei B ein Verriegelungsindexer ist. Bei der Trivkins-Kinematik werden den angegebenen Koordinaten fortlaufend Gelenknummern (beginnend mit 0) zugewiesen (die Buchstaben der Achsenkoordinaten können weggelassen werden). In diesem Beispiel: X==>Gelenk0, Y==>Gelenk1, Z==>Gelenk2, │ │ │ │ │ B==>Gelenk3. Die Maske zur Angabe von Gelenk 3 ist 000001000 (binär) == 0x08 (hexadezimal) │ │ │ │ │ Die erforderlichen INI-Datei-Einträge für dieses trivkins XYZB-Beispiel sind: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 1327 │ │ │ │ │ │ │ │ │ │ [KINS] │ │ │ │ │ JOINTS = 4 │ │ │ │ │ KINEMATICS = trivkins coordinates=XYZB │ │ │ │ │ ... │ │ │ │ │ @@ -5310,15 +5310,15 @@ │ │ │ │ │ │ │ │ │ │ Zwischenzeitlich wurden Arbeiten für unterschiedliche lineare und winklige Elemente vorbereitet, │ │ │ │ │ indem diese Elemente umbenannt wurden: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_LINEAR_ACCEL │ │ │ │ │ MAX_LINEAR_ACCEL │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 1327 │ │ │ │ │ │ │ │ │ │ Da diese abgekürzten Namen nicht mit anderen Namenskonventionen und der Implementierung des │ │ │ │ │ update_ini-Skripts übereinstimmten, wurde die vorläufige Namensgebung korrigiert und verwendet: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_LINEAR_ACCELERATION │ │ │ │ │ @@ -5387,15 +5387,15 @@ │ │ │ │ │ (Die Signalnamen jora_1_y_* sind Beispiele, die Namen vor der Konvertierung für joints_axes hängen │ │ │ │ │ von den spezifischen Konfigurationsdetails ab.) │ │ │ │ │ Konfigurationen mit nicht identischer Kinematik und Konfigurationen, die doppelte Achsenbuchstaben │ │ │ │ │ verwenden (z. B. Portale, die mehr als ein Gelenk für eine Achsenkoordinate verwenden), erfordern │ │ │ │ │ eine geeignete unabhängige Steuerlogik, um sowohl die Gelenk- als auch die Teleop-(Welt-)Bewegung │ │ │ │ │ zu unterstützen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.5.2 INI HAL-Pins │ │ │ │ │ HAL-Pins werden für INI-Dateielemente sowohl für Gelenke ([JOINT_N]) als auch für Achsen ([AXIS_L]) │ │ │ │ │ erstellt: │ │ │ │ │ Für N = 0 … [KINS](GELENKE-1): │ │ │ │ │ @@ -5443,15 +5443,15 @@ │ │ │ │ │ Die Anzahl der names=-Instanzen war früher auf 16 begrenzt. Jetzt werden die Instanzen für Echtzeitkomponenten (loadrt) dynamisch zugewiesen, ohne dass eine Begrenzung eingebaut ist. Die Begrenzung auf 16 gilt weiterhin für names=-Elemente für Userspace-Komponenten (loadusr). │ │ │ │ │ Für Komponenten, die ”personality” verwenden, kann die maximale Anzahl nun durch eine Kommandozeilenoption -P|--personalities eingestellt werden. │ │ │ │ │ 1.5.6.2 Parameter zu Pin Änderungen │ │ │ │ │ Die folgenden HAL-Ausgangspins wurden von Parametern in Pins umgewandelt, so dass sie mit Signalen verbunden werden können: │ │ │ │ │ motion.servo.last-period (letzte Periode des Servos in clks) │ │ │ │ │ motion.servo.last-period_ns (Kernel-abhängige Verfügbarkeit) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.7 Schnittstellenänderungen für joint_axes 2.8.x │ │ │ │ │ 1.5.7.1 Python LinuxCNC-Modul │ │ │ │ │ Die jog()-Schnittstelle enthält ein joint-flag zur Angabe von joint (True) oder teleop (False) jogging: │ │ │ │ │ jog(command, joint-flag, axis-or-joint-number, velocity[, distance]) │ │ │ │ │ @@ -5480,15 +5480,15 @@ │ │ │ │ │ Referenzpunkt-Schalter durchgeführt wird und/oder die verschiedenen Referenzfahrt-Methoden von │ │ │ │ │ LinuxCNC zur Verfügung gestellt werden. Man schaltet einfach die Maschine ein, gibt den Befehl │ │ │ │ │ Referenzfahrt-Alle, die Maschine referenziert und wechselt automatisch in den Weltmodus. Siehe │ │ │ │ │ Referenzfahrt-Konfiguration. │ │ │ │ │ Bei Maschinen, die keine Referenzfahrtschalter verwenden, kann es erforderlich sein, vor der Referenzfahrt jedes einzelnen Gelenk manuell in den Gelenkmodus zu schalten. Es ist auch möglich, die │ │ │ │ │ sofortige Referenzfahrt (siehe Referenzfahrt-Dokumente) für Gelenke zu verwenden, die keine Referenzfahrt zu einer festen Position erfordern. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 1327 │ │ │ │ │ │ │ │ │ │ Obwohl ein GUI die Unterscheidung zwischen Gelenken und Achsen für ”IDENTITY”-Kinematikmaschinen │ │ │ │ │ ausblenden kann, ist es in der Regel wichtig, die Referenzfahrt abzuschließen, um Programme auszuführen oder von einer Benutzeroberfläche bereitgestellte Funktionen zu nutzen. │ │ │ │ │ Standardmäßig deklariert sich das trivkins-Modul mit einer IDENTITY-Kinematik. Die Unterscheidung zwischen Gelenk- und Weltoperationen kann bei der Verwendung von trivkins in der grafischen Benutzeroberfläche von AXIS sichtbar gemacht werden, indem der Kinematik-Typ mit ”kinstype=both” auf einen ”Nicht-IDENTITY”-Typ gesetzt wird. Die Einstellung both zeigt an, dass sowohl │ │ │ │ │ Vorwärts- als auch Inverskinematikfunktionen verfügbar sind und dass solche GUI-Bestimmungen, │ │ │ │ │ @@ -5528,15 +5528,15 @@ │ │ │ │ │ Pins ausgewählte Gelenk ist. │ │ │ │ │ Die HAL-Pins für ”ausgewählte” Gelenke wurden umbenannt, damit sie mit verwandten Pins konsistent sind. │ │ │ │ │ war: halui.joint.selected.is_homed │ │ │ │ │ ist: halui.joint.selected.is-homed │ │ │ │ │ war: halui.joint.selected.on-soft-limit │ │ │ │ │ ist: halui.joint.selected.on-soft-min-limit │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.8.3 AXIS GUI │ │ │ │ │ Die AXIS GUI unterstützt weiterhin Identitätskinematik-Konfigurationen. Diese Steuerung verbirgt │ │ │ │ │ die Unterscheidung von Achsen und Gelenken, um die Anzeige und Verwendung von einfachen Maschinen zu vereinfachen. │ │ │ │ │ Einige Maschinen, typischerweise Gantrys, können eine Konfiguration verwenden, bei der einem Achsenbuchstaben mehr als ein Gelenk zugeordnet ist. Dies kann mit dem trivkins Kinematikmodul unter Verwendung wiederholter Koordinatenbuchstaben erfolgen. Beispiel: Eine Maschine, die mit INIEinstellungen wie folgt konfiguriert ist: │ │ │ │ │ @@ -5571,15 +5571,15 @@ │ │ │ │ │ zugewiesen. Für 3-Achsen-Maschinen, XYZA-Maschinen und Drehmaschinen ist die Voreinstellung │ │ │ │ │ die gleiche wie in 2.7. Bei anderen Maschinen werden die 4 Tipptastenpaare den ersten 4 Achsen │ │ │ │ │ zugewiesen, die in der Reihenfolge XYZ ABC UVW existieren. Diese Zuweisungen können durch neue │ │ │ │ │ INI-Datei-Direktiven im Abschnitt [DISPLAY] der INI-Datei gesteuert werden. │ │ │ │ │ Beachten Sie, dass die für das Jogging verwendeten Parameter bei Maschinen mit nicht identischer │ │ │ │ │ Kinematik möglicherweise nicht für beide Modi geeignet sind. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.8.4 TkLinuxCNC │ │ │ │ │ Die TkLinuxCNC-GUI unterstützt sowohl Identitäts- als auch Nicht-Identitätskinematiken, enthält │ │ │ │ │ GUI-Radiobuttons und eine Tastenbindung ($) zum Umschalten zwischen Gelenk- und Teleop-Modus. │ │ │ │ │ Externe Änderungen des Gelenk- oder Teleop-Bewegungsmodus werden erkannt. Jogging wird sowohl │ │ │ │ │ @@ -5608,15 +5608,15 @@ │ │ │ │ │ Integration von joints_axes unterstützt hat. Joggen wird im Teleop-Modus ausgeführt. │ │ │ │ │ 1.5.8.8 shuttlexpress-Treiber umbenannt in shuttle │ │ │ │ │ Der HAL-Treiber für das Contour Designs ShuttleXpress-Gerät wurde von ”shuttlexpress” in einfach │ │ │ │ │ ”shuttle” umbenannt. Wenn Ihre HAL-Dateien eine Variante von ”loadusr shuttlexpress” enthalten, │ │ │ │ │ ersetzen Sie ”shuttlexpress” durch ”shuttle”. │ │ │ │ │ Der ShuttlePRO, eine größere Version des ShuttleXpress, wird nun unterstützt, so dass der alte Treibername nicht mehr korrekt ist. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.8.9 linuxcncrsh │ │ │ │ │ ”Referenzfahrt aller Achsen” (engl. home all) wird jetzt mit dem Unterbefehl ”Set Home” (Referenzpunkt setzen) unterstützt, indem -1 für die Gelenknummer verwendet wird. │ │ │ │ │ Die Jogging-Befehle wurden geändert, um sowohl das gemeinsame (freie) als auch das Teleop-Jogging │ │ │ │ │ (Welt) zu ermöglichen. │ │ │ │ │ @@ -5657,15 +5657,15 @@ │ │ │ │ │ Anmerkung │ │ │ │ │ Die [TUNE]-Zeilengruppe kann zum Angeben von abstimmbaren (engl. tunable) Elementen verwendet werden, die für die anderen unterstützten Zeilengruppen nicht relevant sind. │ │ │ │ │ │ │ │ │ │ 1.5.10 Veraltete GUIs (entfernt für 2.8.x) │ │ │ │ │ Die GUIs mini, keystick und xlinuxcnc wurden in Verbindung mit Updates für joints_axes entfernt. Der │ │ │ │ │ gesamte zugehörige Quellcode, die Beispiele und die Dokumentation sind im Git-Repository verfügbar. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.11 Veraltete GUIs (markiert bei 2.8.x) │ │ │ │ │ Die Benutzeroberfläche linuxcnclcd ist ein Kandidat für die Entfernung. Sollte diese Komponente entfernt werden, bleiben alle zugehörigen Quellcodes, Beispiele und Dokumentationen im Git-Repository │ │ │ │ │ verfügbar. │ │ │ │ │ │ │ │ │ │ @@ -5701,15 +5701,15 @@ │ │ │ │ │ verbunden. Die Homing-Bedingungen werden durch die üblichen [JOINT_n]HOME_* INI-Dateielemente │ │ │ │ │ spezifiziert. │ │ │ │ │ 3. use_hal_manualtoolchange – der Benutzerbereich hal_manualtoolchange Komponente wird geladen und verbunden. │ │ │ │ │ │ │ │ │ │ 4. sim_spindle — die sim_spindle-Komponente wird geladen und mit zusätzlich geladenen HAL-Komponent │ │ │ │ │ verbunden, um die Trägheit einer rotierenden Spindelmasse zu simulieren. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 1327 │ │ │ │ │ │ │ │ │ │ Die Funktionen sind standardmäßig aktiviert, können aber mit folgenden Optionen ausgeschlossen │ │ │ │ │ werden: -no_make_ddts, -no_simulated_home, -no_use_hal_manualtoolchange, -no_sim_spindle. │ │ │ │ │ Um beispielsweise die Erstellung von ddts wegzulassen: │ │ │ │ │ HALFILE = LIB:basic_sim.tcl -no_make_ddts │ │ │ │ │ @@ -5746,15 +5746,15 @@ │ │ │ │ │ Die Sim-Konfiguration Sample Configurations/sim/axis/minimal_xyz.ini demonstriert eine funktionierende xyz-Konfiguration, die LIB:basic_sim.tcl mit einer minimalen Anzahl von INI-Datei-Einstellungen │ │ │ │ │ verwendet. │ │ │ │ │ │ │ │ │ │ 1.5.13 Verschiedene Updates für 2.8.x │ │ │ │ │ Commits zu unveröffentlichten Entwicklungs-Zweigen (engl. branches) können Änderungen vornehmen, von denen Tester und early adopters der unveröffentlichten Software profitieren (oder Fehler │ │ │ │ │ feststellen). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.13.1 Bewegungs-Pins (engl. motion pins) │ │ │ │ │ Neue Pins (weitere Informationen finden Sie in der Motion-Manpage): │ │ │ │ │ --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction --1.5.13.2 HAL-Pins │ │ │ │ │ Namensänderungen: │ │ │ │ │ @@ -5782,15 +5782,15 @@ │ │ │ │ │ Siehe die Dokumentation für die Komponente xhc-whb04b-6. │ │ │ │ │ 1.5.13.6 bldc3_hall │ │ │ │ │ Die Komponente bldc_hall3 wurde entfernt. Die Komponente bldc ist flexibler und besser getestet. │ │ │ │ │ 1.5.13.7 [JOINT_n] HOME_SEQUENCE Startwerte │ │ │ │ │ Die Werte der Startsequenz können nur 0, 1 (oder -1) sein. Weitere Informationen finden Sie in der │ │ │ │ │ Dokumentation zur ”Referenzfahrt-Konfiguration”. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.13.8 [JOINT_n]HOME_SEQUENCE Negative Werte │ │ │ │ │ Gelenke mit einer negativen HOME_SEQUENCE dürfen nicht im Gelenkmodus verfahren werden, um │ │ │ │ │ eine Fehlausrichtung (Racking) in üblichen Gantry-Konfigurationen zu verhindern. Wie immer müssen │ │ │ │ │ Maschinen mit einem beliebigen Kinematik-Typ vor der Aktivierung des konventionellen WeltmodusJogging referenziert werden. │ │ │ │ │ @@ -5819,15 +5819,15 @@ │ │ │ │ │ G43.2 (zusätzliche Offsets) akzeptiert nun transiente Offsets, die sowohl durch Achsenwörter als auch │ │ │ │ │ aus der Werkzeugtabelle hinzugefügt werden sollen. │ │ │ │ │ 1.5.14.4 Konfigurations-Updates │ │ │ │ │ Neu: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET — unterstützt Encoder mit einem Index, der bei │ │ │ │ │ Empfang eines Indeximpulses nach Aktivierung von index_enable nicht zurückgesetzt wird. │ │ │ │ │ axis.py Vorgabe für [DISPLAY]GEOMETRY war: ”XYZBCUVW”,ist: ”XYZABCUVW” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 1327 │ │ │ │ │ │ │ │ │ │ 1.5.14.5 Code-Aktualisierungen │ │ │ │ │ Die Verwaltung der internen Speicherung von Werkzeugdaten und die Kommunikation derselben zwischen EMCIO und TASK wurde überarbeitet, so dass nun Memory-Mapped Storage verwendet wird. │ │ │ │ │ Die frühere Verwendung von nml-Nachrichten für Tooldaten ist veraltet und wird möglicherweise vor │ │ │ │ │ einer neuen Version entfernt. │ │ │ │ │ @@ -5860,15 +5860,15 @@ │ │ │ │ │ 2. xyzbc-trt-kins table-rotary-tilting (ersetzt xyzbc-trt-kins) │ │ │ │ │ 3. genserkins verallgemeinerte Kinematik mit seriellen Gliedern │ │ │ │ │ 4. genhexkins verallgemeinerte parallele Hexapod-Kinematik │ │ │ │ │ 5. Scarakins Scara Roboter │ │ │ │ │ 6. pumakins puma roboter │ │ │ │ │ 7. 5axiskins bridgemill (xyzbcw 6 Achsen) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 1327 │ │ │ │ │ │ │ │ │ │ Die obigen switchkins-Module (und trivkins) unterstützen einen coordinates=-Parameter, der optional │ │ │ │ │ eine geordnete Menge von Koordinatenbuchstaben angibt, die nacheinander Gelenknummern zugeordnet werden (beginnend mit joint0). │ │ │ │ │ Die obigen switchkins-Module enthalten Vorkehrungen für die Kompilierzeitunterstützung eines zusätzlichen benutzerspezifischen Kinematik-Typs, der in der make-Befehlszeile durch die Umgebungsvariable userkfuncs identifiziert wird. (Siehe src/Makefile) │ │ │ │ │ Das Userspace-Testprogramm bin/genserkins wurde in eine einzige Datei (ugenserkins.c) isoliert, da │ │ │ │ │ @@ -5898,15 +5898,15 @@ │ │ │ │ │ 1.5.15 Änderungen nach 2.8.x │ │ │ │ │ Künftige Versionen dieses Dokuments werden die Änderungen berücksichtigen, die nach der letzten │ │ │ │ │ Version 2.8.x am Entwicklungszweig vorgenommen wurden. │ │ │ │ │ │ │ │ │ │ 1.6 Linux FAQ │ │ │ │ │ Dies sind einige grundlegende Linux-Befehle und -Techniken für Linux-Neulinge. Ausführlichere Informationen finden Sie im Internet oder in den Man Pages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 1327 │ │ │ │ │ │ │ │ │ │ 1.6.1 Automatische Anmeldung │ │ │ │ │ 1.6.1.1 Debian │ │ │ │ │ Debian Stretch verwendet standardmäßig die Xfce-Desktopumgebung mit dem lightDM-Displaymanager │ │ │ │ │ lightDM. Um eine automatische Anmeldung bei Debian Stretch zu erhalten: │ │ │ │ │ @@ -5943,15 +5943,15 @@ │ │ │ │ │ mit dmesg. Ubuntu und Linux Mint haben ein Tastaturkürzel Strg + Alt + t. Debian Stretch hat keine │ │ │ │ │ Tastaturkürzel definiert. Sie können aber leicht mit dem Configuration Manager erstellt werden. Die │ │ │ │ │ meisten modernen Dateimanager unterstützen die rechte Taste zum Öffnen eines Terminals. Stellen │ │ │ │ │ Sie nur sicher, dass Sie mit der rechten Maustaste auf einen leeren Bereich oder ein Verzeichnis │ │ │ │ │ und nicht auf einen Dateinamen klicken. Die meisten Betriebssysteme haben das Terminal als einen │ │ │ │ │ Menüpunkt, normalerweise unter Zubehör. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 1327 │ │ │ │ │ │ │ │ │ │ 1.6.4 Man Pages │ │ │ │ │ Eine Manpage (kurz für Manual Page) ist eine Form der Software-Dokumentation, die man normalerweise unter Unix oder Unix-ähnlichen Betriebssystemen wie Linux findet. │ │ │ │ │ Um eine Manpage anzuzeigen, öffnen Sie ein Terminal, um etwas über den Befehl find im Terminalfenster herauszufinden: │ │ │ │ │ man find │ │ │ │ │ @@ -5981,15 +5981,15 @@ │ │ │ │ │ Allgemeinen können Sie die meisten root-Dateien öffnen und anzeigen, aber sie bleiben schreibgeschützt. │ │ │ │ │ 1.6.6.1 Der Weg über die Befehlszeile │ │ │ │ │ Öffnen Sie ein Terminal und geben Sie ein │ │ │ │ │ sudo gedit │ │ │ │ │ │ │ │ │ │ Öffnen Sie die Datei mit Datei > Öffnen > Bearbeiten │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 1327 │ │ │ │ │ │ │ │ │ │ 1.6.6.2 Der GUI-Weg │ │ │ │ │ 1. Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie Startprogramm erstellen │ │ │ │ │ (engl. Create Launcher) │ │ │ │ │ 2. Geben Sie einen Namen ein wie sudo edit │ │ │ │ │ @@ -6024,15 +6024,15 @@ │ │ │ │ │ 1.6.7.3 Auflisten von Dateien in einem Verzeichnis │ │ │ │ │ Um eine Liste aller Dateien und Unterverzeichnisse im Terminalfenster anzuzeigen, geben Sie ein: │ │ │ │ │ dir │ │ │ │ │ │ │ │ │ │ oder │ │ │ │ │ ls │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 1327 │ │ │ │ │ │ │ │ │ │ 1.6.7.4 Suchen einer Datei │ │ │ │ │ Der Befehl find kann für einen neuen Linux-Benutzer etwas verwirrend sein. Die grundlegende Syntax │ │ │ │ │ ist: │ │ │ │ │ find starting-directory Parameter Aktionen │ │ │ │ │ @@ -6071,15 +6071,15 @@ │ │ │ │ │ │ │ │ │ │ Dies kann kurz vor dem Start von LinuxCNC hilfreich sein, so dass es nur eine Aufzeichnung von │ │ │ │ │ Informationen im Zusammenhang mit dem aktuellen Start von LinuxCNC gibt. │ │ │ │ │ Um die eingebaute Parallelport-Adresse zu finden, verwenden Sie grep, um die Informationen aus │ │ │ │ │ dmesg herauszufiltern. │ │ │ │ │ Öffnen Sie nach dem Hochfahren ein Terminal und geben Sie ein: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 1327 │ │ │ │ │ │ │ │ │ │ dmesg|grep parport │ │ │ │ │ │ │ │ │ │ 1.6.8 Bequemlichkeiten │ │ │ │ │ 1.6.8.1 Terminal Launcher │ │ │ │ │ @@ -6106,15 +6106,15 @@ │ │ │ │ │ ../f1 bezieht sich auf eine Datei f1 im übergeordneten Verzeichnis │ │ │ │ │ ../../f2 bezieht sich auf eine Datei f2 im übergeordneten Verzeichnis des │ │ │ │ │ übergeordneten Verzeichnisses │ │ │ │ │ ../../../f3 usw. │ │ │ │ │ │ │ │ │ │ ←- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 2 │ │ │ │ │ │ │ │ │ │ Allgemeine Benutzerinformationen │ │ │ │ │ 2.1 User Foreword │ │ │ │ │ @@ -6144,15 +6144,15 @@ │ │ │ │ │ by making them connectable. We achieve connectability by setting up standard interfaces to sets of │ │ │ │ │ modules and following those standards. │ │ │ │ │ The Separation rule requires that we make distinct parts that do little things. By separating functions │ │ │ │ │ debugging is much easier and replacement modules can be dropped into the system and comparisons │ │ │ │ │ easily made. │ │ │ │ │ 1 Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 1327 │ │ │ │ │ │ │ │ │ │ What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make │ │ │ │ │ choices about how you will use the system. Many of these choices are a part of machine integration, │ │ │ │ │ but many also affect the way you will use your machine. As you read you will find many places where │ │ │ │ │ you will need to make comparisons. Eventually you will make choices, ”I’ll use this interface rather │ │ │ │ │ @@ -6187,15 +6187,15 @@ │ │ │ │ │ • the high level controllers that coordinate the generation and execution of motion control of the CNC │ │ │ │ │ machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO) │ │ │ │ │ and the task executor (EMCTASK). │ │ │ │ │ The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper │ │ │ │ │ motors might look like: │ │ │ │ │ 2 Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.1: Simple LinuxCNC Controlled Machine │ │ │ │ │ A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives, │ │ │ │ │ each of which has one stepper motor connected to it. Each drive receives two independent signals; │ │ │ │ │ one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise │ │ │ │ │ @@ -6217,15 +6217,15 @@ │ │ │ │ │ The INI file contains all the basic hardware information regarding the operation of the CNC mill, │ │ │ │ │ such as the number of steps each stepper motor must turn to complete one full revolution, the │ │ │ │ │ maximum rate at which each stepper may operate at, the limits of travel of each axis or the │ │ │ │ │ configuration and behaviour of limit switches on each axis. │ │ │ │ │ – My_CNC.hal │ │ │ │ │ This HAL file contains information that tells LinuxCNC how to link the internal virtual signals to │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 1327 │ │ │ │ │ │ │ │ │ │ physical connections beyond the computer. For example, specifying pin 4 on the parallel port to │ │ │ │ │ send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis motor │ │ │ │ │ when a limit switch is triggered on parallel port pin 13. │ │ │ │ │ – custom.HAL │ │ │ │ │ @@ -6252,77 +6252,77 @@ │ │ │ │ │ 2.2.3 Graphical User Interfaces │ │ │ │ │ A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with. │ │ │ │ │ LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain │ │ │ │ │ fields contained in the INI file: │ │ │ │ │ ACHSE │ │ │ │ │ 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: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 2.2: AXIS, the standard keyboard GUI interface │ │ │ │ │ │ │ │ │ │ Touchy │ │ │ │ │ Touchy, a touch screens GUI: │ │ │ │ │ │ │ │ │ │ 50 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 2.3: Touchy, a touch screen GUI │ │ │ │ │ │ │ │ │ │ Gscreen │ │ │ │ │ Gscreen, a user-configurable touch screen GUI: │ │ │ │ │ │ │ │ │ │ 51 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.4: Gscreen, a configurable base touch screen GUI │ │ │ │ │ │ │ │ │ │ GMOCCAPY │ │ │ │ │ GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally │ │ │ │ │ well in applications where a keyboard and mouse are the preferred methods of controlling the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.5: GMOCCAPY, a touch screen GUI based on Gscreen │ │ │ │ │ │ │ │ │ │ NGCGUI │ │ │ │ │ NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be │ │ │ │ │ run as a standalone program or embedded into another GUI as a series of tabs. The following │ │ │ │ │ screenshot shows NGCGUI embedded into AXIS: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.6: NGCGUI, a graphical interface integrated into AXIS │ │ │ │ │ │ │ │ │ │ TkLinuxCNC │ │ │ │ │ TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 2.7: TkLinuxCNC graphical interface │ │ │ │ │ │ │ │ │ │ Xemc │ │ │ │ │ an X-Window program │ │ │ │ │ halui │ │ │ │ │ A HAL based user interface allowing to control LinuxCNC using buttons and switches │ │ │ │ │ linuxcncrsh │ │ │ │ │ A telnet based user interface allowing to send commands from remote computers. │ │ │ │ │ │ │ │ │ │ 55 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 1327 │ │ │ │ │ │ │ │ │ │ 2.2.4 Virtuelle Schalttafeln │ │ │ │ │ As mentioned above, many of LinuxCNC’s GUIs may be customized by the user. This may be done to │ │ │ │ │ add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased │ │ │ │ │ flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC: │ │ │ │ │ @@ -6336,15 +6336,15 @@ │ │ │ │ │ GladeVCP │ │ │ │ │ GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs. │ │ │ │ │ GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL │ │ │ │ │ virtual signals, but can include other external interfaces outside LinuxCNC such as window or │ │ │ │ │ network events. GladeVCP is also more flexible in how it may be configured to appear on the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 57 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.9: GladeVCP Example Embedded Into AXIS GUI │ │ │ │ │ │ │ │ │ │ 2.2.5 Sprachen │ │ │ │ │ LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including │ │ │ │ │ @@ -6366,15 +6366,15 @@ │ │ │ │ │ │ │ │ │ │ 2.2.7 Modes of Operation │ │ │ │ │ When LinuxCNC is running, there are three different major modes used for inputting commands. │ │ │ │ │ These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes │ │ │ │ │ a big difference in the way that the LinuxCNC control behaves. There are specific things that can be │ │ │ │ │ done in one mode that cannot be done in another. An operator can home an axis in manual mode but │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 58 / 1327 │ │ │ │ │ │ │ │ │ │ not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes │ │ │ │ │ in the auto mode but not in manual or MDI. │ │ │ │ │ In manual mode, each command is entered separately. In human terms a manual command might be │ │ │ │ │ ”turn on coolant” or ”jog X at 25 inches per minute”. These are roughly equivalent to flipping a switch │ │ │ │ │ @@ -6411,15 +6411,15 @@ │ │ │ │ │ to be made. In the INI file the specified machine constraints, such as maximum axis velocity and axis │ │ │ │ │ acceleration, must be obeyed by the trajectory planner. │ │ │ │ │ Für weitere Informationen zu den Trajektorie-Panner INI-Optionen siehe den Abschnitt zu Trajektorien im INI Kapitel. │ │ │ │ │ 2.3.1.2 Bahnverfolgung │ │ │ │ │ A less straightforward problem is that of path following. When you program a corner in G-code, the │ │ │ │ │ trajectory planner can do several things, all of which are right in some cases: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 1327 │ │ │ │ │ │ │ │ │ │ • Es kann genau an den Koordinaten der Kurve bis zum Stillstand abbremsen und dann in die neue │ │ │ │ │ Richtung beschleunigen. │ │ │ │ │ • Sie kann auch das so genannte Blending durchführen, d. h. die Vorschubgeschwindigkeit beim │ │ │ │ │ Durchfahren der Ecke aufrechterhalten, so dass die Ecke abgerundet werden muss, um die Maschinenvorgaben einzuhalten. │ │ │ │ │ @@ -6460,15 +6460,15 @@ │ │ │ │ │ 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 │ │ │ │ │ the end point of the move is as large as it needs to be to keep up the best contouring feed. │ │ │ │ │ Naive CAM Detector │ │ │ │ │ Successive G1 moves that involve only the XYZ axes that deviate less than Q- from a straight │ │ │ │ │ line are merged into a single straight line. This merged movement replaces the individual G1 │ │ │ │ │ movements for the purposes of blending with tolerance. Between successive movements, the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 60 / 1327 │ │ │ │ │ │ │ │ │ │ controlled point will pass no more than P- from the actual endpoints of the movements. The │ │ │ │ │ controlled point will touch at least one point on each movement. The machine will 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). On G2/3 moves in the G17 (XY) plane, │ │ │ │ │ @@ -6504,15 +6504,15 @@ │ │ │ │ │ For a feed rate of 0.5 inch per second, the critical distance is 52 /100 = 25/100 = 0.025 inches. │ │ │ │ │ │ │ │ │ │ 2.3.2 G-code │ │ │ │ │ 2.3.2.1 Defaults │ │ │ │ │ When LinuxCNC first starts up many G- and M-codes are loaded by default. The current active G- and │ │ │ │ │ M-codes can be viewed on the MDI tab in the Active G-Codes: window in the AXIS interface. These │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 61 / 1327 │ │ │ │ │ │ │ │ │ │ G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each │ │ │ │ │ one does before running LinuxCNC. The defaults can be changed when running a G-Code file and │ │ │ │ │ left in a different state than when you started your LinuxCNC session. The best practice is to set the │ │ │ │ │ defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have │ │ │ │ │ @@ -6547,15 +6547,15 @@ │ │ │ │ │ Coordinate Systems is in the Coordinate System section of this manual. │ │ │ │ │ 2.3.5.1 G53 Machine Coordinate │ │ │ │ │ When you home LinuxCNC you set the G53 Machine Coordinate System to 0 for each axis homed. │ │ │ │ │ No other coordinate systems or tool offsets are changed by homing. │ │ │ │ │ The only time you move in the G53 machine coordinate system is when you program a G53 on the │ │ │ │ │ same line as a move. Normally you are in the G54 coordinate system. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 1327 │ │ │ │ │ │ │ │ │ │ 2.3.5.2 G54-59.3 User Coordinates │ │ │ │ │ Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate │ │ │ │ │ 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 │ │ │ │ │ Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number │ │ │ │ │ @@ -6582,22 +6582,22 @@ │ │ │ │ │ in relation to the material. │ │ │ │ │ Note also the position of the limit switches and the direction of activation of their cams. Several │ │ │ │ │ combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed │ │ │ │ │ limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will │ │ │ │ │ be reversed, +X will be on the right of the table and -X on the left. This inversion does not change │ │ │ │ │ anything from the point of view of the direction of movement of the tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.11: Typical Mill Configuration │ │ │ │ │ The following diagram shows a typical lathe showing direction of travel of the tool and limit switches. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 2.12: Typical Lathe Configuration │ │ │ │ │ │ │ │ │ │ 2.4 Starting LinuxCNC │ │ │ │ │ 2.4.1 Running LinuxCNC │ │ │ │ │ LinuxCNC is started with the script file linuxcnc. │ │ │ │ │ linuxcnc [options] [] │ │ │ │ │ @@ -6612,15 +6612,15 @@ │ │ │ │ │ $ linuxcnc [Options] path/to/your_ini_file │ │ │ │ │ Name the configuration INI file using its path │ │ │ │ │ $ linuxcnc [Options] -l │ │ │ │ │ Use the previously used configuration inifile │ │ │ │ │ │ │ │ │ │ 64 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 1327 │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ -d: Turn on ”debug” mode │ │ │ │ │ -v: Turn on ”verbose” mode │ │ │ │ │ -k: Continue in the presence of errors in HAL files │ │ │ │ │ @@ -6642,15 +6642,15 @@ │ │ │ │ │ or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to │ │ │ │ │ those pins. See the [HAL] section of the INI configuration for more information. │ │ │ │ │ 2.4.1.1 Configuration Selector │ │ │ │ │ If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and │ │ │ │ │ save a sample configuration. Once a sample configuration has been saved it can be modified to suit │ │ │ │ │ your application. The configuration files are saved in linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5 CNC-Maschinenübersicht │ │ │ │ │ In diesem Abschnitt wird kurz beschrieben, wie eine CNC-Maschine von der Eingangs- und Ausgangsseite des Interpreters aus betrachtet wird. │ │ │ │ │ │ │ │ │ │ 2.5.1 Mechanische Bestandteile │ │ │ │ │ @@ -6678,15 +6678,15 @@ │ │ │ │ │ RotationsachsenAchsenrotierend rotierend Die A-, B- und C-Achsen erzeugen eine Winkelbewegung (Rotation). Normalerweise dreht sich A um eine Linie parallel zu X, B um eine Linie parallel zu │ │ │ │ │ Y und C um eine Linie parallel zu Z. │ │ │ │ │ 2.5.1.2 Spindel │ │ │ │ │ Eine CNC-Maschine hat in der Regel eine Spindel, die ein Zerspanungswerkzeug, einen Messtaster │ │ │ │ │ oder im Falle einer Drehmaschine das Material hält. Die Spindel kann, muss aber nicht von der CNCSoftware gesteuert werden. LinuxCNC bietet Unterstützung für bis zu 8 Spindeln, die individuell │ │ │ │ │ gesteuert werden können und gleichzeitig mit unterschiedlichen Geschwindigkeiten und in unterschiedlichen Richtungen laufen können. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5.1.3 Kühlmittel │ │ │ │ │ Flutkühlmittel und Nebelkühlmittel können unabhängig voneinander eingeschaltet werden. Die Sprache RS274/NGC schaltet sie gemeinsam aus, siehe Abschnitt M7 M8 M9. │ │ │ │ │ 2.5.1.4 Vorschub- und Drehzahl-Override │ │ │ │ │ Eine CNC-Maschine kann über separate Vorschub- und Geschwindigkeitssteuerungen verfügen, mit │ │ │ │ │ @@ -6714,15 +6714,15 @@ │ │ │ │ │ Wenn das Werkstück an einem Drehtisch befestigt ist, der sich um eine Drehachse dreht, wird eine │ │ │ │ │ Drehung gegen den Uhrzeigersinn aus Sicht des Werkstücks dadurch erreicht, dass der Drehtisch in │ │ │ │ │ eine Richtung gedreht wird, die (bei den meisten gängigen Maschinenkonfigurationen) aus Sicht einer │ │ │ │ │ neben der Maschine stehenden Person im Uhrzeigersinn aussieht. Fußnote:[Wenn die Anforderung │ │ │ │ │ der Parallelität verletzt wird, muss der Systemersteller angeben, wie zwischen Uhrzeigersinn und │ │ │ │ │ Gegenuhrzeigersinn unterschieden wird.] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 68 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5.2.3 Gesteuerter Punkt (engl. controlled point) │ │ │ │ │ Der gesteuerte Punkt ist der Punkt, dessen Position und Bewegungsgeschwindigkeit gesteuert werden. Wenn der Werkzeuglängenversatz Null ist (der Standardwert), ist dies ein Punkt auf der Spindelachse (häufig als Messpunkt bezeichnet), der sich in einem festen Abstand hinter dem Ende der │ │ │ │ │ Spindel befindet, normalerweise nahe dem Ende eines passenden Werkzeughalters in die Spindel. │ │ │ │ │ Die Position des gesteuerten Punkts kann entlang der Spindelachse verschoben werden, indem ein │ │ │ │ │ @@ -6753,15 +6753,15 @@ │ │ │ │ │ und stoppen. │ │ │ │ │ 3. Andernfalls handelt es sich um eine reine Drehbewegung, und das F-Wort wird in Dreheinheiten │ │ │ │ │ im pseudokartesischen ABC-System angegeben. │ │ │ │ │ 2.5.2.6 Kühlung │ │ │ │ │ Die Kühlung von Flut- oder Tröpfchen kann separat aktiviert werden. RS274 / NGC-Sprache stoppt │ │ │ │ │ sie zusammen. Siehe Abschnitt über Kühlsteuerung. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 69 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5.2.7 Verweilen (engl. dwell) │ │ │ │ │ Ein Bearbeitungszentrum kann angewiesen werden, für eine bestimmte Zeit zu verweilen (d.h. alle │ │ │ │ │ Achsen unbeweglich zu halten). Die häufigste Anwendung des Verweilens ist das Brechen und Entfernen von Spänen, so dass sich die Spindel während des Verweilens normalerweise dreht. Unabhängig │ │ │ │ │ vom Bahnsteuerungsmodus (siehe Abschnitt Path Control) hält die Maschine genau am Ende der vorhergehenden programmierten Bewegung an, so als ob sie im exakten Bahnmodus wäre. │ │ │ │ │ @@ -6786,15 +6786,15 @@ │ │ │ │ │ 2.5.2.11 Werkzeug-Karussell │ │ │ │ │ Jedem Steckplatz im Werkzeugkarussell wird ein oder null Werkzeuge zugewiesen. │ │ │ │ │ 2.5.2.12 Werkzeugwechsel │ │ │ │ │ Einem Bearbeitungszentrum kann der Befehl zum Werkzeugwechsel gegeben werden. │ │ │ │ │ 2.5.2.13 Paletten-Shuttle │ │ │ │ │ Die beiden Paletten können auf Befehl ausgetauscht werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 70 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5.2.14 Geschwindigkeits-Neufestsetzung (engl. override) │ │ │ │ │ Die Tasten für die Geschwindigkeits-Neufestsetzung können aktiviert (sie funktionieren normal) oder │ │ │ │ │ deaktiviert werden (sie haben keine Wirkung mehr). In der Sprache RS274/NGC gibt es einen Befehl, │ │ │ │ │ der alle Tasten aktiviert, und einen anderen, der sie deaktiviert. Siehe Sperrung und Aktivierung │ │ │ │ │ @@ -6828,15 +6828,15 @@ │ │ │ │ │ Wenn der Schalter für das Löschen von Blöcken aktiviert ist, werden G-Code-Zeilen, die mit einem │ │ │ │ │ Schrägstrich (dem Blocklöschzeichen) beginnen, nicht interpretiert. Wenn der Schalter ausgeschaltet │ │ │ │ │ ist, werden solche Zeilen interpretiert. Normalerweise sollte der Blocklöschschalter vor dem Start des │ │ │ │ │ NGC-Programms gesetzt werden. │ │ │ │ │ 2.5.3.3 Optionaler Programm-Stopp-Schalter │ │ │ │ │ Wenn dieser Schalter eingeschaltet ist und ein M1-Code auftritt, wird die Programmausführung angehalten. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 71 / 1327 │ │ │ │ │ │ │ │ │ │ 2.5.4 Werkzeugtabelle │ │ │ │ │ Für die Verwendung des Interpreters ist eine Werkzeugtabelle erforderlich. In dieser Datei ist festgelegt, welche Werkzeuge sich in welchen Werkzeugwechslerplätzen befinden und welche Größe und │ │ │ │ │ welchen Typ die einzelnen Werkzeuge haben. Der Name der Werkzeugtabelle wird in der INI-Datei │ │ │ │ │ definiert: │ │ │ │ │ @@ -6874,15 +6874,15 @@ │ │ │ │ │ Gleitkommazahl mit doppelter Genauigkeit dargestellt, aber ein Dezimalpunkt ist in der Datei nicht │ │ │ │ │ erforderlich. Alle in der folgenden Tabelle aufgeführten Parameter sind obligatorisch und müssen in │ │ │ │ │ jeder Parameterdatei enthalten sein, mit der Ausnahme, dass jeder Parameter, der einen Drehachsenwert für eine nicht verwendete Achse darstellt, weggelassen werden kann. Wenn ein erforderlicher │ │ │ │ │ Parameter fehlt, wird ein Fehler gemeldet. Eine Parameterdatei kann jeden anderen Parameter enthalten, solange seine Nummer im Bereich von 1 bis 5400 liegt. Die Parameternummern müssen in │ │ │ │ │ aufsteigender Reihenfolge angeordnet sein. Ist dies nicht der Fall, wird ein Fehler gemeldet. Jeder │ │ │ │ │ Parameter, der in der vom Interpreter gelesenen Datei enthalten ist, wird auch in die Datei aufgenommen, die er beim Beenden des Programms schreibt. Die Originaldatei wird beim Schreiben der │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 72 / 1327 │ │ │ │ │ │ │ │ │ │ neuen Datei als Sicherungsdatei gespeichert. Kommentare werden beim Schreiben der Datei nicht │ │ │ │ │ beibehalten. │ │ │ │ │ Tabelle 2.1: Parameter-Dateiformat │ │ │ │ │ ParameterNummer │ │ │ │ │ @@ -6927,15 +6927,15 @@ │ │ │ │ │ │ │ │ │ │ 2.6.2 Drehmaschinen-Werkzeugtabelle │ │ │ │ │ Die ”Werkzeugtabelle” ist eine Textdatei, die Informationen über jedes Werkzeug enthält. Die Datei │ │ │ │ │ befindet sich in demselben Verzeichnis wie Ihre Konfiguration und heißt standardmäßig ”tool.tbl”. Die │ │ │ │ │ Werkzeuge können sich in einem Werkzeugwechsler befinden oder einfach manuell geändert werden. │ │ │ │ │ Die Datei kann mit einem Texteditor bearbeitet oder mit G10 L1,L10,L11 aktualisiert werden. Es gibt │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 73 / 1327 │ │ │ │ │ │ │ │ │ │ auch einen eingebauten Werkzeugtabelleneditor in dem AXIS GUI. Die maximale Anzahl der Einträge │ │ │ │ │ in der Werkzeugtabelle beträgt 56. Die maximale Anzahl von Werkzeugen und Plätzen beträgt 99999. │ │ │ │ │ Frühere Versionen von LinuxCNC hatten zwei verschiedene Werkzeugtabellenformate für Fräse n und │ │ │ │ │ Drehmaschinen, aber seit der Version 2.4.x wird ein Werkzeugtabellenformat für alle Maschinen verwendet. Ignorieren Sie einfach die Teile der Werkzeugtabelle, die nicht zu Ihrer Maschine gehören │ │ │ │ │ @@ -6946,15 +6946,15 @@ │ │ │ │ │ Ausrichtung und Informationen zu VORDERWINKEL und HINTERWINKEL. │ │ │ │ │ FRONTANGLE und BACKANGLE sind im Uhrzeigersinn beginnend an einer Linie parallel zu Z+. │ │ │ │ │ │ │ │ │ │ Abbildung 2.13: Ausrichtung des Drehwerkzeugs │ │ │ │ │ In AXIS zeigen die folgenden Abbildungen, wie die Werkzeugpositionen aussehen, wie sie in der Werkzeugtabelle eingegeben wurden. │ │ │ │ │ Werkzeugpositionen 1, 2, 3 & 4Werkzeugpositionen 123 & 4 23 & 4 3 & 4 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 74 / 1327 │ │ │ │ │ │ │ │ │ │ Werkzeugpositionen 5, 6, 7 & 8Werkzeugpositionen 567 & 8 67 & 8 7 & 8 │ │ │ │ │ │ │ │ │ │ 2.6.4 Werkzeug Touch Off │ │ │ │ │ Wenn Sie in AXIS im Drehmaschinenmodus arbeiten, können Sie die X- und Z-Werte in der Werkzeugtabelle mit Hilfe des Touch Off-Fensters einstellen. Wenn Sie über einen Werkzeugrevolver verfügen, │ │ │ │ │ @@ -6969,15 +6969,15 @@ │ │ │ │ │ Werkzeug nach oben, bis es die Farbe gerade berührt, und stellen Sie seinen X-Offset auf den Durchmesser des Teils ein, das Sie mit dem Werkzeug-Anlegefenster verwenden. Stellen Sie sicher, dass │ │ │ │ │ bei allen Werkzeugen in den Eckquadranten der Nasenradius in der Werkzeugtabelle richtig eingestellt ist, damit der Kontrollpunkt korrekt ist. Beim Ansetzen des Werkzeugs wird automatisch ein G43 │ │ │ │ │ hinzugefügt, so dass das aktuelle Werkzeug den aktuellen Versatz darstellt. │ │ │ │ │ Eine typische Sitzung könnte so aussehen: │ │ │ │ │ 1. Jede Achse referenzieren (engl. home), wenn sie nicht ausgerichtet ist. │ │ │ │ │ 2. Setzen Sie das aktuelle Werkzeug mit Tn M6 G43, wobei n die Werkzeugnummer ist. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 75 / 1327 │ │ │ │ │ │ │ │ │ │ 3. Wählen Sie die X-Achse im Fenster ”Manuelle Steuerung”. │ │ │ │ │ 4. Bringen Sie das X in eine bekannte Position oder machen Sie einen Testschnitt und messen Sie │ │ │ │ │ den Durchmesser. │ │ │ │ │ 5. Wählen Sie Touch Off und wählen Sie Werkzeugtabelle, dann geben Sie die Position oder den │ │ │ │ │ @@ -7011,15 +7011,15 @@ │ │ │ │ │ geben Sie 0.125 Zoll in das Absetzfenster ein. │ │ │ │ │ 2.6.4.3 Der Z-Maschinenversatz (engl. machine offset) │ │ │ │ │ Sobald für alle Werkzeuge die Z-Korrektur in die Werkzeugtabelle eingegeben wurde, können Sie mit │ │ │ │ │ jedem Werkzeug die Maschinen-Korrektur über das Maschinenkoordinatensystem einstellen. │ │ │ │ │ Eine typische Sitzung könnte so aussehen: │ │ │ │ │ 1. Jede Achse referenzieren (engl. home), wenn sie nicht ausgerichtet ist. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 76 / 1327 │ │ │ │ │ │ │ │ │ │ 2. Stellen Sie das aktuelle Werkzeug mit Tn M6 ein, wobei n die Werkzeugnummer ist. │ │ │ │ │ 3. Geben Sie ein G43 aus, damit die aktuelle Werkzeugkorrektur wirksam wird. │ │ │ │ │ 4. Führen Sie das Werkzeug an das Werkstück heran und stellen Sie den Z-Offset der Maschine ein. │ │ │ │ │ Wenn Sie vergessen, den G43 für das aktuelle Werkzeug einzustellen, wenn Sie den Versatz des Maschinenkoordinatensystems festlegen, erhalten Sie nicht das, was Sie erwarten, da der Werkzeugversatz zum aktuellen Versatz addiert wird, wenn das Werkzeug in Ihrem Programm verwendet wird. │ │ │ │ │ @@ -7050,15 +7050,15 @@ │ │ │ │ │ befindet, sind die X-Werte positiv. │ │ │ │ │ Bei einigen Drehbänken mit Werkzeugen auf der Rückseite zeigt die imaginäre Y-Achse (+) nach oben. │ │ │ │ │ G2/G3 Die Richtungen der Bogen basieren auf der Achse, um die sie sich drehen. Bei Drehbänken ist │ │ │ │ │ das die imaginäre Y-Achse. Wenn die Y-Achse (+) auf den Boden zeigt, müssen Sie nach oben schauen, │ │ │ │ │ damit der Bogen in die richtige Richtung zu gehen scheint. Wenn Sie also von oben schauen, kehren │ │ │ │ │ Sie die G2/G3 um, damit der Bogen in die richtige Richtung zu gehen scheint. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 77 / 1327 │ │ │ │ │ │ │ │ │ │ 2.6.6.2 Radius & Durchmesser-Modus │ │ │ │ │ Bei der Berechnung von Bögen im Radiusmodus müssen Sie sich nur die Drehrichtung merken, die │ │ │ │ │ für Ihre Drehmaschine gilt. │ │ │ │ │ Bei der Berechnung von Bögen im Durchmessermodus ist X der Durchmesser und der X-Offset (I) der │ │ │ │ │ @@ -7077,43 +7077,43 @@ │ │ │ │ │ │ │ │ │ │ 2.6.7.2 Schneidwinkel ohne Fräser Compensation │ │ │ │ │ Stellen Sie sich nun vor, wir programmieren eine Rampe ohne Schneidwerkzeugs-Kompensation (engl. │ │ │ │ │ kurz cutter comp). Die programmierte Bahn ist in der folgenden Abbildung dargestellt. Wie Sie in │ │ │ │ │ der Abbildung sehen können, sind die programmierte Bahn und die gewünschte Schnittbahn ein und │ │ │ │ │ dasselbe, solange wir uns nur in X- oder Z-Richtung bewegen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 78 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.15: Rampe Eingang │ │ │ │ │ Wenn sich nun der Kontrollpunkt entlang der programmierten Bahn bewegt, folgt die tatsächliche │ │ │ │ │ Fräskante nicht der programmierten Bahn, wie in der folgenden Abbildung dargestellt. Es gibt zwei │ │ │ │ │ Möglichkeiten, dieses Problem zu lösen: die Kompensation der Schneide und die Anpassung der programmierten Bahn, um den Spitzenradius zu kompensieren. │ │ │ │ │ │ │ │ │ │ Abbildung 2.16: Rampenpfad │ │ │ │ │ Im obigen Beispiel ist es eine einfache Übung, die programmierte Bahn so anzupassen, dass sie die │ │ │ │ │ gewünschte tatsächliche Bahn ergibt, indem die programmierte Bahn für die Rampe um den Radius │ │ │ │ │ der Werkzeugspitze nach links verschoben wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 79 / 1327 │ │ │ │ │ │ │ │ │ │ 2.6.7.3 Schneiden eines Radius │ │ │ │ │ In diesem Beispiel werden wir untersuchen, was bei einem Radiusschnitt ohne Fräserabgleich passiert. In der nächsten Abbildung sehen Sie, wie das Werkzeug den Außendurchmesser des Werkstücks │ │ │ │ │ dreht. Der Kontrollpunkt des Werkzeugs folgt der programmierten Bahn und das Werkzeug berührt │ │ │ │ │ den Außendurchmesser des Werkstücks. │ │ │ │ │ │ │ │ │ │ Abbildung 2.17: Turning Cut │ │ │ │ │ In der nächsten Abbildung sehen Sie, wie sich das Werkzeug dem Ende des Teils nähert, der Kontrollpunkt folgt immer noch der Bahn, aber die Werkzeugspitze hat das Teil verlassen und schneidet Luft. │ │ │ │ │ Sie können auch sehen, dass das Teil, obwohl ein Radius programmiert wurde, tatsächlich mit einer │ │ │ │ │ quadratischen Ecke endet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 80 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.18: Radiusschnitt │ │ │ │ │ Jetzt können Sie sehen, wie der Kontrollpunkt dem programmierten Radius folgt, die Werkzeugspitze │ │ │ │ │ hat das Teil verlassen und schneidet nun Luft. │ │ │ │ │ │ │ │ │ │ @@ -7121,15 +7121,15 @@ │ │ │ │ │ In der letzten Abbildung sehen Sie, dass die Werkzeugspitze den Schnitt an der Fläche beendet, aber │ │ │ │ │ eine quadratische Ecke anstelle eines schönen Radius hinterlässt. Beachten Sie auch, dass, wenn Sie │ │ │ │ │ den Schnitt so programmieren, dass er in der Mitte des Teils endet, eine kleine Menge Material vom │ │ │ │ │ Radius des Werkzeugs übrig bleibt. Um einen Flächenschnitt in der Mitte des Werkstücks zu beenden, │ │ │ │ │ müssen Sie das Werkzeug so programmieren, dass es über die Mitte hinausgeht und mindestens den │ │ │ │ │ Radius der Werkzeugspitze hat. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 81 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 2.20: Face Cut │ │ │ │ │ │ │ │ │ │ 2.6.7.4 Verwenden der Fräser (engl. cutter)-Kompensation │ │ │ │ │ • Bei der Verwendung von Cutter Comp auf einer Drehmaschine stellen Sie sich den Radius der Werkzeugspitze als den Radius eines runden Fräsers vor. │ │ │ │ │ @@ -7149,15 +7149,15 @@ │ │ │ │ │ width. │ │ │ │ │ Plasma torches are similar in design to the automotive spark plug. They consist of negative and positive │ │ │ │ │ sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap between the │ │ │ │ │ negatively charged electrode and the positively charged tip. Once the pilot arc has ionised the plasma │ │ │ │ │ gas, the superheated column of gas flows through the small orifice in the torch tip, which is focused │ │ │ │ │ on the metal to be cut. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 82 / 1327 │ │ │ │ │ │ │ │ │ │ In a Plasma Cutting Torch a cool gas enters Zone B, where a pilot arc between the electrode and the │ │ │ │ │ torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the │ │ │ │ │ column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the │ │ │ │ │ torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown │ │ │ │ │ @@ -7173,15 +7173,15 @@ │ │ │ │ │ works well, and starts quickly. But, because of the high frequency high voltage power that is required │ │ │ │ │ generated to ionise the air, it has some drawbacks. It often interferes with surrounding electronic │ │ │ │ │ circuitry, and can even damage components. Also a special circuit is needed to create a Pilot arc. │ │ │ │ │ Inexpensive models will not have a pilot arc, and require touching the consumable to the work to │ │ │ │ │ start. Employing a HF circuit also can increase maintenance issues, as there are usually adjustable │ │ │ │ │ points that must be cleaned and readjusted from time to time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 83 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.2.2 Blowback Start │ │ │ │ │ This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the │ │ │ │ │ torch head back to create a small spark between the inside surface of the consumable, ionising the │ │ │ │ │ air, and creating a small plasma flame. This also creates a ”pilot arc” that provides a plasma flame │ │ │ │ │ @@ -7205,15 +7205,15 @@ │ │ │ │ │ A plasma Arc is oval in shape and the cutting height needs to be controlled to minimise bevelled edges. │ │ │ │ │ If the torch is too high or too low then the edges can become excessively bevelled. It is also critical │ │ │ │ │ that the torch is held perpendicular to the surface. │ │ │ │ │ • Der Abstand zwischen Brenner und Werkstück kann die Kantenfase beeinflussen. │ │ │ │ │ │ │ │ │ │ • Negativer Schnittwinkel: Brenner zu niedrig, Abstand zwischen Brenner und Werkstück vergrößern. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 84 / 1327 │ │ │ │ │ │ │ │ │ │ • Positiver Schnittwinkel: Brenner zu hoch, Abstand zwischen Brenner und Werkstück verringern. │ │ │ │ │ Anmerkung │ │ │ │ │ Eine leichte Abweichung der Schnittwinkel kann normal sein, solange sie innerhalb der Toleranz liegt. │ │ │ │ │ │ │ │ │ │ @@ -7237,15 +7237,15 @@ │ │ │ │ │ trouble shooting trying to work around the lack of what many would consider to be mandatory features. │ │ │ │ │ Obwohl Regeln dazu da sind, gebrochen zu werden, wenn man die Gründe für die Anwendung der │ │ │ │ │ Regel versteht, sind wir der Meinung, dass ein neuer Hersteller von Plasmatischen eine Maschine mit │ │ │ │ │ den folgenden Merkmalen auswählen sollte: │ │ │ │ │ • Blowback-Start zur Minimierung der elektrischen Geräusche und zur Vereinfachung der Konstruktion │ │ │ │ │ • Ein Maschinenbrenner wird bevorzugt, aber viele haben auch Handbrenner verwendet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 85 / 1327 │ │ │ │ │ │ │ │ │ │ • Eine vollständig abgeschirmte Brennerspitze, die eine ohmsche Abtastung ermöglicht │ │ │ │ │ Wenn Sie über das nötige Budget verfügen, können Sie sich für ein höherwertiges Gerät entscheiden: │ │ │ │ │ • Vom Hersteller bereitgestellte Schneidtabellen, die viele Stunden und Materialabfälle bei der Kalibrierung der Schneidparameter sparen │ │ │ │ │ • Dry Contacts for ArcOK │ │ │ │ │ @@ -7282,15 +7282,15 @@ │ │ │ │ │ people around the globe have been involved in testing and improving the feature set. QtPlasmaC is │ │ │ │ │ unique in that its design goal was to support all THCs including the simple bit bang ones through │ │ │ │ │ to sophisticated torch voltage control, if the voltage is made available to LinuxCNC via a THCAD or │ │ │ │ │ some other voltage sensor. What’s more, QtPlasmaC is designed to be a stand alone system that does │ │ │ │ │ not need any additional G-code subroutines and allows the user to define their own cut charts that │ │ │ │ │ are stored in the system and accessible by a drop-down. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 86 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.6 Lichtbogen-OK-Signal │ │ │ │ │ Plasma machines that have a CNC interface contain a set of dry contacts (eg a relay) that close when a │ │ │ │ │ valid arc is established and each side of these contacts are bought out onto pins on the CNC interface. │ │ │ │ │ A plasma table builder should connect one side of these pins to field power and the other to an input │ │ │ │ │ @@ -7330,15 +7330,15 @@ │ │ │ │ │ Commands. If this is the case, then after initial probing, it is recommended to probe away from the │ │ │ │ │ surface until the probe signal is lost at a slower speed. Also, ensure the switch hysteresis is accounted │ │ │ │ │ for. │ │ │ │ │ Unabhängig von der verwendeten Sondierungsmethode wird dringend empfohlen, einen gleitenden │ │ │ │ │ Schalter einzubauen, damit ein Ausweich- oder Sekundärsignal vorhanden ist, um eine Beschädigung │ │ │ │ │ des Brenners bei einem Absturz zu vermeiden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 87 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.7.2 Ohmsche Erfassung │ │ │ │ │ Ohmic sensing relies on contact between the torch and the material acting as a switch to activate an │ │ │ │ │ electrical signal that is sensed by the CNC controller. Provided the material is clean, this can be a │ │ │ │ │ much more accurate method of sensing the material than a float switch which can cause deflection │ │ │ │ │ @@ -7369,15 +7369,15 @@ │ │ │ │ │ Encoder B and Encoder Index pins. This firmware is available for download for the 7I76E and 7I96 │ │ │ │ │ boards from the Mesa web site on the product pages. │ │ │ │ │ The THCAD is sensitive enough to see the ramp up in circuit voltage as contact pressure increases. │ │ │ │ │ The ohmic.comp component included in LinuxCNC can monitor the sensing voltage and set a voltage │ │ │ │ │ threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower “break circuit” threshold can be set to build in strong switch hysteresis. This minimises │ │ │ │ │ false triggering. In our testing, we found the material sensing using this method was more sensitive │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 88 / 1327 │ │ │ │ │ │ │ │ │ │ and robust as well as being simpler to implement the wiring. One further advantage is using software │ │ │ │ │ outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage │ │ │ │ │ is helpful to get the most out of the Mesa 7I96 which has limited I/O pins. │ │ │ │ │ Der folgende Schaltplan zeigt, wie eine Hypersensing-Schaltung realisiert werden kann. │ │ │ │ │ @@ -7389,15 +7389,15 @@ │ │ │ │ │ The following HAL code can be pasted into your QtPlasmaC’s custom.hal to enable Ohmic sensing on │ │ │ │ │ Encoder 2 of a 7I76E. Install the correct bit file and connect the THCAD to IDX+ and IDX-. Be sure to │ │ │ │ │ change the calibration settings to agree with your THCAD-5. │ │ │ │ │ # --- Load the Component --loadrt ohmic names=ohmicsense │ │ │ │ │ addf ohmicsense servo-thread │ │ │ │ │ # --- 7I76E ENCODER 2 SETUP FOR OHMIC SENSING--setp hm2_7i76e.0.encoder.02.scale -1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 89 / 1327 │ │ │ │ │ │ │ │ │ │ setp hm2_7i76e.0.encoder.02.counter-mode 1 │ │ │ │ │ # --- Configure the component --setp ohmicsense.thcad-0-volt-freq │ │ │ │ │ 140200 │ │ │ │ │ setp ohmicsense.thcad-max-volt-freq 988300 │ │ │ │ │ @@ -7432,15 +7432,15 @@ │ │ │ │ │ Liegt die Schnittgeschwindigkeit am Ende dieser Verzögerung noch nicht in der Nähe der gewünschten Schnittgeschwindigkeit, sollte die Steuerung warten, bis diese erreicht ist, bevor sie die THC │ │ │ │ │ aktiviert. │ │ │ │ │ │ │ │ │ │ 2.7.9 Abtastung der Brennerspannung │ │ │ │ │ Anstatt sich auf die Schneidtabellen des Herstellers zu verlassen, um die gewünschte Brennerspannung einzustellen, ziehen es viele Leute (einschließlich des Verfassers) vor, die Spannung zu messen, │ │ │ │ │ wenn die THC aktiviert ist, und diese als Sollwert zu verwenden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 90 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.10 Brenner Behinderung (engl. torch breakaway) │ │ │ │ │ It is recommended that a mechanism is provided to allow the torch to “break away” or fall off in the │ │ │ │ │ case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow │ │ │ │ │ the CNC controller to detect if this has occurred and pause the running program. Usually a break │ │ │ │ │ @@ -7470,15 +7470,15 @@ │ │ │ │ │ So it should be possible to compare the moving average with the dv/dt and halt THC operation once │ │ │ │ │ the dv/dt exceeds the normal range expected due to warpage. More work needs to be done in this │ │ │ │ │ area to come up with a working solution in LinuxCNC. │ │ │ │ │ │ │ │ │ │ 2.7.13 Hole And Small Shape Cutting │ │ │ │ │ It is recommended that you slow down cutting when cutting holes and small shapes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 91 / 1327 │ │ │ │ │ │ │ │ │ │ John Moore says: “If you want details on cutting accurate small holes look up the sales sheets on │ │ │ │ │ Hypertherm’s True Hole Technology also look on PlasmaSpider, user seanp has posted extensively on │ │ │ │ │ his work using simple air plasma. │ │ │ │ │ The generally accepted method to get good holes from 37mm dia. and down to material thickness with │ │ │ │ │ @@ -7516,15 +7516,15 @@ │ │ │ │ │ overshoot the initial trigger point by 50-100 mm. If you use a shared home/limit switch, you have to │ │ │ │ │ move the sensor off the trigger point with the final HOME_OFFSET or you will trigger a limit switch │ │ │ │ │ fault as the machine comes out of homing. This means you could lose 50 mm or more of axis travel │ │ │ │ │ with shared home/limit switches. This does not happen if separate home and limit switches are used. │ │ │ │ │ The following pins are usually required (note that suggested connections may not be appropriate for │ │ │ │ │ a QtPlasmaC configuration): │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 92 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.14.1 Arc OK (input) │ │ │ │ │ • Inverter closes dry contacts when a valid arc is established │ │ │ │ │ • Connect Field power to one Inverter ArcOK terminal. │ │ │ │ │ • Connect other Inverter Ok Terminal to input pin. │ │ │ │ │ @@ -7555,15 +7555,15 @@ │ │ │ │ │ 2.7.14.4 Ohmscher Sensor aktivieren (Ausgang) │ │ │ │ │ • Siehe den Schaltplan ohmic sensing. │ │ │ │ │ • Verbinden Sie den Ausgangspin mit einer Seite des Trennrelais und die andere Seite mit der Masse │ │ │ │ │ der Feldversorgung. │ │ │ │ │ • In a non-QtPlasmaC configuration, usually triggered by a ̀ ̀motion.digital-out- ̀ ̀ so it can be │ │ │ │ │ controlled in G-code by M62/M63/M64/M65 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 93 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.14.5 Ohmsche Sensorik (engl. ohmic sensing) (Eingang) │ │ │ │ │ • Beachten Sie das zuvor gezeigte Schema zu ohmic sensing. │ │ │ │ │ • Eine isolierte Stromversorgung löst ein Relais aus, wenn der Brennerschild das Material berührt. │ │ │ │ │ • Schließen Sie die Feldspannung an eine Ausgangsklemme und die andere an den Eingang an. │ │ │ │ │ @@ -7599,15 +7599,15 @@ │ │ │ │ │ M62 P2 will disable THC (synchronised with motion) │ │ │ │ │ M63 P2 will enable THC (synchronised with motion) │ │ │ │ │ M64 P2 will disable THC (immediately) │ │ │ │ │ M65 P2 will enable THC (immediately) │ │ │ │ │ │ │ │ │ │ Reduce Cutting Speeds: (e.g., for hole cutting) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 94 / 1327 │ │ │ │ │ │ │ │ │ │ M67 E3 Q0 würde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen │ │ │ │ │ M67 E3 Q40 würde die Geschwindigkeit auf 40% der angeforderten~Geschwindigkeit setzen │ │ │ │ │ M67 E3 Q60 würde die Geschwindigkeit auf 60% der angeforderten~Geschwindigkeit setzen │ │ │ │ │ M67 E3 Q100 würde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen │ │ │ │ │ @@ -7652,15 +7652,15 @@ │ │ │ │ │ [JOINT_n] │ │ │ │ │ MAX_VELOCITY = 60 │ │ │ │ │ MAX_ACCELERATION = 700 │ │ │ │ │ │ │ │ │ │ For further information about external offsets (for version 2.8 or later) please read the [AXIS_] │ │ │ │ │ Section of the INI file document and External Axis Offsets in the LinuxCNC documentation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 95 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.17 Reading Arc Voltage With The Mesa THCAD │ │ │ │ │ The Mesa THCAD board is a remarkably well priced and accurate voltage to frequency converter that │ │ │ │ │ is designed for the hostile noisy electrical environment associated with plasma cutting. Internally it │ │ │ │ │ has a 0-10 V range. This range can be simply extended by the addition of some resistors as described │ │ │ │ │ @@ -7702,15 +7702,15 @@ │ │ │ │ │ │ │ │ │ │ Power up your controller and open Halshow (AXIS: Show Homing Configuration), drill down to find │ │ │ │ │ the hm2_7i76e.0.encoder.00.velocity pin. With 0 Volts applied, it should be hovering around the │ │ │ │ │ 0 Volt frequency (3,800 in our example). Grab a 9 Volt battery and connect it to IN + and IN -. For a │ │ │ │ │ THCAD-10 you can now calculate the expected velocity (26,480 in our hypothetical example). If you │ │ │ │ │ pass this test, then you are ready to configure your LinuxCNC plasma controller. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 96 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.17.3 Which Model THCAD To Use? │ │ │ │ │ The THCAD-5 is useful if you intend to use it for ohmic sensing. There is no doubt the THCAD-10 │ │ │ │ │ is the more flexible device and it is easy to alter the scaling. However, there is one caveat that can │ │ │ │ │ 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 │ │ │ │ │ @@ -7743,15 +7743,15 @@ │ │ │ │ │ 2. Processed in CAM to generate final G-code that is loaded to the machine │ │ │ │ │ 3. Cutting the parts via CNC G-code commands. │ │ │ │ │ Some people achieve good results with Inkscape and G-code tools but SheetCam is a very well priced │ │ │ │ │ solution and there are a number of post processors available for LinuxCNC. SheetCam has a number │ │ │ │ │ of advanced features designed for plasma cutting and for the price, is a no brainer for anybody doing │ │ │ │ │ regular plasma cutting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 97 / 1327 │ │ │ │ │ │ │ │ │ │ 2.7.19 Designing For Noisy Electrical Environments │ │ │ │ │ Plasma cutting is inherently an extremely hostile and noisy electrical environment. If you have EMI │ │ │ │ │ problems things won’t work correctly. You might fire the torch and the computer will reboot in a more │ │ │ │ │ obvious example, but you can have any number of other odd symptoms. They will pretty much all │ │ │ │ │ @@ -7798,15 +7798,15 @@ │ │ │ │ │ The minimum water level under the cut level of the torch should be around 40 mm, having space under │ │ │ │ │ slats is nice so the water can level and escape during cutting, having a bit of water above the metal │ │ │ │ │ plate being cut is really nice as it gets rid of the little bit of dust, running it submerged is the best way │ │ │ │ │ but not preferable for systems with part time use as it will corrode the torch. Adding baking soda to │ │ │ │ │ the water will keep the table in a nice condition for many years as it does not allow corrosion while │ │ │ │ │ the slats are under water and it also reduces the smell of water vapour. Some people use a water │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 98 / 1327 │ │ │ │ │ │ │ │ │ │ reservoir with a compressed air inlet so they can push the water from the reservoir up to the water │ │ │ │ │ table on demand and thus allow changes in water levels. │ │ │ │ │ │ │ │ │ │ 2.7.21 Downdraft Tables │ │ │ │ │ @@ -7845,15 +7845,15 @@ │ │ │ │ │ │ │ │ │ │ 2.7.25 Hypertherm RS485 Control │ │ │ │ │ Some Hypertherm plasma cutters have a RS485 interface to allow the controller (e.g., LinuxCNC) │ │ │ │ │ to set amps.pressure and mode. A number of people have used a userspace component written in │ │ │ │ │ Python to achieve this. More recently, QtPlasmaC now supports this interface natively. Refer to the │ │ │ │ │ QtPlasmaC documentation for how to use it. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 99 / 1327 │ │ │ │ │ │ │ │ │ │ The combination of a slow baud rate used by Hypertherm and the userspace component, make this │ │ │ │ │ fairly slow to alter machine states so it generally not viable to change settings on the fly while cutting. │ │ │ │ │ When selecting a RS485 interface to use at the PC end, users have reported that USB to RS485 │ │ │ │ │ interfaces are not reliable. Good reliable results have been achieved using a hardware based RS232 │ │ │ │ │ @@ -7873,15 +7873,15 @@ │ │ │ │ │ and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors │ │ │ │ │ are text files written in the Lua programming language and are generally easy to modify to suit your │ │ │ │ │ exact requirements. For further information, consult the SheetCam web site and their support forum. │ │ │ │ │ Another popular post-processor is included with the popular Fusion360 package but the included │ │ │ │ │ post-processors will need some customisation. │ │ │ │ │ LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 100 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 3 │ │ │ │ │ │ │ │ │ │ Konfigurationsassistenten │ │ │ │ │ 3.1 Schrittmotor-Konfigurations-Assistent │ │ │ │ │ @@ -7892,15 +7892,15 @@ │ │ │ │ │ StepConf wird bei der Installation von LinuxCNC mitinstalliert und befindet sich im CNC-Menü. │ │ │ │ │ StepConf legt eine Datei im Verzeichnis linuxcnc/config ab, um die Auswahlmöglichkeiten für jede von │ │ │ │ │ Ihnen erstellte Konfiguration zu speichern. Wenn Sie etwas ändern, müssen Sie die Datei auswählen, │ │ │ │ │ die dem Namen Ihrer Konfiguration entspricht. Die Dateierweiterung lautet .stepconf. │ │ │ │ │ Der StepConf-Assistent funktioniert am besten bei einer Bildschirmauflösung von mindestens 800 x │ │ │ │ │ 600. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 101 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.2 Startseite │ │ │ │ │ │ │ │ │ │ Abbildung 3.1: StepConf Einstiegsseite │ │ │ │ │ Die ersten drei Optionsfelder sind selbsterklärend: │ │ │ │ │ @@ -7912,15 +7912,15 @@ │ │ │ │ │ • Importieren (engl. import) - Importieren Sie eine Mach-Konfigurationsdatei und versucht, sie in eine │ │ │ │ │ LinuxCNC-Konfigurationsdatei zu konvertieren. Nach dem Import gehen Sie durch die Seiten von │ │ │ │ │ StepConf, um die Einträge zu bestätigen/zu ändern. Die ursprüngliche Mach-XML-Datei wird nicht │ │ │ │ │ verändert. │ │ │ │ │ Diese folgenden Optionen werden in einer Einstellungsdatei für den nächsten Lauf von StepConf │ │ │ │ │ gespeichert. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 102 / 1327 │ │ │ │ │ │ │ │ │ │ • Desktop-Verknüpfung erstellen (engl. Create Desktop Shortcut) - Damit wird eine Verknüpfung auf │ │ │ │ │ Ihrem Desktop zu den Dateien erstellt. │ │ │ │ │ • Desktop Launcher erstellen (engl. Create Desktop Launcher) - Damit wird ein Launcher auf Ihrem │ │ │ │ │ Desktop platziert, um Ihre Anwendung zu starten. │ │ │ │ │ @@ -7930,15 +7930,15 @@ │ │ │ │ │ │ │ │ │ │ Abbildung 3.2: Seite mit grundlegenden Informationen │ │ │ │ │ • Simulierte Hardware erstellen (engl. Create Simulated Hardware) - Damit können Sie eine Konfiguration zum Testen erstellen, auch wenn Sie nicht über die tatsächliche Hardware verfügen’. │ │ │ │ │ • Maschinenname - Wählen Sie einen Namen für Ihre Maschine. Verwenden Sie nur Großbuchstaben, │ │ │ │ │ Kleinbuchstaben, Ziffern, - und _. │ │ │ │ │ • Achsenkonfiguration - Wählen Sie XYZ (Fräsen), XYZA (4-Achsen-Fräsen) oder XZ (Drehen). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 103 / 1327 │ │ │ │ │ │ │ │ │ │ • Maschineneinheiten (engl. machine units) - Wählen Sie Zoll (engl. inch) oder mm. Alle nachfolgenden Eingaben werden in der gewählten Einheit vorgenommen. Wenn Sie diese Einstellung ändern, │ │ │ │ │ werden auch die Standardwerte im Bereich Achsen geändert. Wenn Sie dies ändern, nachdem Sie │ │ │ │ │ Werte in einem der Achsenbereiche ausgewählt haben, werden diese durch die Standardwerte der │ │ │ │ │ ausgewählten Einheiten überschrieben. │ │ │ │ │ @@ -7971,15 +7971,15 @@ │ │ │ │ │ Test mindestens ein paar Minuten laufen. Je länger Sie den Test laufen lassen, desto eher werden auch │ │ │ │ │ seltene Ereignisse erfasst, die möglicherweise in kürzeren Abständen auftreten. Dies ist ein Test nur │ │ │ │ │ für Ihren Computer, es muss also keine Hardware angeschlossen sein, um den Test durchzuführen. │ │ │ │ │ │ │ │ │ │ Warnung │ │ │ │ │ Versuchen Sie nicht, LinuxCNC zu starten, während der Latenztest läuft. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 104 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.3: Latenz-Test │ │ │ │ │ Die Latenzzeit gibt an, wie lange der PC braucht, um seine Arbeit zu unterbrechen und auf eine externe │ │ │ │ │ Anfrage zu reagieren. In unserem Fall ist die Anfrage der periodische Herzschlag (engl. heartbeat), │ │ │ │ │ der als Zeitreferenz für die Schrittimpulse dient. Je geringer die Latenzzeit ist, desto schneller kann │ │ │ │ │ @@ -7997,15 +7997,15 @@ │ │ │ │ │ If your Max Jitter number is less than about 15-20 µs (15000-20000 ns), the computer should give very │ │ │ │ │ nice results with software stepping. If the max latency is more like 30-50 µs, you can still get good │ │ │ │ │ results, but your maximum step rate might be a little disappointing, especially if you use microstepping │ │ │ │ │ or have very fine pitch leadscrews. If the numbers are 100 µs or more (100,000 ns), then the PC is not │ │ │ │ │ a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is │ │ │ │ │ not a good candidate for LinuxCNC, regardless of whether you use software stepping or not. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 105 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.5 Einrichtung der parallelen Schnittstelle │ │ │ │ │ │ │ │ │ │ Abbildung 3.4: Parallele Schnittstelle Setup-Seite │ │ │ │ │ Sie können die Adresse als Hexadezimalwert (oft 0x378) oder als Linux’s Standard-Portnummer (wahrscheinlich 0) angeben │ │ │ │ │ @@ -8014,15 +8014,15 @@ │ │ │ │ │ • Ausgangspinout-Voreinstellungen - Automatische Einstellung der Pins 2 bis 9 gemäß dem SherlineStandard (Richtung auf Pins 2, 4, 6, 8) oder dem Xylotex-Standard (Richtung auf Pins 3, 5, 7, 9). │ │ │ │ │ • „Eingänge und Ausgänge“ – Wenn der Ein- oder Ausgang nicht verwendet wird, setzen Sie die │ │ │ │ │ Option auf „Nicht verwendet“. │ │ │ │ │ • Externes Notaus (engl. external E-Stop) - Dies kann aus einem Dropdown-Feld für den Eingangsstift ausgewählt werden. Eine typische Notaus-Kette verwendet alle normalerweise geschlossenen │ │ │ │ │ Kontakte. │ │ │ │ │ • Referenzpunkt- & Endschalter - Diese können bei den meisten Konfigurationen aus einem DropdownFeld für den Eingangspin ausgewählt werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 106 / 1327 │ │ │ │ │ │ │ │ │ │ • Charge Pump - Wenn Ihre Treiberplatine ein Ladungspumpensignal benötigt, wählen Sie Charge │ │ │ │ │ Pump aus der Dropdown-Liste für den Ausgangspin, den Sie mit Ihrem Ladungspumpeneingang │ │ │ │ │ verbinden möchten. Der Ausgang der Ladungspumpe ist über StepConf mit dem Basisgewinde verbunden. Der Ausgang der Ladungspumpe entspricht etwa der Hälfte der maximalen Schrittrate, die │ │ │ │ │ auf der Seite ”Basic Machine Configuration” angegeben ist. │ │ │ │ │ @@ -8035,15 +8035,15 @@ │ │ │ │ │ Abbildung 3.5: Einrichten von Parallel Port 2 │ │ │ │ │ Der zweite Parallelport (falls ausgewählt) kann auf dieser Seite konfiguriert und seine Pins zugewiesen │ │ │ │ │ werden. Es können keine Schritt- und Richtungssignale ausgewählt werden. Sie können ”in” oder │ │ │ │ │ ”out” wählen, um die Anzahl der verfügbaren Eingangs-/Ausgangs-Pins zu maximieren. Sie können │ │ │ │ │ die Adresse als Hexadezimalwert (oft 0x378) oder als Linux’s Standard-Portnummer (wahrscheinlich │ │ │ │ │ 1) angeben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 107 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.7 Achsenkonfiguration │ │ │ │ │ │ │ │ │ │ Abbildung 3.6: Achsenkonfiguration am Bildschirm │ │ │ │ │ • Motorschritte pro Umdrehung - Die Anzahl der vollen Schritte pro Motorumdrehung. Wenn Sie │ │ │ │ │ @@ -8057,15 +8057,15 @@ │ │ │ │ │ gewählt haben, geben Sie die Anzahl der Gewinde pro Zoll ein. Wenn Sie die Einheit mm gewählt │ │ │ │ │ haben, geben Sie die Anzahl der Millimeter pro Umdrehung ein (z.B. 2 für 2mm/Umdrehung). Wenn │ │ │ │ │ die Maschine in die falsche Richtung fährt, geben Sie hier eine negative Zahl anstelle einer positiven │ │ │ │ │ Zahl ein, oder kehren Sie den Richtungspin für die Achse um. │ │ │ │ │ • Maximale Geschwindigkeit - Geben Sie die maximale Geschwindigkeit für die Achse in Einheiten │ │ │ │ │ pro Sekunde ein. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 108 / 1327 │ │ │ │ │ │ │ │ │ │ • Maximale Beschleunigung - Die richtigen Werte für diese Elemente können nur durch Experimentieren ermittelt werden. Siehe > zur Einstellung der Geschwindigkeit und Maximale Beschleunigung bestimmen zur Einstellung der Beschleunigung. │ │ │ │ │ • Referenzunkt - Die Position, zu der die Maschine nach Abschluss des Referenzfahrtverfahrens für │ │ │ │ │ diese Achse fährt (engl. home location). Bei Maschinen ohne Referenzfahrtschalter ist dies die Position, zu der ein Bediener die Maschine manuell bewegt, bevor er die Taste Home drückt. Wenn │ │ │ │ │ Sie den Referenzpunktschalter und den Endschalter kombinieren, müssen Sie den Schalter in die │ │ │ │ │ @@ -8099,15 +8099,15 @@ │ │ │ │ │ Computer zu Computer) │ │ │ │ │ • Axis SCALE - Die Zahl, die in der INI-Datei [SCALE] Einstellung verwendet wird. Die Anzahl Schritte │ │ │ │ │ pro Benutzereinheit. │ │ │ │ │ • Diese Achse testen - (engl. test this axis) Dadurch wird ein Fenster geöffnet, in dem jede Achse │ │ │ │ │ getestet werden kann. Dies kann verwendet werden, nachdem alle Informationen für diese Achse │ │ │ │ │ ausgefüllt wurden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 109 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.7: Achsen-Test │ │ │ │ │ Der Achsen-Test ist ein einfacher Test, für den nur Schritt- und Richtungssignale ausgegeben werden, │ │ │ │ │ um verschiedene Werte für Beschleunigung und Geschwindigkeit zu testen. │ │ │ │ │ Wichtig │ │ │ │ │ @@ -8130,15 +8130,15 @@ │ │ │ │ │ Wenn die Maschine nicht offensichtlich zum Stillstand gekommen ist, klicken Sie auf die Schaltfläche │ │ │ │ │ Ausführen. Die Achse kehrt nun zu der Position zurück, an der sie gestartet ist. Wenn die Position │ │ │ │ │ nicht korrekt ist, dann ist die Achse während des Tests stehen geblieben oder hat Schritte verloren. │ │ │ │ │ Verringern Sie die Geschwindigkeit und starten Sie den Test erneut. │ │ │ │ │ Wenn sich die Maschine nicht bewegt, stehen bleibt oder Schritte verliert, egal wie niedrig Sie die │ │ │ │ │ Geschwindigkeit einstellen, überprüfen Sie Folgendes: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 110 / 1327 │ │ │ │ │ │ │ │ │ │ • Korrigieren Sie das Timing der Schrittwellenform │ │ │ │ │ • Korrekte Pinbelegung, einschließlich Invert auf Step-Pins │ │ │ │ │ • Korrekte, gut geschirmte Verkabelung │ │ │ │ │ • Physikalische Probleme mit dem Motor, der Motorkupplung, der Leitspindel usw. │ │ │ │ │ @@ -8148,15 +8148,15 @@ │ │ │ │ │ 3.1.7.2 Bestimmen der maximalen Beschleunigung │ │ │ │ │ Geben Sie mit der im vorherigen Schritt ermittelten Höchstgeschwindigkeit den zu testenden Beschleunigungswert ein. Passen Sie den Beschleunigungswert wie oben beschrieben nach oben oder │ │ │ │ │ unten an. Bei diesem Test ist es wichtig, dass die Kombination aus Beschleunigung und Testbereich es │ │ │ │ │ der Maschine ermöglicht, die ausgewählte Geschwindigkeit zu erreichen. Sobald Sie einen Wert gefunden haben, bei dem die Achse während dieses Testverfahrens nicht ins Stocken gerät oder Schritte │ │ │ │ │ verliert, reduzieren Sie ihn um 10 % und verwenden Sie diesen Wert als maximale Beschleunigung │ │ │ │ │ der Achse. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 111 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.8 Spindel-Konfiguration │ │ │ │ │ │ │ │ │ │ Abbildung 3.8: Seite zur Spindelkonfiguration │ │ │ │ │ Diese Seite erscheint nur, wenn Spindle PWM auf der Seite Parallel Port Pinout für einen der Ausgänge │ │ │ │ │ @@ -8167,15 +8167,15 @@ │ │ │ │ │ ein, der für die Erzeugung einer analogen Steuerspannung nützlich ist. Den entsprechenden Wert │ │ │ │ │ finden Sie in der Dokumentation zu Ihrem Spindelcontroller. │ │ │ │ │ • Drehzahl 1 und 2, PWM 1 und 2 - Die generierte Konfigurationsdatei verwendet eine einfache lineare │ │ │ │ │ Beziehung, um den PWM-Wert für einen bestimmten Drehzahlwert zu bestimmen. Wenn die Werte │ │ │ │ │ nicht bekannt sind, können sie bestimmt werden. Weitere Informationen finden Sie unter Festlegung │ │ │ │ │ der Spindle Kalibrierung. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 112 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.8.2 Spindel-synchronisierte Bewegung │ │ │ │ │ Wenn die entsprechenden Signale von einem Spindel-Encoder an LinuxCNC über HAL verbunden │ │ │ │ │ sind, unterstützt LinuxCNC Drehmaschine Gewindeschneiden. Diese Signale sind: │ │ │ │ │ • Spindle Index – Ist ein Impuls, der einmal pro Spindelumdrehung auftritt. │ │ │ │ │ @@ -8218,28 +8218,28 @@ │ │ │ │ │ zu berücksichtigen: │ │ │ │ │ • Stellen Sie sicher, dass die beiden Kalibrierungsdrehzahlen nicht zu nahe beieinander liegen. │ │ │ │ │ • Vergewissern Sie sich, dass die beiden Kalibrierungsgeschwindigkeiten im Bereich der Geschwindigkeiten liegen, die Sie normalerweise beim Fräsen verwenden. │ │ │ │ │ Wenn Ihre Spindel z. B. von 0 U/min bis 8000 U/min läuft, Sie aber in der Regel Drehzahlen zwischen │ │ │ │ │ 400 U/min (10 %) und 4000 U/min (100 %) verwenden, dann suchen Sie die PWM-Werte, die 1600 │ │ │ │ │ U/min (40 %) und 2800 U/min (70 %) ergeben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 113 / 1327 │ │ │ │ │ │ │ │ │ │ 3.1.9 Optionen │ │ │ │ │ │ │ │ │ │ Abbildung 3.9: Erweiterte Optionen bei der Konfiguration │ │ │ │ │ • Include Halui - Damit wird die Halui-Benutzerschnittstellenkomponente hinzugefügt. Siehe das HALUI Kapitel für weitere Informationen hierzu. │ │ │ │ │ • Include PyVCP - Diese Option fügt die PyVCP-Panel-Basisdatei oder eine Beispieldatei zum Arbeiten │ │ │ │ │ hinzu. Siehe das PyVCP Kapitel für weitere Informationen. │ │ │ │ │ • Include ClassicLadder PLC - Diese Option fügt die ClassicLadder PLC (Speicherprogrammierbare │ │ │ │ │ Steuerung) hinzu. Weitere Informationen finden Sie im Kapitel >. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 114 / 1327 │ │ │ │ │ │ │ │ │ │ • Bildschirm-Aufforderung zu Werkzeugwechsel - Wenn dieses Feld markiert ist, wird LinuxCNC Pause und fordern Sie auf, das Werkzeug zu wechseln, wenn M6 angetroffen wird. Diese Funktion ist │ │ │ │ │ in der Regel nur sinnvoll, wenn Sie voreinstellbaren Werkzeugen haben. │ │ │ │ │ │ │ │ │ │ 3.1.10 Vollständige Maschinenkonfiguration │ │ │ │ │ @@ -8259,15 +8259,15 @@ │ │ │ │ │ angetroffen wird, schaltet LinuxCNC den Motorverstärker ab. Der Abstand zwischen dem harten Anschlag und Endschalter muss lang genug sein, um einen unbestromten Motor zum Stillstand zu bringen. │ │ │ │ │ Vor dem Endschalter gibt es ein soft limit. Dabei handelt es sich um eine Grenze, die nach der Referenzfahrt in der Software durchgesetzt wird. Wenn ein MDI-Befehl oder ein G-Code-Programm die │ │ │ │ │ weiche Grenze überschreiten würde, wird es nicht ausgeführt. Wenn eine manuelle Steuerung die │ │ │ │ │ Softgrenze überschreiten würde, wird diese an der Softgrenze beendet. │ │ │ │ │ Der Referenzschalter (engl. home switch) kann an einer beliebigen Stelle innerhalb des Verfahrwegs │ │ │ │ │ (zwischen harten Anschlägen) platziert werden. Solange die externe Hardware die Motorverstärker │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 115 / 1327 │ │ │ │ │ │ │ │ │ │ nicht deaktiviert, wenn der Endschalter erreicht wird, kann einer der Endschalter als Referenzschalter │ │ │ │ │ verwendet werden. │ │ │ │ │ Die Nullposition ist die Stelle auf der Achse, die im Maschinenkoordinatensystem 0 ist. Normalerweise │ │ │ │ │ liegt die Nullposition innerhalb der weichen Grenzen. Bei Drehmaschinen erfordert der Modus Konstante Schnittgeschwindigkeit, dass X=0 dem Zentrum der Spindeldrehung entspricht, wenn keine │ │ │ │ │ @@ -8292,15 +8292,15 @@ │ │ │ │ │ The figures below show the general idea of wiring multiple switches to a single input pin. In each │ │ │ │ │ case, when one switch is actuated, the value seen on INPUT goes from logic HIGH to LOW. However, │ │ │ │ │ LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be │ │ │ │ │ checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input │ │ │ │ │ high until the connection to ground is made and then the input goes low. Otherwise the input might │ │ │ │ │ float between on and off when the circuit is open. Typically for a parallel port you might use 47 kΩ;. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 116 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.11: Normalerweise geschlossene Schalter (engl. normally closed, N/C) in Reihe verdrahtet (vereinfachtes Diagramm) │ │ │ │ │ │ │ │ │ │ Abbildung 3.12: Normalerweise offene Schalter (engl. normally open switches, N/O) parallel verdrahtet (vereinfachte Darstellung) │ │ │ │ │ Die folgenden Kombinationen von Schaltern sind in StepConf zulässig: │ │ │ │ │ @@ -8311,15 +8311,15 @@ │ │ │ │ │ • Kombinieren eines Endschalters und des Referenzschalters für eine Achse │ │ │ │ │ Die letzten beiden Kombinationen sind auch geeignet, wenn der Typ Kontakt │ │ │ │ │ Referenz verwendet wird. │ │ │ │ │ │ │ │ │ │ 3.2 Mesa-Konfigurationsassistent │ │ │ │ │ PnCconf wurde entwickelt, um Konfigurationen zu erstellen, die bestimmte Mesa Anything I/O Produkte verwenden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 117 / 1327 │ │ │ │ │ │ │ │ │ │ Es kann Servo-Systeme mit geschlossenem Regelkreis oder Hardware-Schrittmachersysteme konfigurieren. Es verwendet einen ähnlichen Assistenten Ansatz wie Stepconf (verwendet für SoftwareStepping, parallel portgesteuerte Systeme). │ │ │ │ │ PnCconf befindet sich noch im Entwicklungsstadium (Beta), daher gibt es noch einige Bugs und fehlende Funktionen. Bitte melden Sie Fehler und Vorschläge auf der LinuxCNC Forumsseite oder über │ │ │ │ │ die Mailing-Liste. │ │ │ │ │ Bei der Verwendung von PnCconf gibt es zwei Denkansätze: │ │ │ │ │ @@ -8331,15 +8331,15 @@ │ │ │ │ │ Dies wäre die Wahl, wenn Sie umfangreiche Änderungen über PnCconf’s Umfang oder wollen einfach │ │ │ │ │ nur mit / lernen über LinuxCNC basteln müssen. │ │ │ │ │ Mit den Schaltflächen ”Vor”, ”Zurück” und ”Abbrechen” können Sie durch die Seiten des Assistenten │ │ │ │ │ navigieren. Außerdem gibt es eine Hilfeschaltfläche, die einige Informationen zu den Seiten, Diagrammen und einer Ausgabeseite enthält. │ │ │ │ │ Tipp │ │ │ │ │ Die Hilfeseite von PnCconf sollte die aktuellsten Informationen und zusätzliche Details enthalten. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 118 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.1 Schritt für Schritt Anleitung │ │ │ │ │ │ │ │ │ │ Abbildung 3.13: PnCconf Startfenster │ │ │ │ │ │ │ │ │ │ @@ -8350,15 +8350,15 @@ │ │ │ │ │ können Sie Desktop-Verknüpfungen und Startoptionen auswählen. Eine Desktop-Verknüpfung legt ein │ │ │ │ │ Ordnersymbol auf dem Desktop ab, das auf Ihre neuen Konfigurationsdateien verweist. Andernfalls │ │ │ │ │ müssten Sie in Ihrem Home-Ordner unter linuxcnc/configs suchen. │ │ │ │ │ Ein Desktop Launcher fügt ein Symbol auf dem Desktop hinzu, um Ihre Konfiguration direkt zu starten. │ │ │ │ │ Sie können sie auch vom Hauptmenü aus starten, indem Sie den Configuration Selector LinuxCNC im │ │ │ │ │ CNC-Menü verwenden und den Namen Ihrer Konfiguration auswählen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 119 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.3 Grundlegende Informationen zur Maschine │ │ │ │ │ │ │ │ │ │ Abbildung 3.14: PnCconf Basic │ │ │ │ │ │ │ │ │ │ @@ -8369,15 +8369,15 @@ │ │ │ │ │ Tipp │ │ │ │ │ Standardwerte werden bei der Verwendung in metrisch nicht konvertiert, stellen Sie also sicher, dass │ │ │ │ │ es sich um vernünftige Werte handelt! │ │ │ │ │ │ │ │ │ │ Reaktionszeit des Computers │ │ │ │ │ Die Servoperiode gibt den Herzschlag des Systems vor. Latenz bezieht sich auf die Menge der │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 120 / 1327 │ │ │ │ │ │ │ │ │ │ Zeit, die der Computer länger als diese Periode sein kann. Genau wie eine Eisenbahn, LinuxCNC erfordert alles auf eine sehr enge und konsistente Zeitlinie oder schlechte Dinge passieren. │ │ │ │ │ LinuxCNC erfordert und verwendet ein Echtzeit Betriebssystem, das nur bedeutet, dass es hat │ │ │ │ │ eine niedrige Latenz (LReaktionszeit) hat. Bbei der Durchführung von LinuxCNCs Berechnungen │ │ │ │ │ können diese nicht durch Anforderungen niedrigerer Priorität (wie Benutzereingaben auf dem │ │ │ │ │ @@ -8418,15 +8418,15 @@ │ │ │ │ │ Die in der Auswahlbox verfügbaren Mesa-Karten basieren darauf, was PnCconf an Firmware │ │ │ │ │ auf den Systemen findet. Es besteht die Möglichkeit, benutzerdefinierte Firmware hinzuzufügen │ │ │ │ │ und/oder bestimmte Firmware oder Karten mithilfe einer Einstellungsdatei auf eine schwarze │ │ │ │ │ Liste zu setzen (zu ignorieren). Wenn keine Firmware gefunden wird, zeigt PnCconf eine Warnung │ │ │ │ │ an und verwendet eine interne Beispiel-Firmware - ein Testen ist nicht möglich. Wenn Sie zwei │ │ │ │ │ PCI-Mesa-Karten auswählen, gibt es derzeit keine Möglichkeit vorherzusagen, welche Karte 0 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 121 / 1327 │ │ │ │ │ │ │ │ │ │ und welche 1 ist - Sie müssen testen - das Verschieben der Karten könnte die Reihenfolge ändern. │ │ │ │ │ Wenn Sie mit zwei Karten konfigurieren, müssen beide Karten installiert sein, damit die Tests │ │ │ │ │ funktionieren. │ │ │ │ │ Parallelport │ │ │ │ │ @@ -8458,15 +8458,15 @@ │ │ │ │ │ • Touchy wurde für die Verwendung mit einem Touchscreen, einigen minimalen physischen Schaltern │ │ │ │ │ und einem MPG-Rad konzipiert. │ │ │ │ │ • erfordert Zyklus-Start-, Abbruch- und Einzelschritt-Signale und -Tasten │ │ │ │ │ • Außerdem muss das Handrad-Jogging mit gemeinsamer Achse ausgewählt werden. │ │ │ │ │ • ist GTK-basiert und integriert daher GladeVCP (virtuelle Kontrollfelder) auf unkompiziere Weise. │ │ │ │ │ • ermöglicht die Integration von VCP-Panels in die mittlere Registerkarte │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 122 / 1327 │ │ │ │ │ │ │ │ │ │ • hat kein grafisches Fenster │ │ │ │ │ • Das Aussehen kann mit benutzerdefinierten Designs geändert werden │ │ │ │ │ QtPlasmaC │ │ │ │ │ • voll funktionsfähige Plasmac-Konfiguration auf der Grundlage der QtVCP-Infrastruktur. │ │ │ │ │ @@ -8474,15 +8474,15 @@ │ │ │ │ │ • keine VCP-Integration │ │ │ │ │ │ │ │ │ │ 3.2.4 Externe Konfiguration │ │ │ │ │ Auf dieser Seite können Sie externe Steuerungen auswählen, z. B. für Jogging oder Overrides. │ │ │ │ │ │ │ │ │ │ Abbildung 3.15: Externe Steuerelemente │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 123 / 1327 │ │ │ │ │ │ │ │ │ │ Wenn Sie einen Joystick für Jogging wählen, so muß dieser immer eingesteckt sein, um LinuxCNC │ │ │ │ │ zu nutzen. Um die analogen Sticks für Jogging zu nutzen, werden Sie wahrscheinlich einigen HALCode selber hinzufügen müssen. Handrad (auch Impulsgenerator oder engl. MPG)-Jogging erfordert │ │ │ │ │ einen Impulsgeber, der mit einem MESA-Geberzähler verbunden ist. Override-Steuerungen können │ │ │ │ │ entweder einen Impulsgenerator oder einem Schalter (z. B. einen Drehschalter) verwenden. Externe │ │ │ │ │ @@ -8512,15 +8512,15 @@ │ │ │ │ │ Neufestlegungen (engl. overrides) │ │ │ │ │ PnCconf ermöglicht die Neufestsetzung von Vorschubgeschwindigkeiten und/oder Spindeldrehzahlen über ein Handrad (MPG) oder Schalter (z. B. Drehschalter). │ │ │ │ │ │ │ │ │ │ 3.2.5 GUI-Konfiguration │ │ │ │ │ Hier können Sie die Standardeinstellungen für die Bildschirme, fügen Sie virtuelle Bedienfelder (VCP), │ │ │ │ │ und stellen Sie einige LinuxCNC Optionen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 124 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.16: GUI-Konfiguration │ │ │ │ │ │ │ │ │ │ Front-End GUI-Optionen │ │ │ │ │ Die Standardoptionen ermöglichen die Auswahl allgemeiner Standardeinstellungen für jeden Anzeigebildschirm. │ │ │ │ │ @@ -8529,15 +8529,15 @@ │ │ │ │ │ zu verschieben, wenn das System dazu in der Lage ist. │ │ │ │ │ Touchy-Standardeinstellungen sind Optionen, die spezifisch für Touchy sind. Die meisten Optionen │ │ │ │ │ von Touchy’können während der Ausführung von Touchy über die Einstellungsseite geändert werden. │ │ │ │ │ Touchy verwendet GTK, um seinen Bildschirm zu zeichnen, und GTK unterstützt Themen. Themes │ │ │ │ │ steuern das grundlegende Aussehen und die Bedienung eines Programms. Sie können Themes aus │ │ │ │ │ dem Netz herunterladen oder sie selbst bearbeiten. Es gibt eine Liste der aktuellen Themen auf dem │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 125 / 1327 │ │ │ │ │ │ │ │ │ │ Computer, aus der Sie auswählen können. Damit ein Teil des Textes besser zur Geltung kommt, können │ │ │ │ │ Sie in PnCconf die Standardeinstellungen der Themes’s überschreiben. Die Optionen position und │ │ │ │ │ force max können verwendet werden, um Touchy auf einen zweiten Monitor zu verschieben, wenn │ │ │ │ │ das System dazu in der Lage ist. │ │ │ │ │ @@ -8573,15 +8573,15 @@ │ │ │ │ │ auswählen. │ │ │ │ │ Wählen Sie unter ”Beispieloptionen” die gewünschten Optionen aus. Die Nulltasten verwenden HALUIBefehle, die Sie später im HALUI-Abschnitt bearbeiten können. │ │ │ │ │ Auto Z Touch-Off erfordert auch das klassische Leiter-Touch-Off-Programm und einen ausgewählten │ │ │ │ │ Sondeneingang. Es erfordert eine leitfähige Touch-Off-Platte und ein geerdetes leitfähiges Werkzeug. │ │ │ │ │ Eine Idee, wie es funktioniert, finden Sie unter: │ │ │ │ │ https://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadderExamples#Single_button_probe_touchoff │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 126 / 1327 │ │ │ │ │ │ │ │ │ │ Unter „Anzeigeoptionen“ können Größe, Position und max. Kraft auf einem „eigenständigen“ Panel │ │ │ │ │ verwendet werden, um beispielsweise den Bildschirm auf einem zweiten Monitor zu platzieren, wenn │ │ │ │ │ das System dazu in der Lage ist. │ │ │ │ │ Sie können ein GTK-Thema auswählen, welches das grundlegende Erscheinungsbild des Panels festlegt. Normalerweise möchten Sie, dass dies mit dem Front-End-Bildschirm übereinstimmt. Diese Optionen werden verwendet, wenn Sie auf die Schaltfläche ”Beispiel anzeigen” klicken. Mit GladeVCP │ │ │ │ │ @@ -8603,15 +8603,15 @@ │ │ │ │ │ – Wird für Werkzeugwechsler verwendet, die das Werkzeug nicht in dieselbe Tasche zurückbringen. Um Werkzeugwechsler zu unterstützen, müssen Sie einen eigenen HAL-Code hinzufügen. │ │ │ │ │ │ │ │ │ │ 3.2.6 Mesa-Konfiguration │ │ │ │ │ Die Mesa-Konfigurationsseiten erlauben es, verschiedene Firmwares zu verwenden. Auf der Basisseite │ │ │ │ │ haben Sie eine Mesa-Karte ausgewählt. Hier wählen Sie die verfügbare Firmware aus und bestimmen, │ │ │ │ │ welche und wie viele Komponenten verfügbar sind. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 127 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.17: Mesa Board Konfiguration │ │ │ │ │ Die Parport-Adresse wird nur mit der Mesa-Parport-Karte, der 7i43, verwendet. Ein On-Board-Parallelport │ │ │ │ │ verwendet normalerweise 0x278 oder 0x378, obwohl Sie in der Lage sein sollten, die Adresse auf der │ │ │ │ │ BIOS-Seite zu finden. Bei der 7i43 muss die parallele Schnittstelle den EPP-Modus verwenden, der │ │ │ │ │ @@ -8621,15 +8621,15 @@ │ │ │ │ │ Viele PCI-Karten unterstützen das EPP-Protokoll nicht richtig. │ │ │ │ │ Die PDM-PWM- und 3PWM-Basisfrequenz bestimmt das Gleichgewicht zwischen Restwelligkeit und │ │ │ │ │ Linearität. Bei der Verwendung von Mesa-Tochterkarten sollten die Unterlagen für die Karte Empfehlungen enthalten │ │ │ │ │ │ │ │ │ │ Wichtig │ │ │ │ │ Es ist wichtig, diese zu beachten, um Schäden zu vermeiden und die beste Leistung zu erzielen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 128 / 1327 │ │ │ │ │ │ │ │ │ │ Der 7i33 benötigt PDM und eine PDM-Basisfrequenz von 6 MHz │ │ │ │ │ Der 7i29 benötigt PWM und eine PWM-Basisfrequenz von 20 kHz │ │ │ │ │ Das 7i30 erfordert PWM und eine PWM-Basisfrequenz von 20 kHz │ │ │ │ │ Das 7i40 erfordert PWM und eine PWM-Basisfrequenz von 50 kHz │ │ │ │ │ @@ -8652,48 +8652,48 @@ │ │ │ │ │ Nachdem Sie all diese Optionen ausgewählt haben, drücken Sie die Schaltfläche Accept Component │ │ │ │ │ Changes und PnCconf aktualisiert die E/A-Setup-Seiten. Abhängig von der Mesa-Karte werden nur │ │ │ │ │ E/A-Registerkarten für verfügbare Anschlüsse angezeigt. │ │ │ │ │ │ │ │ │ │ 3.2.7 Mesa I/O-Einrichtung │ │ │ │ │ Die Registerkarten werden zur Konfiguration der Eingangs- und Ausgangspins der Mesa-Karten verwendet. Mit PnCconf können Sie benutzerdefinierte Signalnamen zur Verwendung in benutzerdefinierten HAL-Dateien erstellen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 129 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.18: Mesa I/O C2 Einrichtung │ │ │ │ │ Auf dieser Registerkarte mit dieser Firmware sind die Komponenten für eine 7i33 Tochterplatine eingestellt, die normalerweise mit Servos mit geschlossenem Regelkreis verwendet wird. Beachten Sie, │ │ │ │ │ dass die Komponentennummern der Encoderzähler und PWM-Treiber nicht in numerischer Reihenfolge sind. Dies entspricht den Anforderungen für die Tochterkarte. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 130 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.19: Mesa I/O C3 Einrichtung │ │ │ │ │ Auf dieser Registerkarte sind alle Pins GPIO. Beachten Sie die 3-stelligen Nummern - sie entsprechen │ │ │ │ │ der HAL-Pin-Nummer. GPIO-Pins können als Eingang oder Ausgang gewählt werden und können invertiert werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 131 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.20: Mesa I/O C4 Einrichtung │ │ │ │ │ Auf dieser Registerkarte gibt es eine Mischung aus Schrittgeneratoren und GPIO. Die Ausgangs- und │ │ │ │ │ Richtungspins der Schrittgeneratoren können invertiert werden. Beachten Sie, dass die Invertierung │ │ │ │ │ eines Step-Gen-A-Pins (des Step-Ausgangspins) das Step-Timing verändert. Es sollte dem entsprechen, was Ihr Controller erwartet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 132 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.8 Konfiguration des parallelen Anschlusses │ │ │ │ │ │ │ │ │ │ Der Parallelport kann für einfache E/A verwendet werden, ähnlich wie die GPIO-Pins von Mesa’s. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 133 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.9 Konfiguration der Achsen │ │ │ │ │ │ │ │ │ │ Abbildung 3.21: Konfiguration des Achsantriebs │ │ │ │ │ Diese Seite ermöglicht das Konfigurieren und Testen der Motor- und/oder Encoderkombination. Bei │ │ │ │ │ @@ -8702,15 +8702,15 @@ │ │ │ │ │ Open-Loop-Test │ │ │ │ │ Ein Open-Loop-Test ist wichtig, da er die Richtung von Motor und Encoder bestätigt. Der Motor │ │ │ │ │ sollte die Achse in die positive Richtung bewegen, wenn die positive Taste gedrückt wird, und │ │ │ │ │ auch der Encoder sollte in die positive Richtung zählen. Die Achsenbewegung sollte den Fußnoten des Machinery’s Handbook folgen:[”Achsennomenklatur” im Kapitel ”Numerische Steuerung” im ”Machinery’s Handbook”, herausgegeben von Industrial Press,] sonst macht die grafische AXIS-Anzeige nicht viel Sinn. Hoffentlich können die Hilfeseite und die Diagramme helfen, dies herauszufinden. Beachten Sie, dass die Richtungen der Achsen auf der Bewegung des │ │ │ │ │ Werkzeugs und nicht auf der Bewegung des Tisches basieren. Beim Open-Loop-Test gibt es keine │ │ │ │ │ Beschleunigungsrampe, beginnen Sie also mit niedrigeren DAC-Zahlen. Durch Bewegen der Achse über eine bekannte Strecke kann man die Skalierung des Encoders bestätigen. Der Encoder │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 134 / 1327 │ │ │ │ │ │ │ │ │ │ sollte auch ohne aktivierten Verstärker zählen, je nachdem wie der Encoder mit Strom versorgt │ │ │ │ │ wird. │ │ │ │ │ │ │ │ │ │ Warnung │ │ │ │ │ @@ -8752,15 +8752,15 @@ │ │ │ │ │ -0.96 │ │ │ │ │ -0.03 │ │ │ │ │ 9.87 │ │ │ │ │ 10.07 │ │ │ │ │ │ │ │ │ │ • Führen Sie eine lineare Anpassung nach dem Prinzip der kleinsten Quadrate durch, um die Koeffizienten a und b so zu ermitteln, dass meas=a*raw+b │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 135 / 1327 │ │ │ │ │ │ │ │ │ │ • Beachten Sie, dass wir eine Rohausgabe wünschen, bei der das gemessene Ergebnis mit der befohlenen Ausgabe identisch ist. Das bedeutet │ │ │ │ │ – cmd=a*raw+b │ │ │ │ │ – raw=(cmd-b)/a │ │ │ │ │ • Folglich können die Koeffizienten a und b aus der linearen Anpassung direkt als Skala und Offset │ │ │ │ │ @@ -8785,23 +8785,23 @@ │ │ │ │ │ speed. │ │ │ │ │ Bürstenlose Motorsteuerung │ │ │ │ │ Diese Optionen werden verwendet, um eine Low-Level-Steuerung von bürstenlosen Motoren │ │ │ │ │ mit spezieller Firmware und Tochterkarten zu ermöglichen. Sie ermöglicht auch die Konvertierung von HALL-Sensoren von einem Hersteller zu einem anderen. Sie wird nur teilweise │ │ │ │ │ unterstützt und erfordert, dass man die HAL-Verbindungen fertigstellt. Kontaktieren Sie die │ │ │ │ │ Mail-Liste oder das Forum für weitere Hilfe. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 136 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.22: Berechnung der Achsenskala │ │ │ │ │ Die Maßstabseinstellungen können direkt eingegeben werden oder man kann die Schaltfläche Maßstab berechnen zur Hilfe nehmen. Verwenden Sie die Kontrollkästchen, um die entsprechenden Berechnungen auszuwählen. Beachten Sie, dass Riemenscheibenzähne die Anzahl der Zähne und nicht │ │ │ │ │ das Übersetzungsverhältnis erfordert. Das Schneckenradverhältnis ist genau das Gegenteil und er- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 137 / 1327 │ │ │ │ │ │ │ │ │ │ fordert das Zahnradverhältnis. Wenn Sie mit der Skala zufrieden sind, drücken Sie auf Anwenden, │ │ │ │ │ andernfalls auf Abbrechen und geben Sie die Skala direkt ein. │ │ │ │ │ │ │ │ │ │ Abbildung 3.23: Konfiguration der Achsen │ │ │ │ │ @@ -8812,15 +8812,15 @@ │ │ │ │ │ Es ist sehr wichtig, dass sich die Achse zu Beginn in die richtige Richtung bewegt, da es sonst │ │ │ │ │ sehr schwierig ist, die Referenzfahrt zu richtig durchzuführen! │ │ │ │ │ │ │ │ │ │ Denken Sie daran, dass sich positive und negative Richtungen auf das WERKZEUG und nicht auf den │ │ │ │ │ Tisch beziehen, wie im Maschinenhandbuch beschrieben. │ │ │ │ │ Bei einer typischen Knie- oder Bettfräse │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 138 / 1327 │ │ │ │ │ │ │ │ │ │ • Wenn sich die TABLE nach außen bewegt, ist das die positive Y-Richtung │ │ │ │ │ • Wenn sich die TABLE nach links bewegt, ist das die positive X-Richtung │ │ │ │ │ • Wenn sich die TABLE nach unten bewegt, ist das die positive Z-Richtung │ │ │ │ │ • Wenn sich der KOPF nach oben bewegt, ist das die positive Z-Richtung │ │ │ │ │ @@ -8860,15 +8860,15 @@ │ │ │ │ │ Ich kann mir kaum vorstellen, warum es an einer bestimmten Stelle sein muss. Es gibt nur ein │ │ │ │ │ paar G-Codes, um auf die MACHINE COORDINATE System zugreifen können.( G53, G30 und │ │ │ │ │ G28 ) Zusammen mit Werkzeugwechsel-at-G30 Option mit dem Ursprung an der Werkzeugwechselposition kann die praktisch sein. Aus Konvention ist es am einfachsten, den ORIGIN am Referenzpunkt zu haben. │ │ │ │ │ Entscheiden Sie sich für den (endgültigen) Referenzunkt (engl. HOME POSITION) │ │ │ │ │ dies platziert nur den Schlitten an einer konsistenten und bequemen Position nachdem LinuxCNC │ │ │ │ │ herausfindet, wo derORIGIN ist. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 139 / 1327 │ │ │ │ │ │ │ │ │ │ Messen / Berechnen der positiven / negativen Achsabstände │ │ │ │ │ Fahren Sie die Achse zum Ursprung. Markieren Sie eine Referenz auf dem beweglichen Schlitten │ │ │ │ │ und dem unbeweglichen Träger (so dass sie in einer Linie liegen) und fahren Sie die Maschine │ │ │ │ │ bis zum Ende der Grenzen. Messen Sie den Abstand zwischen den Markierungen, der einer der │ │ │ │ │ @@ -8910,42 +8910,42 @@ │ │ │ │ │ Legt die Suchrichtung des Referenzschalters entweder negativ (d. h. in Richtung des negativen │ │ │ │ │ Endschalters) oder positiv (d. h. in Richtung des positiven Endschalters) fest. │ │ │ │ │ Referenzpunkt Latch Geschwindigkeit │ │ │ │ │ Feinfühlige Home-Suchgeschwindigkeit in Einheiten pro Minute. │ │ │ │ │ Referenzpunktsuche minimale Geschwindigkeit (engl. Home Final Velocity) │ │ │ │ │ Geschwindigkeit von der latch-Position zur (endgültigen) Ausgangsposition in Einheiten pro Minute. Für maximale Eilgeschwindigkeit auf 0 setzen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 140 / 1327 │ │ │ │ │ │ │ │ │ │ Referenzpunkt der Verriegelungsrichtung │ │ │ │ │ Ermöglicht die Einstellung der Verriegelungsrichtung auf die gleiche oder entgegengesetzte │ │ │ │ │ Richtung wie die Suchrichtung. │ │ │ │ │ Encoder-Index für Referenzpunkt verwenden │ │ │ │ │ LinuxCNC sucht während der Latch-Phase der Referenzfahrt nach einem Encoder-Indeximpuls. │ │ │ │ │ Kompensationsdatei verwenden │ │ │ │ │ Ermöglicht die Angabe eines Komp-Dateinamens und -typs. Ermöglicht eine anspruchsvolle Kompensation. Siehe den> des INI Kapitels. │ │ │ │ │ Verwenden des Umkehrspiel-Ausgleichs │ │ │ │ │ Ermöglicht die Einstellung einer einfachen Kompensation des Umkehrspiels. Kann nicht mit Kompensationsdatei verwendet werden. Siehe den > des │ │ │ │ │ INI Kapitels. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 141 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.24: AXIS-Hilfsdiagramm │ │ │ │ │ Das Diagramm soll helfen, ein Beispiel für Endschalter und Standard-Achsbewegungsrichtungen zu │ │ │ │ │ demonstrieren. In diesem Beispiel wurde die Z-Achse mit zwei Endschaltern versehen, wobei der │ │ │ │ │ positive Schalter als Home-Schalter verwendet wird. Der Maschinen-Ursprung (Nullpunkt, engl. machine origin) befindet sich am negativen Endschalter. Die linke Kante des Schlittens ist der negative │ │ │ │ │ Grenzwert und die rechte der positive Grenzwert. Die ENDGÜLTIGE HOME-POSITION soll 4 Zoll │ │ │ │ │ vom ORIGIN auf der positiven Seite entfernt sein. Wenn der Schlitten an die positive Grenze bewegt │ │ │ │ │ würde, würden wir 10 Zoll zwischen der negativen Grenze und dem negativen Auslösestift messen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 142 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.10 Spindel-Konfiguration │ │ │ │ │ Wenn Sie Spindelsignale auswählen, ist diese Seite zur Konfiguration der Spindelsteuerung verfügbar. │ │ │ │ │ Tipp │ │ │ │ │ Viele der Optionen auf dieser Seite werden nur angezeigt, wenn auf den vorherigen Seiten die richtige │ │ │ │ │ @@ -8953,15 +8953,15 @@ │ │ │ │ │ │ │ │ │ │ Abbildung 3.25: Spindelmotor/Encoder-Konfiguration │ │ │ │ │ Diese Seite ähnelt der Seite zur Konfiguration der Achsenmotoren. │ │ │ │ │ Es gibt einige Unterschiede: │ │ │ │ │ • Sofern man sich nicht für eine schrittgetriebene Spindel entschieden hat, gibt es keine Beschleunigungsoder Geschwindigkeitsbegrenzung. │ │ │ │ │ • Es gibt keine Unterstützung für Gangschaltungen oder Bereiche. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 143 / 1327 │ │ │ │ │ │ │ │ │ │ • Wenn Sie eine VCP-Spindelanzeigeoption gewählt haben, können die Skala für die Spindeldrehzahl │ │ │ │ │ und die Filtereinstellungen angezeigt werden. │ │ │ │ │ • Spindle-at-Speed ermöglicht LinuxCNC zu warten, bis die Spindel auf die gewünschte Geschwindigkeit vor dem Bewegen der Achse ist. Dies ist besonders praktisch auf Drehmaschinen mit konstantem Oberflächenvorschub und große Geschwindigkeit Durchmesseränderungen. Es erfordert │ │ │ │ │ entweder Encoder-Feedback oder eine digitale Spindel-at-Speed-Signal in der Regel zu einem VFDAntrieb verbunden. │ │ │ │ │ @@ -8977,26 +8977,26 @@ │ │ │ │ │ Dies ermöglicht die Einstellung von HALUI-Befehlen und das Laden von ClassicLadder- und BeispielSPS-Programme. Wenn Sie GladeVCP-Optionen ausgewählt haben, z. B. zum Nullstellen der Achse, │ │ │ │ │ werden Befehle angezeigt. Im Kapitel HALUI finden Sie weitere Informationen zur Verwendung benutzerdefinierter halcmds. Es gibt mehrere Optionen für Kontaktplanprogramme. Das Notaus (engl. │ │ │ │ │ E-stop)-Programm ermöglicht es einem externen Notaus-Schalter oder dem GUI-Frontend, ein Notaus auszulösen. Es verfügt auch über ein zeitgesteuertes Schmiermittelpumpensignal. Das Z-AutoTouch-Off-Programm verfügt über eine Touch-Off-Platte, die GladeVCP-Touch-Off-Taste und spezielle │ │ │ │ │ HALUI-Befehle, um den aktuellen Benutzerursprung auf Null zu setzen und schnell zu löschen. Das │ │ │ │ │ serielle Modbus-Programm ist im Grunde eine leere Programmvorlage, die ClassicLadder für seriellen │ │ │ │ │ Modbus einrichtet. Siehe das Kapitel > im Handbuch. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 144 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.26: PnCconf, erweiterte Optionen │ │ │ │ │ │ │ │ │ │ 3.2.12 HAL-Komponenten │ │ │ │ │ Auf dieser Seite können Sie zusätzliche HAL-Komponenten hinzufügen, die Sie für benutzerdefinierte │ │ │ │ │ HAL-Dateien benötigen. Auf diese Weise sollte man die Haupt-HAL-Datei nicht von Hand bearbeiten │ │ │ │ │ müssen, aber dennoch die vom Benutzer benötigten Komponenten bei der Konfiguration berücksichtigen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 145 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 3.27: HAL-Komponenten │ │ │ │ │ Die erste Auswahl sind Komponenten, die PnCconf intern verwendet. Sie können pncconf so konfigurieren, dass zusätzliche Instanzen der Komponenten für Ihre eigene HAL-Datei geladen werden. │ │ │ │ │ Wählen Sie die Anzahl der Instanzen, die Ihre benutzerdefinierte Datei benötigt, PnCconf fügt die │ │ │ │ │ benötigten Instanzen danach hinzu. │ │ │ │ │ @@ -9004,15 +9004,15 @@ │ │ │ │ │ letzte verwenden. │ │ │ │ │ Benutzerdefinierte Komponenten-Befehle │ │ │ │ │ Mit dieser Auswahl können Sie HAL-Komponenten laden, die PnCconf nicht verwendet. Fügen │ │ │ │ │ Sie den Befehl loadrt oder loadusr unter der Überschrift loading command hinzu. Fügen Sie den │ │ │ │ │ Befehl addf unter der Überschrift Thread-Befehl hinzu. Die Komponenten werden dem Thread │ │ │ │ │ zwischen dem Lesen von Eingaben und dem Schreiben von Ausgaben in der Reihenfolge hinzugefügt, in der Sie sie im Befehl ”thread” schreiben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 146 / 1327 │ │ │ │ │ │ │ │ │ │ 3.2.13 PnCconf für Fortgeschrittene │ │ │ │ │ PnCconf ist bestrebt, flexible Anpassungen durch den Benutzer zu ermöglichen. PnCconf unterstützt │ │ │ │ │ benutzerdefinierte Signalnamen, benutzerdefiniertes Laden von Komponenten, benutzerdefinierte HALDateien und benutzerdefinierte Firmware. │ │ │ │ │ Es gibt auch Signalnamen, die PnCconf immer bereitstellt, unabhängig von den gewählten Optionen │ │ │ │ │ @@ -9038,15 +9038,15 @@ │ │ │ │ │ GPIO-Pins werden einfach mit dem eingegebenen Signalnamen verbunden │ │ │ │ │ Auf diese Weise kann man sich mit diesen Signalen in den benutzerdefinierten HAL-Dateien verbinden │ │ │ │ │ und hat trotzdem die Möglichkeit, sie später zu verschieben. │ │ │ │ │ Benutzerdefinierte Signalnamen │ │ │ │ │ Die Seite mit HAL Komponenten kann verwendet werden, um Komponenten zu laden, die ein │ │ │ │ │ Benutzer für die Anpassung benötigt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 147 / 1327 │ │ │ │ │ │ │ │ │ │ Laden der benutzerdefinierten Firmware │ │ │ │ │ PnCconf sucht auf dem System nach Firmware und sucht dann nach der XML-Datei, die es in das │ │ │ │ │ konvertieren kann, was es versteht. Diese XML-Dateien werden nur für offiziell freigegebene │ │ │ │ │ Firmware vom LinuxCNC-Team bereitgestellt. Um benutzerdefinierte Firmware zu verwenden, │ │ │ │ │ @@ -9065,15 +9065,15 @@ │ │ │ │ │ • custom.hal ist für HAL-Befehle, die nicht nach dem Laden des GUI-Frontends ausgeführt werden müssen. Es wird diese erst nach der HAL-Datei mit dem Konfigurationsnamen ausgeführt. │ │ │ │ │ • custom_postgui.hal ist für Befehle gedacht, die ausgeführt werden müssen, nachdem AXIS │ │ │ │ │ geladen wurde oder eine eigenständige PyVCP-Anzeige geladen wurde. │ │ │ │ │ • custom_gvcp.hal ist für Befehle, die ausgeführt werden müssen, nachdem GladeVCP geladen │ │ │ │ │ wurde. │ │ │ │ │ • shutdown.hal ist für Befehle, die ausgeführt werden, wenn LinuxCNC kontrolliert herunterfährt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 148 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 4 │ │ │ │ │ │ │ │ │ │ Konfiguration │ │ │ │ │ 4.1 Integrator-Konzepte │ │ │ │ │ @@ -9093,15 +9093,15 @@ │ │ │ │ │ • /home/fred/linuxcnc/nc_files │ │ │ │ │ • /home/fred/linuxcnc/configs/mill │ │ │ │ │ – /home/fred/linuxcnc/configs/mill/mill.ini │ │ │ │ │ – /home/fred/linuxcnc/configs/mill/mill.hal │ │ │ │ │ – /home/fred/linuxcnc/configs/mill/mill.var │ │ │ │ │ – /home/fred/linuxcnc/configs/mill/tool.tbl │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 149 / 1327 │ │ │ │ │ │ │ │ │ │ 4.1.1.2 Befehlszeile │ │ │ │ │ Wenn Sie LinuxCNC von der Kommandozeile aus und geben Sie den Namen und den Speicherort der │ │ │ │ │ INI-Datei können die Dateispeicherorte in einem anderen Ort sein. Um die Optionen für die Ausführung von LinuxCNC von der Kommandozeile laufen linuxcnc -h. │ │ │ │ │ Anmerkung │ │ │ │ │ @@ -9133,15 +9133,15 @@ │ │ │ │ │ Software-Schrittgenerator, ob es Zeit für einen weiteren Schrittimpuls ist. Eine kürzere Periode ermöglicht es Ihnen, mehr Impulse pro Sekunde zu erzeugen, innerhalb von Grenzen. Wenn Sie jedoch │ │ │ │ │ eine zu kurze Periode wählen, verbringt Ihr Computer so viel Zeit mit der Erzeugung von Schrittimpulsen, dass alles andere langsamer wird oder vielleicht sogar zum Stillstand kommt. Die Latenzzeit │ │ │ │ │ und die Anforderungen an die Schrittmotorsteuerung beeinflussen die kürzeste Zeitspanne, die Sie │ │ │ │ │ verwenden können. │ │ │ │ │ 1 Dieser Abschnitt bezieht sich auf die Verwendung stepgen, LinuxCNCs eingebauten Schritt-Generator. Einige HardwareGeräte haben ihre eigenen Schritt-Generator und nicht mit LinuxCNC ’ s built-in ein. In diesem Fall, verweisen wir auf Ihr │ │ │ │ │ Hardware-Handbuch │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 150 / 1327 │ │ │ │ │ │ │ │ │ │ Im schlimmsten Fall treten Latenzzeiten nur ein paar Mal pro Minute auf und die Wahrscheinlichkeit, │ │ │ │ │ dass eine schlechte Latenz genau dann auftritt, wenn der Motor die Richtung ändert, ist gering. Es │ │ │ │ │ kann also zu sehr seltenen Fehlern kommen, die hin und wieder ein Teil ruinieren und bei denen eine │ │ │ │ │ Fehlerbehebung unmöglich ist. │ │ │ │ │ @@ -9177,15 +9177,15 @@ │ │ │ │ │ Servosysteme sind in der Lage, eine höhere Geschwindigkeit und Genauigkeit zu erreichen als entsprechende Schrittmachersysteme, sind aber teurer und komplexer. Im Gegensatz zu Schrittmotorensystemen benötigen Servosysteme eine Art von Positionsrückmeldung und müssen eingestellt oder getunt werden, da sie nicht wie Schrittmotorensysteme direkt nach dem Auspacken funktionieren. Diese │ │ │ │ │ Unterschiede bestehen, weil Servos ein geschlossener Regelkreis sind, im Gegensatz zu Schrittmotoren, die im Allgemeinen offener Regelkreis betrieben werden. Was bedeutet geschlossener Regelkreis? Schauen wir uns ein vereinfachtes Diagramm an, wie ein Servomotorensystem angeschlossen │ │ │ │ │ ist. │ │ │ │ │ 2 steplen refers to a parameter that adjusts the performance of LinuxCNC’s built-in step generator, stepgen, which is a HAL │ │ │ │ │ component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually. │ │ │ │ │ 3 dirhold refers to a parameter that adjusts the length of the direction hold time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 151 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 4.1: Servo Loop │ │ │ │ │ Dieses Diagramm zeigt, dass das Eingangssignal (und das Rückkopplungssignal) den Summierverstärker antreibt, der Summierverstärker den Leistungsverstärker antreibt, der Leistungsverstärker den │ │ │ │ │ Motor antreibt, der Motor die Last (und das Rückkopplungsgerät) antreibt und das Rückkopplungsgerät (und das Eingangssignal) den Motor antreibt. Dies sieht aus wie ein Kreis (eine geschlossene │ │ │ │ │ Schleife), in dem A B, B C, C D und D A steuert. │ │ │ │ │ @@ -9200,15 +9200,15 @@ │ │ │ │ │ PID steht für Proportional, Integral und Derivativ. Der Proportionalwert bestimmt die Reaktion auf │ │ │ │ │ den aktuellen Fehler, der Integralwert bestimmt die Reaktion auf der Grundlage der Summe der letzten Fehler und der Derivativwert bestimmt die Reaktion auf der Grundlage der Rate, mit der sich │ │ │ │ │ der Fehler geändert hat. Sie sind drei gemeinsame mathematische Techniken, die auf die Aufgabe, │ │ │ │ │ einen Arbeitsprozess, um einen Sollwert zu folgen angewendet werden. Im Fall von LinuxCNC ist der │ │ │ │ │ Prozess, den wir steuern wollen, die tatsächliche Achsenposition und der Sollwert ist die befohlene │ │ │ │ │ Achsenposition. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 152 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 4.2: PID-Schleife │ │ │ │ │ Durch Abstimmung der drei Konstanten im PID-Regler-Algorithmus kann der Regler eine auf die spezifischen Prozessanforderungen abgestimmte Regelwirkung erzielen. Die Reaktion des Reglers lässt │ │ │ │ │ sich beschreiben anhand des Ansprechens des Reglers auf eine Regelabweichung, des Ausmaßes, in │ │ │ │ │ dem der Regler über den Sollwert hinausschießt, und des Grades der Systemschwingung. │ │ │ │ │ @@ -9228,15 +9228,15 @@ │ │ │ │ │ korrigiert werden müssen. Der kumulierte Fehler wird dann mit der Integralverstärkung multipliziert │ │ │ │ │ und zum Reglerausgang addiert. │ │ │ │ │ Der Integral-Anteil (wenn er zum Proportional-Anteil (kurz P-Anteil) hinzugefügt wird) beschleunigt │ │ │ │ │ die Bewegung des Prozesses in Richtung Sollwert und beseitigt den verbleibenden stationären Fehler, der bei einem reinen Proportionalregler auftritt. Da der Integral-Anteil jedoch auf akkumulierte │ │ │ │ │ Fehler aus der Vergangenheit reagiert, kann er dazu führen, dass der aktuelle Wert über den Sollwert hinausschießt (den Sollwert überschreitet und dann eine Abweichung in die andere Richtung │ │ │ │ │ erzeugt). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 153 / 1327 │ │ │ │ │ │ │ │ │ │ 4.1.4.4 Differenzierender-Anteil (D-Anteil) │ │ │ │ │ Die Änderungsrate des Prozessfehlers wird berechnet, indem die Steigung des Fehlers nach der Zeit │ │ │ │ │ (d. h. seine erste Ableitung nach der Zeit) bestimmt und diese Änderungsrate mit der Ableitungsverstärkung multipliziert wird. │ │ │ │ │ Der Derivationsanteil verlangsamt die Änderungsrate des Reglerausgangs, und dieser Effekt ist in │ │ │ │ │ @@ -9263,15 +9263,15 @@ │ │ │ │ │ die beste Echtzeitleistung (RT) zu erzielen. Mit dem gepatchten RTAI-Kernel können Sie Anwendungen mit strengen Zeitvorgaben schreiben. RTAI gibt Ihnen die Möglichkeit, Dinge wie die SoftwareSchritterzeugung durchzuführen, die ein präzises Timing erfordern. │ │ │ │ │ 4.1.5.1 ACPI │ │ │ │ │ Das Advanced Configuration and Power Interface (ACPI) hat viele verschiedene Funktionen, von denen die meisten die RT-Leistung beeinträchtigen (z. B.: Energieverwaltung, CPU-Abschaltung, CPUFrequenzskalierung usw.). Der LinuxCNC-Kernel (und wahrscheinlich alle RTAI-gepatchten Kernel) │ │ │ │ │ hat ACPI deaktiviert. ACPI kümmert sich auch um das Herunterfahren des Systems, nachdem ein │ │ │ │ │ Shutdown gestartet wurde, und deshalb müssen Sie möglicherweise den Netzschalter drücken, um │ │ │ │ │ Ihren Computer vollständig auszuschalten. Die RTAI-Gruppe hat dies in den letzten Versionen verbessert, so dass sich Ihr LinuxCNC-System vielleicht doch von selbst ausschaltet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 154 / 1327 │ │ │ │ │ │ │ │ │ │ 4.2 Latenzprüfung │ │ │ │ │ 4.2.1 What is latency? │ │ │ │ │ Latency is how long it takes the PC to stop what it is doing and respond to an external request, such │ │ │ │ │ as running one of LinuxCNC’s periodic realtime threads. The lower the latency, the faster you can run │ │ │ │ │ @@ -9305,15 +9305,15 @@ │ │ │ │ │ latency-test 50000 1000000 │ │ │ │ │ │ │ │ │ │ Damit wird der Latenztest mit einer Basis-Thread-Periode von 50 µs und einer Servo-Thread-Periode │ │ │ │ │ von 1 ms gestartet. │ │ │ │ │ Die verfügbaren Optionen können Sie in der Befehlszeile eingeben: │ │ │ │ │ latency-test -h │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 155 / 1327 │ │ │ │ │ │ │ │ │ │ After starting a latency test you should see something like this: │ │ │ │ │ │ │ │ │ │ Abbildung 4.3: HAL-Latenz-Test │ │ │ │ │ Während der Test läuft, sollten Sie den Computer beschäftigen: Bewegen Sie die Fenster auf dem │ │ │ │ │ @@ -9332,15 +9332,15 @@ │ │ │ │ │ die Zahlen 100 us oder mehr (100.000 Nanosekunden) betragen, ist der PC kein guter Kandidat für │ │ │ │ │ Software-Stepping. Zahlen über 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC │ │ │ │ │ ist kein guter Kandidat für LinuxCNC, unabhängig davon, ob Sie Software-Stepping verwenden oder │ │ │ │ │ nicht. │ │ │ │ │ Anmerkung │ │ │ │ │ Wenn Sie hohe Zahlen erhalten, gibt es möglicherweise Möglichkeiten, sie zu verbessern. Ein anderer PC hatte eine sehr schlechte Latenz (mehrere Millisekunden) bei der Verwendung des OnboardVideos. Aber eine $ 5 gebrauchte Grafikkarte löste das Problem. LinuxCNC benötigt keine hochmoderne Hardware. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 156 / 1327 │ │ │ │ │ │ │ │ │ │ Weitere Informationen zum Stepper-Tuning finden Sie im Kapitel Stepper Tuning. │ │ │ │ │ Zusätzliche Kommandozeilen-Tools sind für die Untersuchung der Latenz verfügbar wenn │ │ │ │ │ LinuxCNC nicht läuft. │ │ │ │ │ 4.2.2.2 Latency Plot │ │ │ │ │ @@ -9364,15 +9364,15 @@ │ │ │ │ │ 4.2.2.3 Latenz-Histogramm │ │ │ │ │ latency-histogram zeigt ein Histogramm der Latenz (Jitter) für einen Basis- und einen Servo-Thread │ │ │ │ │ an. │ │ │ │ │ Usage: │ │ │ │ │ latency-histogram --help | -? │ │ │ │ │ latency-histogram [Options] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 157 / 1327 │ │ │ │ │ │ │ │ │ │ Optionen: │ │ │ │ │ --base ns (Basisgewindeintervall, Voreinstellung: 25000, min: 5000) │ │ │ │ │ --servo ns (Servo-Thread-Intervall, Voreinstellung: 1000000, Mindestwert: 25000) │ │ │ │ │ --bbinsize ns (Basis-Bin-Größe, Voreinstellung: 100 │ │ │ │ │ @@ -9395,15 +9395,15 @@ │ │ │ │ │ │ │ │ │ │ Abbildung 4.5: Latenz-Histogramm-Fenster │ │ │ │ │ │ │ │ │ │ 4.2.3 Latency tuning │ │ │ │ │ LinuxCNC can run on many different hardware platforms and with many different realtime kernels, │ │ │ │ │ and they all may benefit from tuning for optimal latency. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 158 / 1327 │ │ │ │ │ │ │ │ │ │ A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive │ │ │ │ │ use of LinuxCNC’s realtime tasks, so that other tasks (both user programs and kernel threads) do not │ │ │ │ │ interfere with LinuxCNC’s access to those CPUs. │ │ │ │ │ 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. │ │ │ │ │ @@ -9435,15 +9435,15 @@ │ │ │ │ │ • rcu_nocbs: Prevent RCU callbacks from running on these CPUs. │ │ │ │ │ • rcu_nocb_poll: Poll for RCU callbacks instead of using sleep/wake. │ │ │ │ │ • nohz_full: Disable clock tick on these CPUs. │ │ │ │ │ Sysctl │ │ │ │ │ Details here: https://www.kernel.org/doc/html/latest/scheduler/sched-rt-group.html │ │ │ │ │ • sysctl.kernel.sched_rt_runtime_us: Set to -1 to remove the limit on how much time realtime tasks may use. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 159 / 1327 │ │ │ │ │ │ │ │ │ │ 4.3 Stepper-Abstimmung │ │ │ │ │ 4.3.1 Das Beste aus Software Stepping herausholen │ │ │ │ │ Die Erzeugung von Schrittimpulsen in der Software hat einen sehr großen Vorteil - sie ist kostenlos. │ │ │ │ │ Nahezu jeder PC verfügt über eine parallele Schnittstelle, die in der Lage ist, die von der Software │ │ │ │ │ @@ -9476,15 +9476,15 @@ │ │ │ │ │ Software-Stepping. Zahlen über 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC │ │ │ │ │ ist kein guter Kandidat für LinuxCNC, unabhängig davon, ob Sie Software-Stepping verwenden oder │ │ │ │ │ nicht. │ │ │ │ │ Beachten Sie, dass, wenn Sie hohe Zahlen erhalten, es Möglichkeiten geben kann, sie zu verbessern. │ │ │ │ │ Zum Beispiel hatte ein PC eine sehr schlechte Latenz (mehrere Millisekunden), wenn er das OnboardVideo verwendete. Aber eine $ 5 gebrauchte Grafikkarte löste das Problem - LinuxCNC benötigt keine │ │ │ │ │ modernste Hardware. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 160 / 1327 │ │ │ │ │ │ │ │ │ │ 4.3.1.2 Finden Sie heraus, was Ihre Antriebe erwarten │ │ │ │ │ Verschiedene Marken von Schrittmotorantrieben haben unterschiedliche Zeitanforderungen an ihre │ │ │ │ │ Schritt- und Richtungseingänge. Sie müssen also das Datenblatt mit den technischen Daten Ihres │ │ │ │ │ Antriebs heraussuchen (oder danach googeln). │ │ │ │ │ @@ -9520,15 +9520,15 @@ │ │ │ │ │ dass alle Änderungen an den STEP- und DIR-Leitungen durch 20 µs getrennt sind. Alles ist gut, oder? │ │ │ │ │ Falsch! Wenn es NULL Latenz gäbe, dann wären alle Kanten durch 20 µs getrennt, und alles wäre │ │ │ │ │ in Ordnung. Aber alle Computer haben eine gewisse Latenz, d.h. mit Verzögerung. Wenn der Computer eine Latenz von 11 µs hat, bedeutet das, dass die Software manchmal 11 µs später läuft, als │ │ │ │ │ sie eigentlich sollte. Wenn ein Durchlauf der Software 11 µs zu spät ist und der nächste pünktlich erfolgt, beträgt die Verzögerung vom ersten zum zweiten Durchlauf nur 9 µs. Wenn der erste Durchlauf │ │ │ │ │ einen Schrittimpuls erzeugte und der zweite das Richtungsbit änderte, haben Sie gerade die G202Haltezeitanforderung von 20 µs verletzt. Das bedeutet, dass Ihr Antrieb möglicherweise einen Schritt │ │ │ │ │ in die falsche Richtung gemacht hat, und Ihr Teil hat die falsche Größe. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 161 / 1327 │ │ │ │ │ │ │ │ │ │ Das wirklich Unangenehme an diesem Problem ist, dass es sehr selten auftreten kann. Im schlimmsten │ │ │ │ │ Fall treten Latenzen nur ein paar Mal pro Minute auf, und die Wahrscheinlichkeit, dass eine schlechte │ │ │ │ │ Latenz genau dann auftritt, wenn der Motor die Richtung ändert, ist gering. So kommt es zu sehr │ │ │ │ │ seltenen Fehlern, die hin und wieder ein Werkstück ruinieren und eine Fehlerbehebung unmöglich │ │ │ │ │ @@ -9571,15 +9571,15 @@ │ │ │ │ │ das, was uns zwingt, eine langsame 31 µs Periode zu verwenden. Aber die LinuxCNC Software-SchrittGenerator hat einige Parameter, mit denen Sie die verschiedenen Zeit von einer Periode auf mehrere │ │ │ │ │ zu erhöhen. Zum Beispiel, wenn steplen von 1 auf 2 geändert wird, dann wird es zwei Perioden zwischen dem Beginn und dem Ende des Schrittimpulses sein. Wenn dirhold von 1 auf 3 geändert wird, │ │ │ │ │ liegen mindestens drei Perioden zwischen dem Schrittimpuls und einem Wechsel des Richtungspins. │ │ │ │ │ Wenn wir dirhold verwenden können, um die Anforderung von 20 µs Haltezeit zu erfüllen, dann ist die │ │ │ │ │ nächstlängere Zeit die 4,5 µs ”high time”. Addiert man die Latenzzeit von 11 µs zu der ”high-time” von │ │ │ │ │ 4,5 µs, so erhält man eine Mindestzeit von 15,5 µs. Wenn Sie 15,5 µs ausprobieren, stellen Sie fest, │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 162 / 1327 │ │ │ │ │ │ │ │ │ │ dass der Computer zu träge ist, also entscheiden Sie sich für 16 µs. Wenn wir dirhold auf 1 belassen │ │ │ │ │ (die Voreinstellung), dann ist die Mindestzeit zwischen Schritt und Richtung die 16 µs Periode minus │ │ │ │ │ die 11 µs Latenzzeit = 5 µs, was nicht ausreicht. Wir brauchen weitere 15 µs. Da die Periode 16 µs │ │ │ │ │ beträgt, brauchen wir eine weitere Periode. Also ändern wir dirhold von 1 auf 2. Jetzt beträgt die │ │ │ │ │ @@ -9614,15 +9614,15 @@ │ │ │ │ │ • Variablen │ │ │ │ │ Jedes dieser Elemente wird in einzelnen Zeilen getrennt. Jedes Zeilenende oder Zeilenumbruchzeichen erzeugt ein neues Element. │ │ │ │ │ 4.4.1.1 Kommentare │ │ │ │ │ Eine Kommentarzeile wird mit einem ; oder einem # eingeleitet. Wenn der INI-Leser eines dieser │ │ │ │ │ Zeichen am Anfang einer Zeile sieht, wird der Rest der Zeile von der Software ignoriert. Kommentare │ │ │ │ │ können verwendet werden, um zu beschreiben, was ein INI-Element tun wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 163 / 1327 │ │ │ │ │ │ │ │ │ │ ; Dies ist die Konfigurationsdatei meiner Fräsmaschine │ │ │ │ │ # Ich habe sie am 12. Januar 2012 eingerichtet. │ │ │ │ │ │ │ │ │ │ Kommentare können auch zum Ausschalten einer Variable verwendet werden. Das macht es einfacher, │ │ │ │ │ @@ -9654,15 +9654,15 @@ │ │ │ │ │ • [APPLICATIONS] Andere Anwendungen, die von LinuxCNC gestartet werden sollen │ │ │ │ │ • [TRAJ] zusätzliche Einstellungen, die von der Echtzeit-Bewegungssteuerung verwendet werden │ │ │ │ │ • [JOINT_n] einzelne Gelenkvariablen │ │ │ │ │ • [AXIS_l] einzelne Achsenvariablen │ │ │ │ │ • [KINS] Variablen für die Kinematik │ │ │ │ │ • [EMCIO] vom E/A-Controller verwendete Einstellungen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 164 / 1327 │ │ │ │ │ │ │ │ │ │ 4.4.1.3 Variablen │ │ │ │ │ Eine Variablenzeile besteht aus einem Variablennamen, einem Gleichheitszeichen (=) und einem Wert. │ │ │ │ │ Als Wert wird alles vom ersten nicht-weißen Leerzeichen nach dem = bis zum Ende der Zeile übergeben, so dass Sie Leerzeichen in Stringsymbole einbetten können, wenn Sie dies wollen oder müssen. │ │ │ │ │ Ein Variablenname wird oft auch als Schlüsselwort bezeichnet. │ │ │ │ │ @@ -9703,15 +9703,15 @@ │ │ │ │ │ und die Variablen in die INI-Datei ein. │ │ │ │ │ Beispiel für einen benutzerdefinierten Abschnitt │ │ │ │ │ [PROBE] │ │ │ │ │ Z_FEEDRATE = 50 │ │ │ │ │ Z_OFFSET = 12 │ │ │ │ │ Z_SAFE_DISTANCE = -10 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 165 / 1327 │ │ │ │ │ │ │ │ │ │ Um die benutzerdefinierten Variablen in Ihrer HAL-Datei zu verwenden, setzen Sie den Abschnitt und │ │ │ │ │ den Variablennamen an die Stelle des Wertes. │ │ │ │ │ HAL Beispiel │ │ │ │ │ setp offset.1.offset [PROBE]Z_OFFSET │ │ │ │ │ @@ -9746,15 +9746,15 @@ │ │ │ │ │ #INCLUDE ../parallel/joint_1.inc │ │ │ │ │ #INCLUDE below/joint_2.inc │ │ │ │ │ #INCLUDE /home/myusername/myincludes/display.inc │ │ │ │ │ #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc │ │ │ │ │ │ │ │ │ │ Die #INCLUDE-Direktiven werden nur für eine Erweiterungsebene unterstützt - eine bereits inkludierte Datei darf keine weiteren Dateien einschließen. Die empfohlene Dateierweiterung ist .inc. Verwenden Sie nicht die Dateierweiterung .ini für eingeschlossene Dateien. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 166 / 1327 │ │ │ │ │ │ │ │ │ │ 4.4.2 INI-Datei Abschnitte │ │ │ │ │ 4.4.2.1 [EMC] Abschnitt │ │ │ │ │ • VERSION = 1.1 - Die Versionsnummer für die Konfiguration. Jeder andere Wert als 1.1 führt dazu, │ │ │ │ │ dass die Konfigurationsprüfung ausgeführt wird und versucht, die Konfiguration auf den neuen Typ │ │ │ │ │ @@ -9781,15 +9781,15 @@ │ │ │ │ │ Das obige Beispiel füllt mit Nullen auf, zeigt 6 Dezimalstellen an und erzwingt die Anzeige eines │ │ │ │ │ +-Zeichens für positive Zahlen. Die Formatierung folgt der Python-Praxis. https://docs.python.org/2/library/string.html#format-specification-mini-language gibt einen Fehler aus, wenn das Format │ │ │ │ │ keine Fließkommazahlen akzeptieren kann. │ │ │ │ │ • DRO_FORMAT_IN = % 4.1f - Überschreibt die Standard-DRO-Formatierung im imperialen Modus │ │ │ │ │ (normalerweise 4 Dezimalstellen, aufgefüllt mit Leerzeichen auf 6 Ziffern nach links) - das obige Beispiel zeigt nur eine Dezimalstelle an. Die Formatierung folgt der Python-Praxis. https://docs.python.org/2/library/string.html#format-specification-mini-language Ein Fehler wird ausgelöst, wenn das Format keine Fließkommazahlen akzeptieren kann. │ │ │ │ │ • CONE_BASESIZE = .25 - Überschreibt die Standardkegel-/Werkzeugbasisgröße von .5 in der Grafikanzeige │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 167 / 1327 │ │ │ │ │ │ │ │ │ │ • MAX_FEED_OVERRIDE = 1.2 - Der maximale Vorschub-Override, den der Benutzer auswählen │ │ │ │ │ kann. Der Wert 1.2 (bitte mit Dezimalpunkt, nicht Komma) bedeutet 120% des programmierten │ │ │ │ │ Vorschubs. │ │ │ │ │ • MIN_SPINDLE_OVERRIDE = 0.5 - Der minimale Spindel-Override, den der Benutzer auswählen │ │ │ │ │ @@ -9820,15 +9820,15 @@ │ │ │ │ │ • PROGRAM_PREFIX = ~/linuxcnc/nc_files - Der Standardspeicherort für G-Code-Dateien und der │ │ │ │ │ Speicherort für benutzerdefinierte M-Codes. Dieser Speicherort wird nach dem Dateinamen vor │ │ │ │ │ dem Unterprogramm-Pfad und dem Benutzer-M-Pfad durchsucht, wenn er im Abschnitt [RS274NGC] │ │ │ │ │ angegeben wurde. │ │ │ │ │ • INTRO_GRAPHIC = emc2.gif - Das Bild, das auf dem Begrüßungsbildschirm angezeigt wird. │ │ │ │ │ • INTRO_TIME = 5 - Die maximale Zeit zur Anzeiges des Startbildschirms, in Sekunden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 168 / 1327 │ │ │ │ │ │ │ │ │ │ • CYCLE_TIME = 100 - Zykluszeit der Anzeige-GUI. Je nach Bildschirm kann dies in Sekunden oder │ │ │ │ │ ms (bevorzugt ms) angegeben werden. Dies ist oft die Aktualisierungsrate und nicht die Ruhezeit │ │ │ │ │ zwischen den Aktualisierungen. Wenn die Aktualisierungszeit nicht richtig eingestellt ist, kann der │ │ │ │ │ Bildschirm nicht mehr reagieren oder sehr ruckartig werden. Ein Wert von 100 ms (0,1 Sekunden) │ │ │ │ │ @@ -9863,15 +9863,15 @@ │ │ │ │ │ • GRIDS = 10 mm, 1 in, … - Definiert die voreingestellten Werte für Gitterlinien. Der Wert wird auf │ │ │ │ │ die gleiche Weise interpretiert wie INCREMENTS. │ │ │ │ │ • OPEN_FILE = /full/path/to/file.ngc - Die Datei, die beim Start von AXIS in der Vorschau angezeigt │ │ │ │ │ wird. Verwenden Sie eine leere Zeichenkette ””, wird beim Start keine Datei geladen. gmoccapy │ │ │ │ │ verwendet diese Einstellung nicht, da es einen entsprechenden Eintrag auf seiner Einstellungsseite │ │ │ │ │ anbietet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 169 / 1327 │ │ │ │ │ │ │ │ │ │ • EDITOR = gedit - Der Editor, der verwendet werden soll, wenn Sie Datei > Bearbeiten wählen, um │ │ │ │ │ den G-Code im Menü AXIS zu bearbeiten. Dieser muss konfiguriert werden, damit dieser Menüpunkt │ │ │ │ │ funktioniert. Ein anderer gültiger Eintrag ist gnome-terminal -e vim. Dieser Eintrag gilt nicht für │ │ │ │ │ gmoccapy, da gmoccapy einen integrierten Editor hat. │ │ │ │ │ @@ -9913,15 +9913,15 @@ │ │ │ │ │ 11. Experimental: If the ”!’ character is included in the GEOMETRY string, display points for A, │ │ │ │ │ B, C rotations respect the X, Y, Z offsets set by G5x, G92 codes. Example: using GEOMETRY = │ │ │ │ │ !CXZ for a machine with [TRAJ]COORDINATES=XZC. This provision applies for liveplots only — │ │ │ │ │ Gcode previews should be done with zero G5x, G92 offsets. This can be facilitated by setting │ │ │ │ │ offsets in programs only when task is running as indicated by #<_task> == 1. If nonzero offsets │ │ │ │ │ exist at startup due to persistence, offsets should be zeroed and preview reloaded. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 170 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Ist keine [DISPLAY]GEOMETRY in der INI-Datei beschrieben, wird ein Standardwert durch das │ │ │ │ │ [DISPLAY]DISPLAY-GUI-Programm bereitgestellt (normalerweise ”XYZABCUVW”) │ │ │ │ │ • ARCDIVISION = 64 - Legt die Qualität der Vorschau von Bögen fest. Bögen werden in der Vorschau │ │ │ │ │ @@ -9954,15 +9954,15 @@ │ │ │ │ │ Abschnitt [FILTER] der INI-Datei steuert, wie die Filter funktionieren. Schreiben Sie zunächst für │ │ │ │ │ jeden Dateityp eine PROGRAM_EXTENSION-Zeile. Dann geben Sie das Programm an, das für jeden │ │ │ │ │ Dateityp ausgeführt werden soll. Dieses Programm erhält den Namen der Eingabedatei als erstes │ │ │ │ │ Argument und muss RS274NGC-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was │ │ │ │ │ im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und dann auch von LinuxCNC │ │ │ │ │ ausgeführt wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 171 / 1327 │ │ │ │ │ │ │ │ │ │ • PROGRAM_EXTENSION = .extension Beschreibung │ │ │ │ │ Wenn Ihr Postprozessor Dateien in Großbuchstaben ausgibt, sollten Sie die folgende Zeile hinzufügen: │ │ │ │ │ PROGRAM_EXTENSION = .NGC XYZ Post Processor │ │ │ │ │ │ │ │ │ │ @@ -10004,15 +10004,15 @@ │ │ │ │ │ words = line.rstrip(’\n’) │ │ │ │ │ words = words.split(’ ’) │ │ │ │ │ newword = ’’ │ │ │ │ │ for i in words: │ │ │ │ │ if i[0] == ’Z’: │ │ │ │ │ newword = ’W’+ i[1:] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 172 / 1327 │ │ │ │ │ │ │ │ │ │ if len(newword) > 0: │ │ │ │ │ words.append(newword) │ │ │ │ │ newline = ’ ’.join(words) │ │ │ │ │ file_out.append(newline) │ │ │ │ │ @@ -10044,15 +10044,15 @@ │ │ │ │ │ Es wird nach jeder möglichen benutzerdefinierten Funktion gesucht, typischerweise (M100-M199). │ │ │ │ │ Die Reihenfolge der Suche ist: │ │ │ │ │ 1. [ANZEIGE]PROGRAM_PREFIX (falls angegeben) │ │ │ │ │ 2. Wenn [DISPLAY]PROGRAM_PREFIX nicht angegeben ist, wird der Standardspeicherort gesucht: nc_files │ │ │ │ │ 3. Dann wird jedes Verzeichnis in der Liste [RS274NGC]USER_M_PATH durchsucht │ │ │ │ │ Für jeden M1xx wird der erste bei der Suche gefundene ausführbare M1xx verwendet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 173 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Die maximale Anzahl der USER_M_PATH-Verzeichnisse wird zur Kompilierzeit festgelegt (typ: │ │ │ │ │ USER_DEFINED_FUNCTION_MAX_DIRS == 5). │ │ │ │ │ │ │ │ │ │ @@ -10090,15 +10090,15 @@ │ │ │ │ │ Anmerkung │ │ │ │ │ [WIZARD]WIZARD_ROOT ist ein gültiger Suchpfad, aber der Assistent ist noch nicht vollständig implementiert und die Ergebnisse seiner Verwendung sind unvorhersehbar. │ │ │ │ │ │ │ │ │ │ • LOG_LEVEL = 0, Default 0, Bestimmt log_level (Voreinstellung: -1) │ │ │ │ │ • LOG_FILE = file-name.log Zur Angabe der Datei, die für die Protokollierung der Daten verwendet │ │ │ │ │ wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 174 / 1327 │ │ │ │ │ │ │ │ │ │ • REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure Siehe das Remap Erweiterung von │ │ │ │ │ G-Code Kapitel für Details. │ │ │ │ │ • ON_ABORT_COMMAND=O call Siehe das Remap Erweiterung von G-Code Kapitel für │ │ │ │ │ Details. │ │ │ │ │ @@ -10129,15 +10129,15 @@ │ │ │ │ │ • HALFILE = example.hal - Führt die Datei example.hal beim Start aus. │ │ │ │ │ HALFILE = example.hal - Führt die Datei example.hal beim Starten aus. Wenn HALFILE mehrfach angegeben wird, werden die Dateien in der Reihenfolge ausgeführt, in der sie in der INI-Datei │ │ │ │ │ stehen. Fast alle Konfigurationen haben mindestens eine HALFILE, und Steppersysteme haben typischerweise zwei solcher Dateien, eine zur Spezifikation der allgemeinen Stepperkonfiguration │ │ │ │ │ (core_stepper.hal) und eine für die Beschreibung der Pinbelegung der Maschine (xxx_pinout.hal). │ │ │ │ │ HALFILES werden durch eine Suche gefunden. Wenn die benannte Datei in dem Verzeichnis gefunden wird, das die INI-Datei enthält, wird sie verwendet. Wird die benannte Datei nicht in diesem │ │ │ │ │ INI-Dateiverzeichnis gefunden, wird eine Systembibliothek mit HAL-Dateien durchsucht. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 175 / 1327 │ │ │ │ │ │ │ │ │ │ Wenn LinuxCNC mit dem Skript linuxcnc unter Verwendung der Option ”-H dirname” gestartet │ │ │ │ │ wird, dann wird der angegebene Verzeichnisname der oben beschriebenen Suche vorangestellt, so │ │ │ │ │ dass ”dirname” zuerst durchsucht wird. Die Option ”-H dirname” kann mehr als einmal angegeben │ │ │ │ │ werden, die Verzeichnisse werden in der Reihenfolge vorangestellt. │ │ │ │ │ @@ -10170,15 +10170,15 @@ │ │ │ │ │ verbose bewirkt die Ausgabe von Details auf stdout. Das Schlüsselwort nodelete bewahrt temporäre │ │ │ │ │ Dateien in /tmp. │ │ │ │ │ Weitere Informationen finden Sie im Kapitel HAL TWOPASS. │ │ │ │ │ • HALCMD = command - Führt command als einzelnen HAL-Befehl aus. Wenn HALCMD mehrfach │ │ │ │ │ angegeben wird, werden die Befehle in der Reihenfolge ausgeführt, in der sie in der INI-Datei │ │ │ │ │ erscheinen. HALCMD Zeilen werden nach allen HALFILE Zeilen ausgeführt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 176 / 1327 │ │ │ │ │ │ │ │ │ │ • SHUTDOWN = shutdown.hal - Führt die Datei shutdown.hal aus, wenn LinuxCNC beendet wird. │ │ │ │ │ Abhängig von den verwendeten Hardware-Treibern, kann dies es möglich machen, Ausgänge auf │ │ │ │ │ definierte Werte zu setzen, wenn LinuxCNC normal beendet wird. Da es jedoch keine Garantie dafür │ │ │ │ │ gibt, dass diese Datei ausgeführt wird (z.B. im Falle eines Computerabsturzes), ist sie kein Ersatz │ │ │ │ │ @@ -10211,15 +10211,15 @@ │ │ │ │ │ │ │ │ │ │ – Alternativ kann auch eine Watchlist-Datei mit einem vollständigen Pfadnamen angegeben werden: │ │ │ │ │ APP = halshow ~/saved_shows/spindle.halshow │ │ │ │ │ │ │ │ │ │ – Öffnen Sie halscope mit einer zuvor gespeicherten Konfiguration: │ │ │ │ │ APP = halscope -i my.halscope │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 177 / 1327 │ │ │ │ │ │ │ │ │ │ 4.4.2.10 Abschnitt [TRAJ] │ │ │ │ │ Warnung │ │ │ │ │ Die neue Trajectorien Planer (TP) (engl. trajectory planner) ist standardmäßig aktiv. Wenn Sie │ │ │ │ │ keine TP-Einstellungen in Ihrem [TRAJ]-Abschnitt haben - LinuxCNC standardmäßig auf: │ │ │ │ │ @@ -10262,15 +10262,15 @@ │ │ │ │ │ # t_c = Servoperiode (Sekunden) │ │ │ │ │ │ │ │ │ │ Wenn Sie eine Bahn mit 1 IPS = 60 IPM fahren wollen und Ihre Servoperiode 0,001 Sekunden beträgt, dann verlangsamen alle Segmente, die kürzer als min_length sind, die Bahn. Wenn Sie die │ │ │ │ │ Naive CAM-Toleranz auf etwa diese Mindestlänge einstellen, werden zu kurze Segmente zusammengefasst, um diesen Engpass zu beseitigen. Wenn Sie die Toleranz zu hoch einstellen, bedeutet │ │ │ │ │ das natürlich große Pfadabweichungen, so dass Sie ein wenig damit spielen müssen, um einen guten Wert zu finden. Ich würde mit 1/2 der Mindestlänge beginnen und dann nach Bedarf erhöhen. │ │ │ │ │ * ARC_BLEND_GAP_CYCLES = 4 Wie kurz das vorherige Segment sein muss, bevor es vom Trajektorienplaner verbraucht wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 178 / 1327 │ │ │ │ │ │ │ │ │ │ Bei einer Kreisbogenüberblendung bleiben oft kurze Liniensegmente zwischen den Überblendungen übrig. Da die Geometrie kreisförmig sein muss, können wir nicht eine ganze Linie überblenden, │ │ │ │ │ wenn die nächste etwas kürzer ist. Da der Trajektorienplaner jedes Segment mindestens einmal │ │ │ │ │ berühren muss, bedeutet dies, dass sehr kleine Segmente die Dinge erheblich verlangsamen. Meine Lösung für dieses Problem besteht darin, das kurze Segment zu ”verbrauchen”, indem ich es │ │ │ │ │ zu einem Teil des Überblendungsbogens mache. Da die Linie und die Überblendung ein einziges │ │ │ │ │ @@ -10309,15 +10309,15 @@ │ │ │ │ │ einen Achsennamen mehr als einmal zu schreiben (z.B. X Y Y Z für eine Gantry-Maschine). Bei │ │ │ │ │ der üblichen trivkins-Kinematik werden die Gelenknummern der Reihe nach gemäß dem trivkinsParameter coordinates= vergeben. Für trivkins coordinates=xz entspricht joint0 also X und joint1 │ │ │ │ │ entspricht Z. Informationen zu trivkins und anderen Kinematikmodulen finden Sie in der Manpage │ │ │ │ │ Kinematics ($ man kins). │ │ │ │ │ • LINEAR_UNITS = - Gibt die Maschineneinheiten für lineare Achsen an. Mögliche Auswahlen sind mm oder inch (engl. für Zoll). Dies hat keinen Einfluss auf die linearen Einheiten im │ │ │ │ │ NC-Code (die Wörter G20 und G21 tun dies). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 179 / 1327 │ │ │ │ │ │ │ │ │ │ • ANGULAR_UNITS = - Specifies the machine units for rotational axes. Possible choices are │ │ │ │ │ deg, degree (360 per circle), rad, radian (2*π per circle), grad, or gon (400 per circle). This does │ │ │ │ │ not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in │ │ │ │ │ degrees. │ │ │ │ │ @@ -10350,15 +10350,15 @@ │ │ │ │ │ • TPMOD = alternate_trajectory_planning Modul [tp_parms=Wert] │ │ │ │ │ Die TPMOD-Variable ist optional. Falls angegeben, verwenden Sie ein angegebenes (benutzerdefiniertes) Modul anstelle des Standardmoduls (tpmod). Modulparameter (tp_parms) können enthalten │ │ │ │ │ sein, wenn sie vom benannten Modul unterstützt werden. Die Einstellung kann über die Befehlszeile │ │ │ │ │ mit der Option -t ($ linuxcnc -h) überschrieben werden. │ │ │ │ │ • NO_PROBE_JOG_ERROR = 0 - Erlaubt die Umgehung der Prüfung, ob der Fühler ausgelöst hat, │ │ │ │ │ wenn Sie manuell joggen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 180 / 1327 │ │ │ │ │ │ │ │ │ │ • NO_PROBE_HOME_ERROR = 0 - Erlaubt die Umgehung der Prüfung, ob die Sonde ausgelöst wurde, │ │ │ │ │ während die Referenzfahrt läuft. │ │ │ │ │ 4.4.2.11 [KINS] Abschnitt │ │ │ │ │ • JOINTS = 3 - Gibt die Anzahl der Gelenke (Motoren) im System an. Eine Trivkins XYZ-Maschine mit │ │ │ │ │ @@ -10395,15 +10395,15 @@ │ │ │ │ │ Entriegelungsstifte zu erstellen, verwenden Sie den Parameter motmod: │ │ │ │ │ unlock_joints_mask=jointmask │ │ │ │ │ │ │ │ │ │ Die Bits der Jointmaske sind: (LSB)0:joint0, 1:joint1, 2:joint2, … │ │ │ │ │ Beispiel: ”loadrt motmod … unlock_joints_mask=0x38” erzeugt Entsperrstifte für die Gelenke 3,4,5 │ │ │ │ │ • OFFSET_AV_RATIO = 0.1 - Wenn ungleich Null, aktiviert dieses Element die Verwendung von HALEingangsstiften für externe Achsen-Offsets: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 181 / 1327 │ │ │ │ │ │ │ │ │ │ axis..eoffset-enable │ │ │ │ │ axis..eoffset-count │ │ │ │ │ axis..eoffset-scale │ │ │ │ │ │ │ │ │ │ @@ -10433,15 +10433,15 @@ │ │ │ │ │ • UNITS = INCH - Falls angegeben, hat diese Einstellung Vorrang vor der zugehörigen [TRAJ]-EinheitEinstellung. (z.B. [TRAJ]LINEAR_UNITS wenn der TYP dieses Gelenks LINEAR ist, [TRAJ]ANGULAR_UNIT │ │ │ │ │ wenn der TYP dieses Gelenks ANGULAR ist) │ │ │ │ │ • MAX_VELOCITY = 1.2 - Maximale Geschwindigkeit für dieses Gelenk in Maschineneinheiten pro │ │ │ │ │ Sekunde. │ │ │ │ │ • MAX_ACCELERATION = 20.0 - Maximale Beschleunigung für diese Achse in Maschineneinheiten │ │ │ │ │ pro Sekunde zum Quadrat. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 182 / 1327 │ │ │ │ │ │ │ │ │ │ • BACKLASH = 0.0000 - Umkehrspiel in Maschineneinheiten. Der Kompensationswert für das Spiel │ │ │ │ │ kann verwendet werden, um kleine Unzulänglichkeiten in der zum Antrieb eines Gelenks verwendeten Hardware auszugleichen. Wenn das Spiel zu einem Gelenk hinzugefügt wird und Sie Schrittmotoren verwenden, muss STEPGEN_MAXACCEL auf das 1,5- bis 2-fache der MAX_ACCELERATION │ │ │ │ │ für das Gelenk erhöht werden. Ein übermäßiger Spielausgleich kann dazu führen, dass ein Gelenk │ │ │ │ │ bei Richtungsänderungen ruckelt. Wenn ein COMP_FILE für ein Gelenk angegeben ist, wird BACKLASH nicht verwendet. │ │ │ │ │ @@ -10479,15 +10479,15 @@ │ │ │ │ │ • MAX_LIMIT = 1000 - Die maximale Grenze für die Gelenkbewegung in Maschineneinheiten. Wenn │ │ │ │ │ diese Grenze erreicht ist, bricht die Steuerung die Bewegung des Gelenks ab. Für ein Drehgelenk │ │ │ │ │ mit unbegrenzter Drehung, für das im Abschnitt [JOINT_N] kein MAX_LIMIT angegeben ist, wird │ │ │ │ │ der Wert 1e99 verwendet. │ │ │ │ │ Anmerkung │ │ │ │ │ Für Identitäts-Kinematiken müssen die Einstellungen [JOINT_N]MIN_LIMIT,MAX_LIMIT den entsprechenden (eins-zu-eins-identischen) [AXIS_L]-Grenzwerten entsprechen oder diese überschreiten. Diese Einstellungen werden beim Starten überprüft, wenn die trivkins-Kinematikmodule angegeben werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 183 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Die Einstellungen [JOINT_N]MIN_LIMIT, MAX_LIMIT werden beim Joggen im Gelenkmodus │ │ │ │ │ vor der Ausführung der Referenzfahrt erzwungen. Nach der Referenzfahrt werden die │ │ │ │ │ [AXIS_L]MIN_LIMIT,MAX_LIMIT-Koordinatengrenzen als Beschränkungen für die Achsenbewegung │ │ │ │ │ @@ -10521,15 +10521,15 @@ │ │ │ │ │ Sekunde. Das Vorzeichen gibt die Fahrtrichtung an. Ein Wert von Null bedeutet, dass die aktuelle Position als Ausgangsposition für die Maschine angenommen wird. Wenn Ihre Maschine keine │ │ │ │ │ Home-Schalter hat, sollten Sie diesen Wert auf Null belassen. │ │ │ │ │ • HOME_LATCH_VEL = 0.0 - Referenzfahrtgeschwindigkeit in Maschineneinheiten pro Sekunde zur │ │ │ │ │ Endschalter-Auslöse-Position. Das Vorzeichen gibt die Fahrtrichtung an. │ │ │ │ │ • HOME_FINAL_VEL = 0.0 - Geschwindigkeit in Maschineneinheiten pro Sekunde von der HomeLatch-Position zur Home-Position. Wird der Wert 0 belassen oder ist er nicht im Gelenk enthalten, │ │ │ │ │ wird die Eilgeschwindigkeit verwendet. Muss eine positive Zahl sein. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 184 / 1327 │ │ │ │ │ │ │ │ │ │ • HOME_USE_INDEX = NO - Wenn der für dieses Gelenk verwendete Encoder einen Indeximpuls hat │ │ │ │ │ und die Bewegungskarte (engl. motion card) dieses Signal vorsieht, können Sie diese Option auf ja │ │ │ │ │ setzen. Wenn dies der Fall ist, hat dies Auswirkungen auf die Art des verwendeten Referenzfahrtmusters. Gegenwärtig können Sie mit Schrittmotoren keine Referenzfahrt mit Index durchführen, │ │ │ │ │ es sei denn, Sie verwenden StepGen im Geschwindigkeitsmodus und PID. │ │ │ │ │ @@ -10563,15 +10563,15 @@ │ │ │ │ │ Für weitere Informationen über benutzerdefinierte INI-Datei-Einträge siehe den Unterabschnitt │ │ │ │ │ >. │ │ │ │ │ │ │ │ │ │ Die folgenden Elemente können von einer PID-Komponente verwendet werden, wobei davon ausgegangen wird, dass die Ausgabe in Volt erfolgt. │ │ │ │ │ • DEADBAND = 0.000015’ - Wie nah ist nah genug, um den Motor als in Position zu betrachten, in │ │ │ │ │ machine units. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 185 / 1327 │ │ │ │ │ │ │ │ │ │ Dies wird oft auf einen Abstand eingestellt, der 1, 1,5, 2 oder 3 Encoderzählungen entspricht, aber es │ │ │ │ │ gibt keine strengen Regeln. Lockere (größere) Einstellungen ermöglichen ein geringeres Hunting’ │ │ │ │ │ des Servos auf Kosten einer geringeren Genauigkeit. Engere (kleinere) Einstellungen versuchen │ │ │ │ │ eine höhere Genauigkeit auf Kosten von mehr Servo Hunting. Ist es wirklich genauer, wenn es │ │ │ │ │ @@ -10604,15 +10604,15 @@ │ │ │ │ │ • FF0 = 0” - Die Vorwärtsverstärkung 0ter Ordnung. Diese Zahl wird mit der befohlenen Position │ │ │ │ │ multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die │ │ │ │ │ Einheiten für die FF0-Verstärkung sind Volt pro Maschineneinheit, z. B. │ │ │ │ │ • FF1 = 0 - Die Vorwärtsverstärkung erster Ordnung. Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den │ │ │ │ │ Motorverstärker führt. Die Einheiten für die FF1-Verstärkung sind Volt pro Maschineneinheit pro │ │ │ │ │ Sekunde, z. B. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 186 / 1327 │ │ │ │ │ │ │ │ │ │ • FF2 = 0 - Die Vorwärtsverstärkung zweiter Ordnung. Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den │ │ │ │ │ Motorverstärker führt. Die Einheiten für die FF2-Verstärkung sind Volt pro Maschineneinheit pro │ │ │ │ │ Sekunde, z. B. │ │ │ │ │ • OUTPUT_SCALE = 1.000 │ │ │ │ │ @@ -10648,15 +10648,15 @@ │ │ │ │ │ -10 │ │ │ │ │ -9 │ │ │ │ │ │ │ │ │ │ Gemessen │ │ │ │ │ -9.93 │ │ │ │ │ -8.83 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 187 / 1327 │ │ │ │ │ │ │ │ │ │ Tabelle 4.1: (continued) │ │ │ │ │ Roh │ │ │ │ │ 0 │ │ │ │ │ 1 │ │ │ │ │ @@ -10692,15 +10692,15 @@ │ │ │ │ │ Gibt die Anzahl der Impulse an, die einer Bewegung einer Maschineneinheit entspricht, wie im Abschnitt [TRAJ] eingestellt. Bei Schrittmotor-(engl. Stepper)-systemen ist dies die Anzahl der Schrittimpulse, die pro Maschineneinheit ausgegeben werden. Bei einem Lineargelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS. Für ein Winkelgelenk entspricht eine Einheit der │ │ │ │ │ Einstellung in ANGULAR_UNITS. Bei Servosystemen ist dies die Anzahl der Rückmeldeimpulse pro │ │ │ │ │ Maschineneinheit. Eine zweite Zahl, falls angegeben, wird ignoriert. │ │ │ │ │ Bei einem 1,8-Grad-Schrittmotor, der mit halben Schritten bewegt (engl. half-stepping) wird, und │ │ │ │ │ einem Getriebe mit 10 Umdrehungen pro Zoll und gewünschten Maschineneinheiten in Zoll ergibt │ │ │ │ │ sich beispielsweise Folgendes: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 188 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Alte INI und HAL Dateien verwendeten INPUT_SCALE für diesen Wert. │ │ │ │ │ │ │ │ │ │ • ENCODER_SCALE = 20000 (wird optional in PnCconf-Konfigurationen verwendet) - Gibt die Anzahl │ │ │ │ │ @@ -10728,15 +10728,15 @@ │ │ │ │ │ Spindeldrehzahl. │ │ │ │ │ • MIN_REVERSE_VELOCITY = 3000 Diese Einstellung entspricht MIN_VELOCITY, jedoch für die umgekehrte Spindeldrehung. Ist dieser Wert nicht angegeben, wird sie standardmäßig auf MIN_VELOCITY │ │ │ │ │ gesetzt. │ │ │ │ │ • INCREMENT = 200 Legt die Schrittweite für Befehle zum Erhöhen und Verringern der Spindeldrehzahl fest. Dies kann für jede Spindel einen anderen Wert haben. Diese Einstellung ist bei Axis und │ │ │ │ │ Touchy wirksam, aber beachten Sie, dass einige grafische Benutzeroberflächen die Dinge anders │ │ │ │ │ handhaben können. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 189 / 1327 │ │ │ │ │ │ │ │ │ │ • HOME_SEARCH_VELOCITY = 100 - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Setzt │ │ │ │ │ die Referenzfahrtgeschwindigkeit (U/min) für die Spindel. Die Spindel dreht sich während der Referenzfahrt mit dieser Geschwindigkeit, bis der Spindelindex gefunden ist. Dann wird die Spindelposition auf Null gesetzt. Beachten Sie, dass es keinen Sinn macht, wenn die Spindel-Ausgangsposition │ │ │ │ │ einen anderen Wert als Null hat, daher ist dies auch nicht vorgesehen. │ │ │ │ │ • HOME_SEQUENCE = 0 - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Steuert, wo in der │ │ │ │ │ @@ -10766,15 +10766,15 @@ │ │ │ │ │ 4.5.1 Übersicht │ │ │ │ │ Die Referenzfahrt legt den Nullpunkt der G53-Maschinenkoordinaten fest. Softlimits werden relativ │ │ │ │ │ zum Maschinenursprung definiert. Eine korrekt konfigurierte und funktionierende Maschine bewegt │ │ │ │ │ sich nicht über die Soft(ware)-Grenzen hinaus und der Maschinenursprung ist so wiederholbar eingestellt wie der Referenzschalter/Indexmechanismus. Linuxcnc kann mit dem Auge (Ausrichtungsmarken), mit Schaltern, mit Schaltern und einem Encoder-Index oder mit Absolut-Encodern ausgerichtet │ │ │ │ │ werden. Homing scheint einfach genug - bewegen Sie einfach jedes Gelenk zu einer bekannten Position, und stellen Sie LinuxCNC’s interne Variablen entsprechend. Allerdings haben verschiedene │ │ │ │ │ Maschinen unterschiedliche Anforderungen, und Homing ist eigentlich ziemlich kompliziert. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 190 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Es ist zwar möglich, LinuxCNC ohne Referenzschalter/Referenzfahrt oder Endschalter zu verwenden, │ │ │ │ │ aber die zusätzliche Sicherheit der Softlimits wird dadurch zunichte gemacht. │ │ │ │ │ │ │ │ │ │ @@ -10807,15 +10807,15 @@ │ │ │ │ │ Zustand des Home-Schalters muss die Position der Antriebsklaue relativ zum Schalter repräsentieren (d.h. vor oder nach dem Schalter), und er muss so bleiben, auch wenn die Klaue in der gleichen │ │ │ │ │ Richtung am Schalter vorbeiläuft. │ │ │ │ │ Anmerkung │ │ │ │ │ Es ist zwar möglich, LinuxCNC mit dem G53-Maschinenursprung außerhalb der weichen Maschinengrenzen zu verwenden, aber wenn Sie G28 oder G30 verwenden, ohne die Parameter einzustellen, │ │ │ │ │ geht es standardmäßig zum Ursprung. Dadurch würden die Endschalter ausgelöst, bevor die Position │ │ │ │ │ erreicht wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 191 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.3 Separater Home-Schalter Beispiel-Layout │ │ │ │ │ Dieses Beispiel zeigt minimale und maximale Endschalter mit einem separaten Home-Schalter. │ │ │ │ │ │ │ │ │ │ Abbildung 4.6: Demonstratives separates Schalterlayout │ │ │ │ │ @@ -10833,15 +10833,15 @@ │ │ │ │ │ • Beachten Sie, dass zwischen den Endschaltern und dem tatsächlichen harten Kontakt für den Auslauf nach der Deaktivierung des Verstärkers ein Abstand besteht. │ │ │ │ │ Anmerkung │ │ │ │ │ Die Referenzfahrt legt das G53-Koordinatensystem fest. Der Maschinenursprung (Nullpunkt) kann an │ │ │ │ │ einer beliebigen Stelle liegen, aber wenn Sie den Nullpunkt auf die negative weiche Grenze setzen, │ │ │ │ │ werden alle G53-Koordinaten positiv, was wahrscheinlich am einfachsten zu merken ist. Dazu setzen │ │ │ │ │ Sie MIN_LIMIT = 0 und stellen sicher, dass MAX_LIMIT positiv ist. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 192 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.4 Gemeinsamer End-/Hauptschalter Beispiel-Layout │ │ │ │ │ │ │ │ │ │ Dieses Beispiel zeigt einen maximalen Endschalter und einen kombinierten minimalen End-/Referenzschalte │ │ │ │ │ │ │ │ │ │ @@ -10861,21 +10861,21 @@ │ │ │ │ │ • Beachten Sie, dass zwischen den Endschaltern und dem tatsächlichen harten Kontakt für den Auslauf nach der Deaktivierung des Verstärkers ein Abstand besteht. │ │ │ │ │ │ │ │ │ │ 4.5.5 Referenzfahrt Abfolge │ │ │ │ │ Es gibt vier mögliche Referenzfahrt-Abfolgen, die durch das Vorzeichen von HOME_SEARCH_VEL und │ │ │ │ │ HOME_LATCH_VEL sowie die zugehörigen Konfigurationsparameter definiert sind, wie in der folgenden Tabelle dargestellt. Es gibt zwei wesentliche Varianten: HOME_SEARCH_VEL und HOME_LATCH_VEL │ │ │ │ │ haben das gleiche Vorzeichen oder sie haben entgegengesetzte Vorzeichen. Eine genauere Beschreibung der Funktionen der einzelnen Konfigurationsparameter finden Sie im folgenden Abschnitt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 4.8: Referenzfahrt-Abläufe │ │ │ │ │ │ │ │ │ │ 193 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 194 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.6 Konfiguration │ │ │ │ │ Im Folgenden wird genau festgelegt, wie sich die Stammfolge verhält. Sie werden in einem [JOINT_n]Abschnitt der INI-Datei definiert. │ │ │ │ │ Referenzfahrt │ │ │ │ │ Typ │ │ │ │ │ @@ -10926,15 +10926,15 @@ │ │ │ │ │ Wenn HOME_SEARCH_VEL und HOME_LATCH_VEL das gleiche Vorzeichen haben, dann wird die │ │ │ │ │ Latch-Phase durchgeführt, während man sich in die gleiche Richtung wie die Suchphase bewegt. (In │ │ │ │ │ diesem Fall fährt LinuxCNC zunächst vom Schalter zurück, bevor es sich mit der Verriegelungsgeschwindigkeit wieder auf ihn zubewegt). Wenn HOME_SEARCH_VEL und HOME_LATCH_VEL entgegengesetzte Vorzeichen haben, wird die Latch-Phase durchgeführt, während man sich in die entgegengesetzte Richtung der Suchphase bewegt. Das bedeutet, dass LinuxCNC den ersten Impuls einrastet, │ │ │ │ │ nachdem es den Schalter verlassen hat. Wenn HOME_SEARCH_VEL gleich Null ist (d.h. es gibt keinen Home-Schalter), und dieser Parameter ungleich Null ist, geht LinuxCNC zur Index-Impuls-Suche │ │ │ │ │ über. Wenn HOME_SEARCH_VEL nicht Null ist und dieser Parameter ist auf Null gesetzt, so ist es │ │ │ │ │ ein Fehler und die Referenzfahrt wird entsprechend fehlschlagen. Der Standardwert ist Null. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 195 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.6.3 HOME_FINAL_VEL │ │ │ │ │ Diese Variable hat die Einheit von Maschineneinheiten pro Sekunde. │ │ │ │ │ Sie gibt die Geschwindigkeit an, die LinuxCNC verwendet, wenn es seine Bewegung von HOME_OFFSET │ │ │ │ │ zur HOME-Position durchführt. Wenn die HOME_FINAL_VEL in der INI-Datei fehlt, dann wird die │ │ │ │ │ @@ -10963,15 +10963,15 @@ │ │ │ │ │ 4.5.6.7 HOME_OFFSET │ │ │ │ │ Definiert die Lage des Ursprungsnullpunkts des G53-Maschinenkoordinatensystems. Es ist der Abstand (Offset), in gemeinsamen Einheiten, von der Maschine Ursprung auf die Referenzsschalter Auslösepunkt oder Index-Impuls. Nach der Erkennung der Schalter Auslösepunkt / Index-Impuls, setzt │ │ │ │ │ LinuxCNC die gemeinsame Koordinatenposition zu HOME_OFFSET, und damit die Definition der Ursprungs, von dem sich die weichen Grenzen ableiten. Der Standardwert ist Null. │ │ │ │ │ Anmerkung │ │ │ │ │ Die Position des Referenzschalters, die durch die Variable HOME_OFFSET angegeben wird, kann innerhalb oder außerhalb der Soft Limits liegen. Sie werden gemeinsam mit oder innerhalb der harten │ │ │ │ │ Endschalter verwendet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 196 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.6.8 Referenzpunkt (engl. Home) │ │ │ │ │ Die Position, die das Gelenk nach Abschluss der Referenzierungsfahrt annehmen soll. Nach der Erkennung der Referenzschalter oder erst des Referenzschalters gefolgt vom Index-Impuls (je nach │ │ │ │ │ Konfiguration), und die Einstellung der Koordinate dieses Punktes zu HOME_OFFSET, führt LinuxCNC zu HOME als Abschluss Referenzfahrt durch. Der Standardwert ist Null. Beachten Sie, dass, │ │ │ │ │ selbst wenn dieser Parameter der gleiche wie HOME_OFFSET ist, das Gelenk vermutlich leicht über │ │ │ │ │ @@ -11006,15 +11006,15 @@ │ │ │ │ │ Eine Aufforderung, für ein Gelenk die Referenzfahrt zu wiederholen, wird stillschweigend ignoriert. │ │ │ │ │ │ │ │ │ │ 4.5.6.11 HOME_SEQUENCE │ │ │ │ │ Wird verwendet, um eine Multigelenk-Referenzierungssequenz HOME ALL zu definieren und die Referenzierungsreihenfolge zu erzwingen (z.B. darf Z nicht referenziert werden, wenn X noch nicht referenziert ist). Ein Gelenk kann erst dann referenziert werden, wenn alle Gelenke mit einer niedrigeren │ │ │ │ │ (absoluten) HOME_SEQUENCE bereits referenziert wurden und sich am HOME_OFFSET befinden. │ │ │ │ │ Wenn zwei Gelenke die gleiche HOME_SEQUENCE haben, können sie gleichzeitig referenziert werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 197 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Wenn HOME_SEQUENCE nicht angegeben ist, wird das Gelenk nicht durch die HOME ALL-Sequenz referenziert (sondern kann durch einzelne gelenkspezifische Referenzierungsbefehle referenziert werden). │ │ │ │ │ │ │ │ │ │ Die anfängliche HOME_SEQUENCE-Nummer kann 0, 1 (oder -1) sein. Der absolute Wert der Sequenznummern muss um eins erhöht werden - das Überspringen von Sequenznummern wird nicht unterstützt. Wenn eine Sequenznummer weggelassen wird, stoppt HOME ALL die Referenzfahrt nach │ │ │ │ │ @@ -11056,15 +11056,15 @@ │ │ │ │ │ 0 │ │ │ │ │ │ │ │ │ │ Eine Sequenz, alle Gelenke synchronisiert │ │ │ │ │ [JOINT_0]HOME_SEQUENCE = -1 │ │ │ │ │ [JOINT_1]HOME_SEQUENCE = -1 │ │ │ │ │ [JOINT_2]HOME_SEQUENCE = -1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 198 / 1327 │ │ │ │ │ │ │ │ │ │ 4.5.6.12 VOLATILE_HOME │ │ │ │ │ Wenn diese Einstellung aus TRUE gesetzt ist, geht für dieses Gelenk die Referenzeinstellung nicht │ │ │ │ │ verloren, wenn die Maschine in den AUS-Zustand übergeht. Dies ist für jedes Gelenk geeignet, das │ │ │ │ │ seine Position nicht beibehält, wenn der Gelenkantrieb ausgeschaltet ist. Einige Schrittantriebe, insbesondere Mikroschrittantriebe, können dies benötigen. │ │ │ │ │ @@ -11100,15 +11100,15 @@ │ │ │ │ │ Beispiel: Synchronisierte Gelenke 0,1 mit negativer Sequenz (-1) für synchronisierte Referenzfahrt │ │ │ │ │ mit einem Schalter (allow_jjog), der eine positive Sequenz (1) für individuelles Gelenk-Jogging vor │ │ │ │ │ der Referenzfahrt wählt (partieller HAL-Code): │ │ │ │ │ loadrt mux2 names=home_sequence_mux │ │ │ │ │ loadrt conv_float_s32 names=heimat_sequenz_s32 │ │ │ │ │ setp home_sequenz_mux.in0 -1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 199 / 1327 │ │ │ │ │ │ │ │ │ │ setp home_sequenz_mux.in1 1 │ │ │ │ │ addf home_sequence_mux servo-thread │ │ │ │ │ addf home_sequence_s32 servo-thread │ │ │ │ │ ... │ │ │ │ │ @@ -11143,15 +11143,15 @@ │ │ │ │ │ • Von LinuxCNC verursachter Abbruch und Werkzeugwechslerfehler: iocontrol bricht eine laufende Wechseloperation zuverlässig ab (Werkzeugwechsel bestätigt). Ein Werkzeugwechsler kann jederzeit einen Fehler melden, der zum Abbruch des nächsten M6 führt. Wenn beispielsweise ein │ │ │ │ │ Werkzeugwechsler während eines Vorbereitungsvorgangs eine leere Tasche vorfindet, sollte er iocontrol einen Fehler melden können, und iocontrol sollte entsprechend reagieren, wenn der M6Wechselvorgang ausgeführt wird. │ │ │ │ │ • Abbruch-/Fehlerursache kommunizieren: Lassen Sie iocontrol wissen, warum der Werkzeugwechsler einen Fehler verursacht hat und warum iocontrol abgebrochen hat. Dies ist für UI-Zwecke. Es │ │ │ │ │ wäre ein Kandidat für einen #5xxx Parameter und eine selektive Anzeige in der Benutzeroberfläche. │ │ │ │ │ • Keine Race Conditions zwischen iocontrol und Werkzeugwechsler: Das Protokoll zwischen iocontrol und Werkzeugwechsler muss eindeutig sein, welche Operation signalisiert wird und ob eine │ │ │ │ │ Änderungsoperation abgebrochen oder abgeschlossen wird. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 200 / 1327 │ │ │ │ │ │ │ │ │ │ • Konsistente Ansicht des Status: Beide Parteien müssen zu jedem Zeitpunkt eine einheitliche Sicht │ │ │ │ │ auf den Stand der Dinge in Bezug auf abgebrochene und abgeschlossene Vorgänge sowie auf die │ │ │ │ │ Anzahl der Werkzeuge und deren Platz haben. │ │ │ │ │ • Handshaked Signalisierung eines Abbruchs/Fehlers: Nach der Signalisierung eines Abbruchs von │ │ │ │ │ @@ -11182,15 +11182,15 @@ │ │ │ │ │ (0x00000200), um RCS-Debugging-Meldungen in ganz LinuxCNC einzuschalten, oder verwenden Sie das neue iocontrol-Debugging-Bit (0x00001000) nur für iov2-Meldungen. │ │ │ │ │ │ │ │ │ │ 4.6.3 Pins │ │ │ │ │ • iocontrol.0.coolant-flood (Bit, Out) TRUE wenn Kühlmittelflut angefordert wird │ │ │ │ │ • iocontrol.0.coolant-mist (Bit, Out) TRUE wenn Kühlmittelnebel angefordert wird │ │ │ │ │ • iocontrol.0.emc-enable-in - (Bit, in) Sollte FALSE sein, wenn eine externe Not-Aus-Bedingung vorliegt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 201 / 1327 │ │ │ │ │ │ │ │ │ │ • iocontrol.0.lube (Bit, Out) TRUE wenn Schmiermittel angefordert wird. Dieser Pin wird mit TRUE │ │ │ │ │ angesteuert, wenn die Steuerung aus dem Not-Aus-Zustand kommt und der Befehl ”Lube On” an die │ │ │ │ │ Steuerung gesendet wird. Er wird mit FALSE angesteuert, wenn der Regler in den Notaus-Zustand │ │ │ │ │ geht und wenn der Befehl ”Lube Off” an den Regler gesendet wird. │ │ │ │ │ @@ -11222,15 +11222,15 @@ │ │ │ │ │ Werte ungleich Null führen zu einer Meldung des Achsenbedieners oder einer Fehlermeldung, siehe │ │ │ │ │ unten. │ │ │ │ │ • toolchanger-faulted: (Bit, Out) signalisiert, dass die toolchanger-notify-Leitung umgeschaltet hat │ │ │ │ │ und der toolchanger-reason-code im Fehlerbereich lag. Der nächste M6 bricht ab. │ │ │ │ │ • toolchanger-clear-fault: (Bit, In) setzt TC-Fehlerzustand zurück. Setzt toolchanger-faulted zurück, │ │ │ │ │ wenn toolchanger-notify auf FALSE steht. Verwendung: UI - z.B. Schaltfläche Fehlerzustand löschen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 202 / 1327 │ │ │ │ │ │ │ │ │ │ 4.6.4 Parameter │ │ │ │ │ • iocontrol.0.tool-prep-index (s32, RO) IO’s interner Array-Index des vorbereiteten Werkzeugs, das │ │ │ │ │ durch das letzte T-Wort angefordert wurde. 0, wenn kein Werkzeug vorgerüstet ist. Bei Maschinen │ │ │ │ │ mit Zufallswerkzeugwechsler ist dies die Platznummer des Werkzeugs (d.h. dieselbe wie der ToolPrep-Pocket-Pin), bei Maschinen ohne Zufallswerkzeugwechsler ist dies eine kleine Ganzzahl, die │ │ │ │ │ @@ -11266,15 +11266,15 @@ │ │ │ │ │ fortgesetzt, jedoch wird der Parameter #5060 auf 1,0 gesetzt, um den Fehler anzuzeigen. Der Parameter #5601 enthält den Wert des Werkzeugwechslergrundes. │ │ │ │ │ – toolchanger-reason = 0 : das Programm wird abgebrochen │ │ │ │ │ – toolchanger-reason < 0 : Das Programm wird abgebrochen und eine Fehlermeldung wird mit Hilfe │ │ │ │ │ der Vorlage IO_ERROR angezeigt. │ │ │ │ │ Die Verwendung des Pins ”toolchanger-fault-ack” ist optional. Er wird TRUE, wenn toolchanger-fault │ │ │ │ │ ausgelöst wird und der toolchanger-reason-Pin von iov2 gelesen wurde. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 203 / 1327 │ │ │ │ │ │ │ │ │ │ 4.7 Konfiguration der Drehmaschine │ │ │ │ │ 4.7.1 Standard-Ebene │ │ │ │ │ Wenn LinuxCNC’s Interpreter wurde zuerst geschrieben, war es für Mühlen konzipiert. Das ist, warum │ │ │ │ │ die Standard-Ebene ist XY (G17). Eine normale Drehmaschine verwendet nur die XZ-Ebene (G18). Um │ │ │ │ │ @@ -11316,15 +11316,15 @@ │ │ │ │ │ DISPLAY = axis │ │ │ │ │ LATHE = 1 │ │ │ │ │ ... │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins coordinates=xz │ │ │ │ │ JOINTS = 2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 204 / 1327 │ │ │ │ │ │ │ │ │ │ [TRAJ] │ │ │ │ │ COORDINATES = X Z │ │ │ │ │ ... │ │ │ │ │ [JOINT_0] │ │ │ │ │ @@ -11375,15 +11375,15 @@ │ │ │ │ │ │ │ │ │ │ Dir. Hold │ │ │ │ │ (ns) │ │ │ │ │ │ │ │ │ │ Dir. Setup │ │ │ │ │ (ns) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Achse │ │ │ │ │ │ │ │ │ │ Treiber-Typ │ │ │ │ │ │ │ │ │ │ Schrittzeit │ │ │ │ │ (ns) │ │ │ │ │ @@ -11491,15 +11491,15 @@ │ │ │ │ │ │ │ │ │ │ • Schritte pro Umdrehung - gibt an, wie viele Schritte der Schrittmotor für eine Umdrehung benötigt. │ │ │ │ │ Typisch sind 200. │ │ │ │ │ • Micro Steps’ - gibt an, wie viele Schritte der Antrieb benötigt, um den Schrittmotor einen vollen │ │ │ │ │ Schritt zu bewegen. Wenn kein Microstepping verwendet wird, ist diese Zahl 1. Wenn Microstepping │ │ │ │ │ verwendet wird, hängt der Wert von der Hardware des Schrittmotors ab. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 206 / 1327 │ │ │ │ │ │ │ │ │ │ • Motor Teeth and Leadscrew Teeth - ist, wenn Sie eine Untersetzung (Zahnrad, Kette, Zahnriemen │ │ │ │ │ usw.) zwischen Motor und Leitspindel haben. Wenn nicht, setzen Sie beide auf 1. │ │ │ │ │ • Leitspindelsteigung’ - gibt an, wie viel Bewegung (in Benutzereinheiten) in einer Leitspindelumdrehung stattfindet. Wenn Sie auf Zoll eingestellt sind, ist es Zoll pro Umdrehung. Wenn Sie in │ │ │ │ │ Millimetern einstellen, sind es Millimeter pro Umdrehung. │ │ │ │ │ @@ -11527,15 +11527,15 @@ │ │ │ │ │ Die erforderliche Skala lautet also: │ │ │ │ │ │ │ │ │ │ 4.9 Schrittmotor Konfiguration │ │ │ │ │ 4.9.1 Einführung │ │ │ │ │ Die bevorzugte Methode zum Einrichten einer Standard-Maschine mit Schrittmotoren (engl. stepper machine) ist der Stepper-Konfigurations-Assistent (engl. stepper configuration wizard). Siehe das │ │ │ │ │ Kapitel Stepper-Konfigurations-Assistenz. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 207 / 1327 │ │ │ │ │ │ │ │ │ │ In diesem Kapitel werden einige der gängigsten Einstellungen für die manuelle Einrichtung eines │ │ │ │ │ schrittmotorbasierten Systems beschrieben. Diese Systeme verwenden Schrittmotoren mit Antrieben, │ │ │ │ │ die Schritt- und Richtungssignale akzeptieren. │ │ │ │ │ Es ist eines der einfacheren Systeme, da die Motoren im offenen Regelkreis laufen (keine Rückmeldung von den Motoren), aber das System muss richtig konfiguriert werden, damit die Motoren nicht │ │ │ │ │ @@ -11569,15 +11569,15 @@ │ │ │ │ │ Signale: Xstep, Xdir & Xen │ │ │ │ │ Pins: parport.0.pin-XX-out & parport.0.pin-XX-in │ │ │ │ │ │ │ │ │ │ Je nachdem, was Sie in Ihrer INI-Datei ausgewählt haben, verwenden Sie entweder standard_pinout.hal │ │ │ │ │ oder xylotex_pinout.hal. Dies sind zwei Dateien, die den HAL anweisen, wie die verschiedenen Signale │ │ │ │ │ & Pins zu verbinden sind. Weiter unten werden wir uns mit der standard_pinout.hal beschäftigen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 208 / 1327 │ │ │ │ │ │ │ │ │ │ 4.9.3.1 Standard-Pinbelegung HAL │ │ │ │ │ Diese Datei enthält mehrere HAL-Befehle und sieht normalerweise wie folgt aus: │ │ │ │ │ # Standard-Pinout-Konfigurationsdatei für 3-Achsen-Stepper │ │ │ │ │ # Verwendung eines Parports für E/A │ │ │ │ │ @@ -11628,15 +11628,15 @@ │ │ │ │ │ ### Geteilte Referenzschalter alle zu einem einzelnen parallel port Pin führen? │ │ │ │ │ ### Das ist ok, nutzen Sie das gleiche Signal an allen Achsen, aber stellen Sie sicher, │ │ │ │ │ dass Sie │ │ │ │ │ ### HOME_IS_SHARED und HOME_SEQUENCE in der INI-Datei. setzen. │ │ │ │ │ │ │ │ │ │ ←- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 209 / 1327 │ │ │ │ │ │ │ │ │ │ ### │ │ │ │ │ # net homeswitches <= parport.0.pin-10-in │ │ │ │ │ # net homeswitches => joint.0.home-sw-in │ │ │ │ │ # net homeswitches => joint.1.home-sw-in │ │ │ │ │ @@ -11671,15 +11671,15 @@ │ │ │ │ │ net Xstep parport.0.pin-03-out │ │ │ │ │ net Xdir parport.0.pin-02-out │ │ │ │ │ │ │ │ │ │ kann geändert werden in: │ │ │ │ │ net Xstep parport.0.pin-02-out │ │ │ │ │ net Xdir parport.0.pin-03-out │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 210 / 1327 │ │ │ │ │ │ │ │ │ │ oder grundsätzlich jeden andere out Pin, die Sie mögen. │ │ │ │ │ Tipp: Achten Sie darauf, dass Sie nicht mehr als ein Signal an denselben Pin anschließen. │ │ │ │ │ 4.9.3.4 Ändern der Polarität eines Signals │ │ │ │ │ Wenn externe Hardware ein ”active low” Signal erwartet, setzen Sie den entsprechenden -invert Parameter. Zum Beispiel, um das Spindelsteuersignal zu invertieren: │ │ │ │ │ @@ -11716,15 +11716,15 @@ │ │ │ │ │ 4.10 Stepper-Diagnose │ │ │ │ │ Wenn das, was Sie bekommen, nicht das ist, was Sie erwarten, haben Sie oft nur eine Erfahrung │ │ │ │ │ gemacht. Wenn man aus den Erfahrungen lernt, versteht man das Ganze besser. Die Diagnose von │ │ │ │ │ Problemen erfolgt am besten durch ”Teilen und Herrschen”. Damit ist gemeint, dass sich das Problem │ │ │ │ │ am schnellsten finden lässt, wenn man jedes Mal 1/2 der Variablen aus der Gleichung entfernen kann. │ │ │ │ │ In der realen Welt ist dies nicht immer der Fall, aber es ist normalerweise ein guter Ausgangspunkt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 211 / 1327 │ │ │ │ │ │ │ │ │ │ 4.10.1 Häufige Probleme │ │ │ │ │ 4.10.1.1 Stepper bewegt sich einen Schritt │ │ │ │ │ Der häufigste Grund, warum sich ein Schrittmotor bei einer Neuinstallation nicht bewegt, ist, dass die │ │ │ │ │ Schritt- und Richtungssignale vertauscht sind. Wenn Sie die Tasten ”Tippen vorwärts” und ”Tippen │ │ │ │ │ @@ -11753,15 +11753,15 @@ │ │ │ │ │ durchgeführt haben, um einen guten Wert für den Stepconf Wizard zu erhalten, oder wenn Sie die │ │ │ │ │ maximale Geschwindigkeit oder die maximale Beschleunigung zu hoch eingestellt haben. │ │ │ │ │ Wenn Sie Umkehrspiel hinzufügten, müssen Sie die STEPGEN_MAXACCEL bis zu doppelt so hoch │ │ │ │ │ wie die MAX_ACCELERATION in dem AXIS Abschnitt der INI-Datei setzen für jede Achse, für die Sie │ │ │ │ │ ein Umkehrspiel erhöhten. LinuxCNC verwendet ”zusätzliche Beschleunigung” bei Richtungswechsel, │ │ │ │ │ um das Umkehrspiel zu kompensieren. Ohne die Spiel-Korrektur kann die Beschleunigung des SchrittGenerators nur ein paar Prozent über der des Bewegungsplaners liegen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 212 / 1327 │ │ │ │ │ │ │ │ │ │ 4.10.2.2 RTAPI-Fehler │ │ │ │ │ Wenn Sie diese Fehlermeldung erhalten: │ │ │ │ │ RTAPI: ERROR: Unerwartete Echtzeitverzögerung bei Aufgabe n (engl. Unexpected realtime │ │ │ │ │ delay on task n) │ │ │ │ │ @@ -11805,15 +11805,15 @@ │ │ │ │ │ G4 P0.250 │ │ │ │ │ G0 Z0.500 │ │ │ │ │ G4 P0.250 │ │ │ │ │ #1000 = [#1000 - 1] │ │ │ │ │ o100 endwhile │ │ │ │ │ ( msg, Test 2 der Z-Achsenkonfiguration S zum Fortfahren) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ M1 (hier anhalten) │ │ │ │ │ #1000=100 ( Schleife 100 mal ) │ │ │ │ │ ( die nächste Schleife hat keine Verzögerungen nach den Bewegungen ) │ │ │ │ │ ( testet die Richtungshaltezeiten in der Treiberkonfiguration und auch die maximale │ │ │ │ │ Beschleunigungseinstellung ) │ │ │ │ │ o101 while [#1000] │ │ │ │ │ @@ -11824,15 +11824,15 @@ │ │ │ │ │ ( msg, Done...Z sollte genau .5” über dem Tisch liegen ) │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ 213 / 1327 │ │ │ │ │ │ │ │ │ │ ←- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 214 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 5 │ │ │ │ │ │ │ │ │ │ HAL (Hardware Abstraction Layer) │ │ │ │ │ 5.1 HAL-Einführung │ │ │ │ │ @@ -11847,15 +11847,15 @@ │ │ │ │ │ HAL basiert auf denselben Prinzipien, die auch für die Entwicklung von Hardware-Schaltungen und │ │ │ │ │ -Systemen verwendet werden, so dass es sinnvoll ist, zunächst diese Prinzipien zu untersuchen. │ │ │ │ │ Jedes System, auch eine CNC-Maschine, besteht aus miteinander verknüpften Komponenten. Bei einer │ │ │ │ │ CNC-Maschine könnten diese Komponenten die Hauptsteuerung, Servoverstärker oder Schrittmotoren, Motoren, Encoder, Endschalter, Drucktastenschalter, vielleicht ein VFD für den Spindelantrieb, │ │ │ │ │ eine SPS für den Betrieb eines Werkzeugwechslers usw. sein. Der Maschinenbauer muss diese Teile │ │ │ │ │ auswählen, montieren und miteinander verdrahten, um ein komplettes System zu erhalten. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 215 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.1: HAL-Konzept - Verbinden wie elektrische Schaltkreise. │ │ │ │ │ Abbildung 1 würde wie folgt in HAL-Code geschrieben: │ │ │ │ │ net signal-blue │ │ │ │ │ net signal-red │ │ │ │ │ @@ -11873,15 +11873,15 @@ │ │ │ │ │ usw. Die Entscheidung des Integrators, welche Komponenten er verwendet, basiert auf der Funktion der jeweiligen Komponente und den vom Hersteller des Geräts angegebenen Spezifikationen. Die │ │ │ │ │ Größe eines Motors und die Last, die er antreiben muss, beeinflussen die Wahl des Verstärkers, der │ │ │ │ │ für den Betrieb benötigt wird. Die Wahl des Verstärkers kann sich auf die Art der Rückkopplung auswirken, die der Verstärker benötigt, sowie auf die Geschwindigkeits- oder Positionssignale, die von │ │ │ │ │ einer Steuerung an den Verstärker gesendet werden müssen. │ │ │ │ │ In der HAL-Welt muss der Integrator entscheiden, welche HAL-Komponenten benötigt werden. In der │ │ │ │ │ Regel wird für jede Schnittstellenkarte ein Treiber benötigt. Zusätzliche Komponenten können für │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 216 / 1327 │ │ │ │ │ │ │ │ │ │ die Software-Generierung von Schrittimpulsen, SPS-Funktionen und eine Vielzahl anderer Aufgaben │ │ │ │ │ erforderlich sein. │ │ │ │ │ 5.1.1.2 Verbindungsentwurf │ │ │ │ │ Der Konstrukteur eines Hardwaresystems wählt nicht nur die Teile aus, er entscheidet auch, wie diese │ │ │ │ │ @@ -11906,15 +11906,15 @@ │ │ │ │ │ HAL bietet die Software-Äquivalente eines Voltmeters, Oszilloskops, Signalgenerators und anderer │ │ │ │ │ Werkzeuge, die zum Testen und Abstimmen eines Systems benötigt werden. Mit denselben Befehlen, │ │ │ │ │ die zum Aufbau des Systems verwendet werden, können auch Änderungen vorgenommen werden. │ │ │ │ │ 5.1.1.5 Zusammenfassung │ │ │ │ │ Dieses Dokument richtet sich an Personen, die bereits wissen, wie man diese Art von HardwareSystemintegration durchführt, die aber nicht wissen, wie man die Hardware mit LinuxCNC verbindet. │ │ │ │ │ Siehe den Abschnitt Remote Start Example in der HAL UI Examples Dokumentation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 217 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.2: Remote-Start-Beispiel (Schema) │ │ │ │ │ Das oben beschriebene traditionelle Hardware-Design endet am Rande der Hauptsteuerung. Außerhalb der Steuerung befinden sich eine Reihe relativ einfacher Kästen, die miteinander verbunden │ │ │ │ │ sind, um das zu tun, was erforderlich ist. Im Inneren ist die Steuerung ein großes Rätsel - eine riesige │ │ │ │ │ schwarze Box, von der wir hoffen, dass sie funktioniert. │ │ │ │ │ @@ -11935,15 +11935,15 @@ │ │ │ │ │ von HAL. Wenn Sie mit der Idee, Hardware-Blackboxen miteinander zu verbinden, vertraut sind, werden Sie wahrscheinlich wenig Probleme haben, HAL für die Verbindung von Software-Blackboxen zu │ │ │ │ │ verwenden. │ │ │ │ │ │ │ │ │ │ 5.1.2 HAL-Konzepte │ │ │ │ │ Dieser Abschnitt ist ein Glossar, in dem die wichtigsten HAL-Begriffe definiert werden. Er unterscheidet sich jedoch etwas von einem herkömmlichen Glossar, da die Begriffe nicht in alphabetischer │ │ │ │ │ Reihenfolge angeordnet sind. Sie sind nach ihrer Beziehung oder ihrem Fluss in der HAL-Welt geordnet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 218 / 1327 │ │ │ │ │ │ │ │ │ │ Komponente │ │ │ │ │ Wenn wir über Hardware-Design sprechen, bezeichnen wir die einzelnen Teile als Teile, Bausteine, Black Boxes, usw. Das HAL-Äquivalent ist eine Komponente oder HAL-Komponente (in │ │ │ │ │ diesem Dokument wird HAL-Komponente verwendet, wenn eine Verwechslung mit anderen Arten von Komponenten wahrscheinlich ist, aber normalerweise wird nur Komponente verwendet). │ │ │ │ │ Eine HAL-Komponente ist ein Stück Software mit genau definierten Eingängen, Ausgängen und │ │ │ │ │ @@ -11979,15 +11979,15 @@ │ │ │ │ │ vom Typ Datenübersetzung/-umwandlung zu tun. │ │ │ │ │ │ │ │ │ │ Signal │ │ │ │ │ In einer physischen Maschine sind die Anschlüsse der realen Hardwarekomponenten durch Drähte miteinander verbunden. Das HAL-Äquivalent eines Drahtes ist ein ”Signal” oder ”HAL-Signal”. │ │ │ │ │ HAL-Signale verbinden HAL-Pins miteinander, wie vom Maschinenbauer gewünscht. HAL-Signale │ │ │ │ │ können nach Belieben abgetrennt und wieder angeschlossen werden (sogar während die Maschine läuft). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 219 / 1327 │ │ │ │ │ │ │ │ │ │ Typ │ │ │ │ │ Bei der Verwendung echter Hardware würden Sie einen 24-V-Relaisausgang nicht an den +/10-V-Analogeingang eines Servoverstärkers anschließen. Für HAL-Pins gelten die gleichen Einschränkungen, die auf ihrem Typ basieren. Sowohl Pins als auch Signale haben Typen, und Signale können nur an Pins desselben Typs angeschlossen werden. Derzeit gibt es 4 Typen, wie │ │ │ │ │ folgt: │ │ │ │ │ • bit - ein einzelner TRUE/FALSE- oder ON/OFF-Wert │ │ │ │ │ @@ -12013,15 +12013,15 @@ │ │ │ │ │ HAL-Pins zu nehmen und sie auf die physischen Ausgangspins zu schreiben. Beide Funktionen sind │ │ │ │ │ Teil des parport-Treibers. │ │ │ │ │ │ │ │ │ │ 5.1.3 HAL-Komponenten │ │ │ │ │ Jede HAL-Komponente ist ein Stück Software mit genau definierten Eingängen, Ausgängen und Verhaltensweisen, das installiert und nach Bedarf miteinander verbunden werden kann. Der Abschnitt │ │ │ │ │ HAL Components List listet alle verfügbaren Komponenten und eine kurze Beschreibung ihrer Funktionen auf. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 220 / 1327 │ │ │ │ │ │ │ │ │ │ 5.1.4 Timing-Probleme in HAL │ │ │ │ │ Im Gegensatz zu den physikalischen Verdrahtungsmodellen zwischen Black Boxes, auf denen HAL, │ │ │ │ │ wie wir gesagt haben, basiert, reicht das einfache Verbinden zweier Pins mit einem HAL-Signal bei │ │ │ │ │ weitem nicht aus, um die Wirkung des physikalischen Falles zu erreichen. │ │ │ │ │ @@ -12059,15 +12059,15 @@ │ │ │ │ │ Dieses Dokument bietet einen Überblick über die Grundlagen von HAL. │ │ │ │ │ │ │ │ │ │ 5.2.1 HAL-Befehle │ │ │ │ │ Ausführlichere Informationen finden Sie in der Manpage für halcmd: führen Sie man halcmd in einem │ │ │ │ │ Terminalfenster aus. │ │ │ │ │ Um die HAL-Konfiguration zu sehen und den Status von Pins und Parametern zu überprüfen, verwenden Sie das Fenster HAL-Konfiguration im Menü Maschine in AXIS. Um den Status eines Pins │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 221 / 1327 │ │ │ │ │ │ │ │ │ │ zu überwachen, öffnen Sie die Registerkarte ”Überwachen” und klicken Sie auf jeden Pin, den Sie │ │ │ │ │ überwachen möchten; er wird dann zum Überwachungsfenster hinzugefügt. │ │ │ │ │ │ │ │ │ │ Abbildung 5.3: HAL-Konfigurationsfenster │ │ │ │ │ @@ -12081,15 +12081,15 @@ │ │ │ │ │ loadrt mux4 count=1 │ │ │ │ │ │ │ │ │ │ 5.2.1.2 addf │ │ │ │ │ Der Befehl addf fügt eine Funktion zu einem Echtzeit-Thread hinzu. Wenn der StepConf-Assistent │ │ │ │ │ zur Erstellung der Konfiguration verwendet wurde, wurden zwei Threads erstellt ( ̀ ̀base-thread ̀ ̀ und │ │ │ │ │ ̀ ̀servo-thread ̀ ̀). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 222 / 1327 │ │ │ │ │ │ │ │ │ │ addf fügt Funktion functname zum Thread threadname hinzu. Standardmäßig wird die Funktion in │ │ │ │ │ der Reihenfolge hinzugefügt, in der sie in der Datei steht. Wenn position angegeben ist, wird die │ │ │ │ │ Funktion an dieser Stelle des Threads hinzugefügt. Eine negative position bedeutet Position in Bezug │ │ │ │ │ auf das Ende des Threads. Beispiel: 1 ist der Anfang des Fadens, -1 ist das Ende des Fadens, -3 ist die │ │ │ │ │ @@ -12146,15 +12146,15 @@ │ │ │ │ │ Wenn die Komponente einen Fließkomma-Thread benötigt, ist dies normalerweise der langsamere │ │ │ │ │ Servo-Thread. │ │ │ │ │ │ │ │ │ │ 5.2.1.3 loadusr │ │ │ │ │ Mit dem Befehl loadusr wird eine User-Space-HAL-Komponente geladen. Userspace-Programme sind │ │ │ │ │ eigene Prozesse, die optional über Pins und Parameter mit anderen HAL-Komponenten kommunizieren. Sie können keine Echtzeitkomponenten in den Benutzerraum laden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 223 / 1327 │ │ │ │ │ │ │ │ │ │ Flags können eine oder mehrere der folgenden sein: │ │ │ │ │ -W │ │ │ │ │ │ │ │ │ │ um auf die Bereitschaft der Komponente zu warten. Es wird davon │ │ │ │ │ @@ -12202,15 +12202,15 @@ │ │ │ │ │ • Ein IN-Pin kann immer mit einem Signal verbunden werden. │ │ │ │ │ • Ein IO-Pin kann angeschlossen werden, sofern kein ein OUT-Pin am Signal anliegt. │ │ │ │ │ • Ein OUT-Pin kann nur angeschlossen werden, wenn es keine anderen OUT- oder IO-Pins am Signal │ │ │ │ │ gibt. │ │ │ │ │ Derselbe Signal-Name kann in mehreren Netzbefehlen verwendet werden, um zusätzliche Pins zu │ │ │ │ │ verbinden, solange die obigen Regeln beachtet werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 224 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.4: Signalrichtung (engl. signal direction) │ │ │ │ │ Dieses Beispiel zeigt das Signal xStep mit der Quelle stepgen.0.out und mit zwei Lesern, parport.0.pin02-out und parport.0.pin-08-out. Im Grunde genommen wird der Wert von stepgen.0.out an das Signal │ │ │ │ │ xStep gesendet und dieser Wert wird dann an parport.0.pin-02-out und parport.0.pin-08-out gesendet. │ │ │ │ │ # │ │ │ │ │ @@ -12232,15 +12232,15 @@ │ │ │ │ │ 5.2.1.5 setp │ │ │ │ │ Der Befehl setp setzt den Wert eines Pins oder Parameters. Die gültigen Werte hängen vom Typ des │ │ │ │ │ Pins oder Parameters ab. Es ist ein Fehler, wenn die Datentypen nicht übereinstimmen. │ │ │ │ │ Einige Komponenten haben Parameter, die vor der Verwendung eingestellt werden müssen. Die Parameter können je nach Bedarf vor der Verwendung oder während der Ausführung gesetzt werden. │ │ │ │ │ Sie können setp nicht auf einen Pin anwenden, der mit einem Signal verbunden ist. │ │ │ │ │ setp Syntax und Beispiel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 225 / 1327 │ │ │ │ │ │ │ │ │ │ setp │ │ │ │ │ setp parport.0.pin-08-out TRUE │ │ │ │ │ │ │ │ │ │ 5.2.1.6 sets │ │ │ │ │ @@ -12273,15 +12273,15 @@ │ │ │ │ │ Der Befehl linksp wurde durch den Befehl net abgelöst. │ │ │ │ │ Der Befehl linkps stellt eine Verbindung zwischen einem Pin und einem Signal her. Er ist der gleiche │ │ │ │ │ wie linksp, aber die Argumente sind vertauscht. │ │ │ │ │ linkps Syntax und Beispiel │ │ │ │ │ linkps │ │ │ │ │ linkps parport.0.pin-02-out X-Step │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 226 / 1327 │ │ │ │ │ │ │ │ │ │ Der Befehl linkps wurde durch den Befehl net abgelöst. │ │ │ │ │ der Befehl newsig erzeugt ein neues HAL-Signal mit dem Namen und dem Datentyp . Der Typ muss bit, s32, u32 oder float sein. Fehler, wenn bereits existiert. │ │ │ │ │ newsig Syntax und Beispiel │ │ │ │ │ newsig │ │ │ │ │ @@ -12307,15 +12307,15 @@ │ │ │ │ │ │ │ │ │ │ 5.2.3 HAL Files │ │ │ │ │ Wenn Sie den Stepper Config Wizard verwendet haben, um Ihre Konfiguration zu erstellen, werden │ │ │ │ │ Sie bis zu drei HAL-Dateien in Ihrem Konfigurationsverzeichnis haben. │ │ │ │ │ • my-mill.hal (wenn Ihre Konfiguration my-mill heißt) Diese Datei wird zuerst geladen und sollte nicht │ │ │ │ │ geändert werden, wenn Sie den Stepper-Konfigurationsassistenten verwendet haben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 227 / 1327 │ │ │ │ │ │ │ │ │ │ • custom.hal Diese Datei wird als nächstes und vor dem Laden der grafischen Benutzeroberfläche │ │ │ │ │ geladen. Hier legen Sie Ihre benutzerdefinierten HAL-Befehle ab, die vor dem Laden der grafischen │ │ │ │ │ Benutzeroberfläche geladen werden sollen. │ │ │ │ │ • custom_postgui.hal Diese Datei wird geladen, nachdem die grafische Benutzeroberfläche geladen │ │ │ │ │ @@ -12351,15 +12351,15 @@ │ │ │ │ │ and2.n │ │ │ │ │ │ │ │ │ │ Pins │ │ │ │ │ and2.N.in0 (bit, in) │ │ │ │ │ and2.N.in1 (bit, in) │ │ │ │ │ and2.N.out (bit, out) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 228 / 1327 │ │ │ │ │ │ │ │ │ │ Tabelle 5.1: und2 Wahrheitstabelle │ │ │ │ │ in0 │ │ │ │ │ False │ │ │ │ │ True │ │ │ │ │ @@ -12409,15 +12409,15 @@ │ │ │ │ │ or2.n │ │ │ │ │ │ │ │ │ │ Pins │ │ │ │ │ or2.n.in0 (bit, in) │ │ │ │ │ or2.n.in1 (bit, in) │ │ │ │ │ or2.n.out (bit, out) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 229 / 1327 │ │ │ │ │ │ │ │ │ │ Tabelle 5.3: or2 Wahrheitstabelle │ │ │ │ │ in0 │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ @@ -12476,15 +12476,15 @@ │ │ │ │ │ net my-sigin2 and2.0.in1 <= parport.0.pin-12-in │ │ │ │ │ net both-on parport.0.pin-14-out <= and2.0.out │ │ │ │ │ │ │ │ │ │ In dem obigen Beispiel wird eine Kopie von ”and2” in den Echtzeitbereich geladen und dem ServoThread hinzugefügt. Als nächstes wird Pin-11 des parallelen Anschlusses mit dem in0-Bit des andGatters verbunden. Als nächstes wird Pin-12 mit dem in1-Bit des and-Gatters verbunden. Zuletzt │ │ │ │ │ verbinden wir das Ausgangsbit ”and2” mit dem parallelen Anschluss ”Pin-14”. Wenn also nach der │ │ │ │ │ Wahrheitstabelle für ”and2” Pin 11 und Pin 12 eingeschaltet sind, dann ist der Ausgangs-Pin 14 eingeschaltet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 230 / 1327 │ │ │ │ │ │ │ │ │ │ 5.2.7 Konvertierungskomponenten │ │ │ │ │ 5.2.7.1 weighted_sum │ │ │ │ │ Die weighted_sum (engl. für gewichtete Summe) wandelt eine Gruppe von Bits in eine ganze Zahl um. │ │ │ │ │ Die Umwandlung ist die Summe der ”Gewichte” der vorhandenen Bits plus eines eventuellen Offsets. │ │ │ │ │ @@ -12552,15 +12552,15 @@ │ │ │ │ │ einem LinuxCNC INI-Datei in der LinuxCNC Stanza als [LinuxCNC]HALFILE=filename angegeben). │ │ │ │ │ Normalerweise muss ein Satz von einer oder mehreren LinuxCNC-Konfigurationsdateien eine einzige, │ │ │ │ │ eindeutige loadrt-Zeile verwenden, um ein Kernel-Modul zu laden, das mehrere Instanzen einer Komponente behandeln kann. Zum Beispiel, wenn Sie eine zwei Eingang UND-Gatter-Komponente (and2) │ │ │ │ │ in drei verschiedenen Orten in Ihrem Setup verwenden, müssten Sie eine einzige Zeile irgendwo zu │ │ │ │ │ spezifizieren: │ │ │ │ │ loadrt and2 count=3 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 231 / 1327 │ │ │ │ │ │ │ │ │ │ was zu den Komponenten and2.0, and2.1 und 2.2 führt. │ │ │ │ │ Konfigurationen sind besser lesbar, wenn Sie die Option names= für Komponenten angeben, bei denen │ │ │ │ │ sie unterstützt wird, z. B.: │ │ │ │ │ loadrt and2 names=aa,ab,ac │ │ │ │ │ @@ -12594,15 +12594,15 @@ │ │ │ │ │ │ │ │ │ │ Nach dem ersten Durchlauf werden die Echtzeitmodule automatisch geladen (loadrt), und zwar mit │ │ │ │ │ einer Anzahl, die der Gesamtzahl entspricht, wenn die Option count= verwendet wird, oder mit allen │ │ │ │ │ angegebenen Einzelnamen, wenn die Option names= verwendet wird. │ │ │ │ │ In einem zweiten Durchlauf werden dann alle anderen in den HALFILES angegebenen LinuxCNCBefehle ausgeführt. Die addf-Befehle verknüpfen die Funktionen einer Komponente mit der ThreadAusführung und werden in diesem zweiten Durchgang in der Reihenfolge ihres Erscheinens zusammen mit anderen Befehlen ausgeführt. │ │ │ │ │ Die Optionen ”count=” und ”names=” können zwar verwendet werden, schließen sich aber gegenseitig aus - für ein bestimmtes Modul kann nur ein Typ angegeben werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 232 / 1327 │ │ │ │ │ │ │ │ │ │ Die TWOPASS-Verarbeitung ist am effektivsten, wenn die Option ”names=” verwendet wird. Mit dieser Option können Sie eindeutige Namen vergeben, die als Gedächtnisstütze dienen oder anderweitig │ │ │ │ │ für die Konfiguration relevant sind. Wenn Sie z. B. eine Ableitungskomponente zur Schätzung der Geschwindigkeiten und Beschleunigungen an jeder (x,y,z)-Koordinate verwenden, führt die Verwendung │ │ │ │ │ der count=-Methode zu obskuren Komponentennamen wie ddt.0, ddt.1, ddt.2, usw. │ │ │ │ │ Alternativ können Sie auch die Option names= verwenden: │ │ │ │ │ @@ -12642,15 +12642,15 @@ │ │ │ │ │ HALFILE = file_1.hal │ │ │ │ │ ... │ │ │ │ │ HALFILE = file_n.hal │ │ │ │ │ HALFILE = file_with_all_loads_for_postgui.hal │ │ │ │ │ ... │ │ │ │ │ POSTGUI_HALFILE = the_postgui_file.hal │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 233 / 1327 │ │ │ │ │ │ │ │ │ │ 5.3.3 Ausschließen von HAL-Dateien │ │ │ │ │ Die TWOPASS-Verarbeitung konvertiert .hal-Dateien in äquivalente .tcl-Dateien und verwendet haltcl, um loadrt- und addf-Befehle zu finden, um ihre Nutzung zu akkumulieren und zu konsolidieren. │ │ │ │ │ Loadrt-Parameter, die den einfachen Parametern names= (oder count=) entsprechen, wie sie der HAL │ │ │ │ │ Component Generator (halcompile) akzeptiert, werden erwartet. Komplexere Parameterelemente, die │ │ │ │ │ @@ -12683,15 +12683,15 @@ │ │ │ │ │ Vorteile der TWOPASS-Verarbeitung eliminieren würde. Die LinuxCNC-Befehle, die Signale erzeugen │ │ │ │ │ (net) und Befehle, welche die Ausführungsreihenfolge festlegen (addf), sollten nicht in ausgeschlossenen Dateien platziert werden. Dies gilt insbesondere für addf-Befehle, da ihre Reihenfolge wichtig │ │ │ │ │ sein kann. │ │ │ │ │ │ │ │ │ │ 5.3.4 Beispiele │ │ │ │ │ Beispiele für die Verwendung von TWOPASS für einen Simulator sind in den Verzeichnissen enthalten: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 234 / 1327 │ │ │ │ │ │ │ │ │ │ configs/sim/axis/twopass/ │ │ │ │ │ configs/sim/axis/simtcl/ │ │ │ │ │ │ │ │ │ │ 5.4 HAL-Tutorial │ │ │ │ │ @@ -12728,15 +12728,15 @@ │ │ │ │ │ Befehl-Vervollständigung durch Tabulator-Taste │ │ │ │ │ halcmd: loa │ │ │ │ │ halcmd: load │ │ │ │ │ halcmd: loadrt │ │ │ │ │ halcmd: loadrt cou │ │ │ │ │ halcmd: loadrt counter │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 235 / 1327 │ │ │ │ │ │ │ │ │ │ 5.4.2.3 Die RTAPI-Umgebung │ │ │ │ │ RTAPI stands for Real Time Application Programming Interface. Many HAL components work in realtime, and all HAL components store data in shared memory so realtime components can access it. │ │ │ │ │ Regular Linux does not support realtime programming or the type of shared memory that HAL needs. │ │ │ │ │ Fortunately, there are realtime operating systems (RTOS’s) that provide the necessary extensions to │ │ │ │ │ @@ -12772,15 +12772,15 @@ │ │ │ │ │ 5.4.3.2 Untersuchung der HAL │ │ │ │ │ Now that the module is loaded, it is time to introduce halcmd, the command line tool used to configure the HAL. This tutorial will introduce only a selection of halcmd features. For a more complete │ │ │ │ │ description try man halcmd, or see the reference in HAL Commands section of this document. The first │ │ │ │ │ halcmd feature is the show command. This command displays information about the current state of │ │ │ │ │ the HAL. To show all installed components: │ │ │ │ │ Show Components with halrun/halcmd │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 236 / 1327 │ │ │ │ │ │ │ │ │ │ halcmd: show comp │ │ │ │ │ Loaded HAL Components: │ │ │ │ │ ID │ │ │ │ │ Type Name │ │ │ │ │ @@ -12877,15 +12877,15 @@ │ │ │ │ │ Finally, parameter labeled RW are read-write parameters. That means that they are changed by the │ │ │ │ │ component, but can also be changed by the user. Note: The parameters siggen.0.update.time and │ │ │ │ │ siggen.0.update.tmax are for debugging purposes and won’t be covered in this section. │ │ │ │ │ Most realtime components export one or more functions to actually run the realtime code they contain. │ │ │ │ │ Let’s see what function(s) siggen exported: │ │ │ │ │ Show Functions with halcmd ̀ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 237 / 1327 │ │ │ │ │ │ │ │ │ │ halcmd: show funct │ │ │ │ │ Exported Functions: │ │ │ │ │ Owner │ │ │ │ │ CodeAddr Arg │ │ │ │ │ @@ -12957,15 +12957,15 @@ │ │ │ │ │ system before the realtime code starts. Once you are happy with the configuration, you can start the │ │ │ │ │ realtime code like this: │ │ │ │ │ halcmd: start │ │ │ │ │ │ │ │ │ │ Jetzt läuft der Signalgenerator. Schauen wir uns seine Ausgangspins an: │ │ │ │ │ 1 CodeAddr and Arg fields were used during development and should probably disappear. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 238 / 1327 │ │ │ │ │ │ │ │ │ │ halcmd: show pin │ │ │ │ │ Komponenten-Pins: │ │ │ │ │ Owner │ │ │ │ │ Type Dir │ │ │ │ │ @@ -13087,15 +13087,15 @@ │ │ │ │ │ │ │ │ │ │ Name │ │ │ │ │ siggen.0.amplitude │ │ │ │ │ siggen.0.clock │ │ │ │ │ siggen.0.cosine │ │ │ │ │ siggen.0.frequency │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ │ │ │ │ │ @@ -13155,15 +13155,15 @@ │ │ │ │ │ │ │ │ │ │ 5.4.3.7 Wiederherstellung der HAL-Konfiguration │ │ │ │ │ To restore the HAL configuration stored in the file ”saved.hal”, we need to execute all of those HAL │ │ │ │ │ commands. To do that, we use ”-f __” which reads commands from a file, and ”-I” │ │ │ │ │ (upper case i) which shows the halcmd prompt after executing the commands: │ │ │ │ │ Ausführen einer gespeicherten Datei │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 240 / 1327 │ │ │ │ │ │ │ │ │ │ halrun -I -f saved.hal │ │ │ │ │ │ │ │ │ │ Notice that there is not a ”start” command in saved.hal. It’s necessary to issue it again (or edit the │ │ │ │ │ file saved.hal to add it there). │ │ │ │ │ @@ -13198,15 +13198,15 @@ │ │ │ │ │ Halmeter anzuweisen, ein noch kleineres Fenster zu verwenden. Der Name des Elements wird dann │ │ │ │ │ in der Titelleiste statt unter dem Wert angezeigt, und es gibt keine Schaltfläche. Dies ist nützlich, │ │ │ │ │ wenn viele Halmeter auf kleinem Raum angezeigt werden sollen. │ │ │ │ │ Wir werden erneut die Komponente siggen verwenden, um halmeter zu überprüfen. Wenn Sie das │ │ │ │ │ vorherige Beispiel gerade beendet haben, können Sie siggen mit der gespeicherten Datei laden. Wenn │ │ │ │ │ nicht, können wir es genauso laden wie zuvor: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 241 / 1327 │ │ │ │ │ │ │ │ │ │ halrun │ │ │ │ │ halcmd: loadrt siggen │ │ │ │ │ halcmd: loadrt threads name1=test-thread period1=1000000 │ │ │ │ │ halcmd: addf siggen.0.update test-thread │ │ │ │ │ @@ -13219,15 +13219,15 @@ │ │ │ │ │ │ │ │ │ │ The first window you will see is the ”Select Item to Probe” window. │ │ │ │ │ │ │ │ │ │ Abbildung 5.5: Halmeter Auswahlfenster │ │ │ │ │ This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one │ │ │ │ │ displays all the signals, and the third displays all the parameters. We would like to look at the pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 242 / 1327 │ │ │ │ │ │ │ │ │ │ siggen.0.cosine first, so click on it then click the ”Close” button. The probe selection dialog will │ │ │ │ │ close, and the meter looks something like the following figure. │ │ │ │ │ │ │ │ │ │ Abbildung 5.6: Halmeter-Fenster │ │ │ │ │ @@ -13258,15 +13258,15 @@ │ │ │ │ │ halcmd: loadrt threads name1=fast fp1=0 period1=50000 name2=slow period2=1000000 │ │ │ │ │ │ │ │ │ │ The first command loads two step generators, both configured to generate stepping type 0. The second │ │ │ │ │ command loads our old friend siggen, and the third one creates two threads, a fast one with a period │ │ │ │ │ of 50 microseconds (µs) and a slow one with a period of 1 millisecond (ms). The fast thread doesn’t │ │ │ │ │ support floating point functions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 243 / 1327 │ │ │ │ │ │ │ │ │ │ As before, we can use halcmd show to take a look at the HAL. This time we have a lot more pins and │ │ │ │ │ parameters than before: │ │ │ │ │ halcmd: show pin │ │ │ │ │ Component Pins: │ │ │ │ │ @@ -13450,15 +13450,15 @@ │ │ │ │ │ stepgen.capture-position.time │ │ │ │ │ stepgen.capture-position.tmax │ │ │ │ │ stepgen.make-pulses.time │ │ │ │ │ stepgen.make-pulses.tmax │ │ │ │ │ stepgen.update-freq.time │ │ │ │ │ stepgen.update-freq.tmax │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 244 / 1327 │ │ │ │ │ │ │ │ │ │ 5.4.5.2 Verbinden von Pins mit Signalen │ │ │ │ │ Wir haben also zwei Schrittimpulsgeneratoren und einen Signalgenerator. Nun ist es an der Zeit, │ │ │ │ │ einige HAL-Signale zu erzeugen, um die beiden Komponenten zu verbinden. Wir tun so, als ob die beiden Schrittimpulsgeneratoren die X- und Y-Achse einer Maschine antreiben würden. Wir wollen den │ │ │ │ │ Tisch im Kreis bewegen. Dazu senden wir ein Kosinussignal an die X-Achse und ein Sinussignal an die │ │ │ │ │ @@ -13516,15 +13516,15 @@ │ │ │ │ │ signal comes from pin siggen.0.cosine, and goes to pin stepgen.0.velocity-cmd. │ │ │ │ │ 5.4.5.3 Einrichten der Echtzeitausführung - Threads und Funktionen │ │ │ │ │ Thinking about data flowing through ”wires” makes pins and signals fairly easy to understand. Threads │ │ │ │ │ and functions are a little more difficult. Functions contain the computer instructions that actually get │ │ │ │ │ things done. Thread are the method used to make those instructions run when they are needed. First │ │ │ │ │ let’s look at the functions available to us. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 245 / 1327 │ │ │ │ │ │ │ │ │ │ halcmd: show funct │ │ │ │ │ Exported Functions: │ │ │ │ │ Owner │ │ │ │ │ CodeAddr Arg │ │ │ │ │ @@ -13608,15 +13608,15 @@ │ │ │ │ │ ( │ │ │ │ │ slow ( │ │ │ │ │ │ │ │ │ │ Time, Max-Time ) │ │ │ │ │ 0, │ │ │ │ │ 0 ) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49849 │ │ │ │ │ │ │ │ │ │ NO │ │ │ │ │ │ │ │ │ │ 1 siggen.0.update │ │ │ │ │ 2 stepgen.update-freq │ │ │ │ │ @@ -13667,39 +13667,39 @@ │ │ │ │ │ │ │ │ │ │ 5.4.6 Halscope │ │ │ │ │ Das vorherige Beispiel erzeugt einige sehr interessante Signale. Aber vieles von dem, was passiert, │ │ │ │ │ ist viel zu schnell, um es mit dem Halmeter zu sehen. Um einen genaueren Blick auf die Vorgänge │ │ │ │ │ im Inneren des HAL zu werfen, brauchen wir ein Oszilloskop. Glücklicherweise verfügt HAL über ein │ │ │ │ │ solches, genannt halscope. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 247 / 1327 │ │ │ │ │ │ │ │ │ │ Halscope besteht aus zwei Teilen - einem Echtzeitteil, der als Kernelmodul geladen wird, und einem │ │ │ │ │ Benutzerteil, der die grafische Benutzeroberfläche und die Anzeige bereitstellt. Sie müssen sich darüber jedoch keine Gedanken machen, da der Benutzerteil automatisch anfordert, dass der Echtzeitteil │ │ │ │ │ geladen wird. Wenn LinuxCNC in einem Terminal läuft, können Sie halscope mit dem folgenden Befehl │ │ │ │ │ starten. │ │ │ │ │ Halscope starten │ │ │ │ │ halcmd loadusr halscope │ │ │ │ │ │ │ │ │ │ Wenn LinuxCNC nicht läuft oder die Datei autosave.halscope nicht mit den Pins übereinstimmt, die │ │ │ │ │ im aktuell laufenden LinuxCNC verfügbar sind, öffnet sich das Scope-GUI-Fenster, unmittelbar gefolgt von einem Dialog Realtime function not linked, der wie die folgende Abbildung aussieht. Um die │ │ │ │ │ Abtastrate zu ändern, klicken Sie mit der linken Maustaste auf das Feld Samples. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 248 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.7: Dialog Echtzeitfunktion nicht verknüpft │ │ │ │ │ This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once │ │ │ │ │ per millisecond, so click on the 989 µs thread slow and leave the multiplier at 1. We will also leave the │ │ │ │ │ record length at 4000 samples, so that we can use up to four channels at one time. When you select │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 249 / 1327 │ │ │ │ │ │ │ │ │ │ a thread and then click OK, the dialog disappears, and the scope window looks something like the │ │ │ │ │ following figure. │ │ │ │ │ │ │ │ │ │ Abbildung 5.8: Fenster für den anfänglichen Geltungsbereich │ │ │ │ │ @@ -13711,34 +13711,34 @@ │ │ │ │ │ die Aufzeichnung verfügbare Speicher auf etwa 16.000 Samples festgelegt ist. │ │ │ │ │ Die Kanalschaltflächen befinden sich am unteren Rand des Halskop-Bildschirms. Wenn Sie auf die │ │ │ │ │ Schaltfläche ”1” klicken, wird das Dialogfeld ”Select Channel Source” (Kanalquelle auswählen) angezeigt, wie in der folgenden Abbildung dargestellt. Dieser Dialog ist dem von Halmeter verwendeten │ │ │ │ │ Dialog sehr ähnlich. Wir möchten uns die Signale ansehen, die wir zuvor definiert haben, also klicken │ │ │ │ │ wir auf die Registerkarte ”Signale”, und der Dialog zeigt alle Signale im HAL an (in diesem Beispiel │ │ │ │ │ nur zwei). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 250 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.9: Kanalquelle auswählen │ │ │ │ │ Um ein Signal auszuwählen, klicken Sie es einfach an. In diesem Fall möchten wir, dass auf Kanal 1 │ │ │ │ │ das Signal ”X-vel” angezeigt wird. Klicken Sie auf die Registerkarte ”Signale” und dann auf ”X-vel”. │ │ │ │ │ Das Dialogfeld schließt sich und der Kanal ist nun ausgewählt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 251 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.10: Signal auswählen │ │ │ │ │ Die Taste für Kanal 1 wird gedrückt, und die Kanalnummer 1 und die Bezeichnung ”X-vel” erscheinen │ │ │ │ │ unter der Tastenreihe. Diese Anzeige zeigt immer den ausgewählten Kanal an - Sie können mehrere │ │ │ │ │ Kanäle auf dem Bildschirm haben, aber der ausgewählte Kanal ist hervorgehoben, und die verschiedenen Steuerelemente wie vertikale Position und Skalierung funktionieren immer für den ausgewählten │ │ │ │ │ Kanal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 252 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.11: Halscope │ │ │ │ │ To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then │ │ │ │ │ click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals │ │ │ │ │ connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and │ │ │ │ │ @@ -13748,15 +13748,15 @@ │ │ │ │ │ haben und 1000 Samples pro Sekunde erfassen, wird halscope etwa 2 Sekunden brauchen, um die │ │ │ │ │ Hälfte seines Puffers zu füllen. Während dieser Zeit zeigt ein Fortschrittsbalken direkt über dem │ │ │ │ │ Hauptbildschirm an, dass der Puffer gefüllt ist. Sobald der Puffer halb voll ist, wartet das Scope auf einen Trigger. Da wir noch keinen konfiguriert haben, wird es ewig warten. Um es manuell auszulösen, │ │ │ │ │ klicken Sie auf die Schaltfläche ”Erzwingen” im Abschnitt ”Auslöser” oben rechts. Sie sollten sehen, │ │ │ │ │ wie sich der Rest des Puffers füllt, und dann werden die erfassten Wellenformen auf dem Bildschirm │ │ │ │ │ angezeigt. Das Ergebnis sieht ungefähr so aus wie in der folgenden Abbildung. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 253 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.12: Erfasste Wellenformen │ │ │ │ │ The Selected Channel box at the bottom tells you that the purple trace is the currently selected one, │ │ │ │ │ channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1 │ │ │ │ │ through 3 to highlight the other three traces. │ │ │ │ │ @@ -13765,30 +13765,30 @@ │ │ │ │ │ verwenden wir die ”Vertikal”-Steuerungen in der Box auf der rechten Seite des Bildschirms. Diese │ │ │ │ │ Regler wirken sich auf den aktuell ausgewählten Kanal aus. Bei der Einstellung der Verstärkung ist │ │ │ │ │ zu beachten, dass sie einen riesigen Bereich abdeckt - im Gegensatz zu einem echten Oszilloskop kann │ │ │ │ │ dieses Gerät Signale von sehr kleinen (Pico-Einheiten) bis zu sehr großen (Tera-Einheiten) anzeigen. │ │ │ │ │ Mit dem Positionsregler wird die angezeigte Kurve nur über die Höhe des Bildschirms nach oben und │ │ │ │ │ unten bewegt. Für größere Einstellungen sollte die Offset-Taste verwendet werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 254 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.13: Vertikale Einstellung │ │ │ │ │ Die große Schaltfläche Ausgewählter Kanal am unteren Rand zeigt an, dass Kanal 1 der aktuell ausgewählte Kanal ist und dass er mit dem X-vel-Signal übereinstimmt. Versuchen Sie, auf die anderen │ │ │ │ │ Kanäle zu klicken, um ihre Spuren sichtbar zu machen und sie mit dem Pos-Cursor verschieben zu │ │ │ │ │ können. │ │ │ │ │ 5.4.6.4 Triggering (automatisches Auslösen) │ │ │ │ │ Die Verwendung des Button ”Erzwingen” ist eine eher unbefriedigende Art, das Oszilloskop auszulösen. Um eine echte Triggerung einzurichten, klicken Sie auf die Schaltfläche ”Quelle” unten rechts. │ │ │ │ │ Daraufhin wird das Dialogfeld ”Trigger Source” (Triggerquelle) angezeigt, das einfach eine Liste aller │ │ │ │ │ derzeit angeschlossenen Sonden enthält. Wählen Sie eine Sonde für die Triggerung aus, indem Sie │ │ │ │ │ auf sie klicken. In diesem Beispiel verwenden wir Kanal 3, die Dreieckswelle, wie in der folgenden │ │ │ │ │ Abbildung dargestellt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 255 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.14: Dialogfeld Triggerquelle (engl. trigger source) │ │ │ │ │ Nachdem Sie die Triggerquelle eingestellt haben, können Sie den Triggerpegel und die Triggerposition mit den Schiebereglern im Feld ”Trigger” am rechten Rand einstellen. Der Pegel kann vom │ │ │ │ │ oberen bis zum unteren Rand des Bildschirms eingestellt werden und wird unter den Schiebereglern │ │ │ │ │ angezeigt. Die Position ist die Lage des Auslösepunkts innerhalb der gesamten Aufzeichnung. Ist der │ │ │ │ │ @@ -13797,15 +13797,15 @@ │ │ │ │ │ dem Auslösen passiert ist. Der Triggerpunkt ist als vertikale Linie in der Fortschrittsanzeige über │ │ │ │ │ dem Bildschirm sichtbar. Die Triggerpolarität kann durch Klicken auf die Schaltfläche direkt unter │ │ │ │ │ der Triggerpegelanzeige geändert werden. Sie wird dann absteigend. Beachten Sie, dass die Änderung der Triggerposition das Oszilloskop anhält, sobald die Position angepasst wurde, starten Sie das │ │ │ │ │ Oszilloskop erneut, indem Sie auf die Schaltfläche Normal des Run-Modus der Gruppe klicken. │ │ │ │ │ Nachdem wir nun die vertikalen Regler und die Triggerung eingestellt haben, sieht die Anzeige des │ │ │ │ │ Oszilloskops etwa wie in der folgenden Abbildung aus. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 256 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.15: Wellenformen mit Triggerung │ │ │ │ │ │ │ │ │ │ 5.4.6.5 Horizontale Anpassungen │ │ │ │ │ To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand │ │ │ │ │ @@ -13814,15 +13814,15 @@ │ │ │ │ │ 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 µs long, sampling at 1 kHz isn’t fast enough. To │ │ │ │ │ change the sample rate, click on the button that displays the number of samples and sample rate to │ │ │ │ │ bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 µs thread, │ │ │ │ │ fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth │ │ │ │ │ of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 257 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.16: Dialogfeld für Abtastrate │ │ │ │ │ │ │ │ │ │ 5.4.6.6 Weitere Kanäle │ │ │ │ │ Now let’s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at │ │ │ │ │ @@ -13831,15 +13831,15 @@ │ │ │ │ │ do the same for channel 4. Even though the channels are turned off, they still remember what they are │ │ │ │ │ connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels, │ │ │ │ │ select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then │ │ │ │ │ click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You │ │ │ │ │ should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the │ │ │ │ │ direction pin changes state and the step pulses speed up again. You might want toincrease the gain on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 258 / 1327 │ │ │ │ │ │ │ │ │ │ channel 1 to about 20 milli per division to better see the change in the velocity command. The result │ │ │ │ │ should look like the following figure. │ │ │ │ │ │ │ │ │ │ Abbildung 5.17: Schrittimpulse │ │ │ │ │ @@ -13852,15 +13852,15 @@ │ │ │ │ │ Wenn die Komponente scope_rt noch nicht geladen war, lädt halscope sie und fordert 80000 Gesamtsamples an, so dass bei der Abtastung von 4 Kanälen gleichzeitig 20000 Samples pro Kanal zur │ │ │ │ │ Verfügung stehen. (Wenn scope_rt bereits geladen war, hat das numerische Argument für halscope │ │ │ │ │ keine Auswirkungen). │ │ │ │ │ │ │ │ │ │ 5.5 HAL-Beispiele │ │ │ │ │ Bei all diesen Beispielen wird davon ausgegangen, dass Sie mit einer stepconf-basierten Konfiguration beginnen und zwei Threads base-thread und servo-thread haben. Der stepconf-Assistent erstellt │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 259 / 1327 │ │ │ │ │ │ │ │ │ │ eine leere Datei custom.hal und eine Datei custom_postgui.hal. Die Datei custom.hal wird nach der │ │ │ │ │ Konfigurations-HAL-Datei geladen und die Datei custom_postgui.hal wird geladen, nachdem die GUI │ │ │ │ │ geladen wurde. │ │ │ │ │ │ │ │ │ │ @@ -13918,15 +13918,15 @@ │ │ │ │ │ or2.0.in0 <== button-1 │ │ │ │ │ or2.0.in1 <== button-2 │ │ │ │ │ or2.0.out ==> led-1 │ │ │ │ │ │ │ │ │ │ Aus dem HAL-Befehl ”show pin or2” geht hervor, dass der Pin ”button-1” mit dem Pin ”or2.0.in0” verbunden ist, und aus dem Richtungspfeil geht hervor, dass der Button ein Ausgang und der ”or2.0.in0” │ │ │ │ │ ein Eingang ist. Der Ausgang von or2 geht an den Eingang der LED. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 260 / 1327 │ │ │ │ │ │ │ │ │ │ 5.5.2 Manueller Werkzeugwechsel │ │ │ │ │ In diesem Beispiel wird davon ausgegangen, dass Sie Ihre eigene Konfiguration erstellen und das Fenster HAL Manual Toolchange hinzufügen möchten. Der manuelle HAL-Werkzeugwechsel ist vor allem │ │ │ │ │ dann nützlich, wenn Sie voreinstellbare Werkzeuge haben und die Offsets in der Werkzeugtabelle speichern. Wenn Sie für jeden Werkzeugwechsel einen neuen Wert eingeben müssen, ist es am besten, │ │ │ │ │ wenn Sie Ihren G-Code aufteilen. Um das HAL Manual Toolchange-Fenster zu verwenden, müssen │ │ │ │ │ @@ -13966,15 +13966,15 @@ │ │ │ │ │ Herstellen der Verbindungen. │ │ │ │ │ setp mult2.in1 60 │ │ │ │ │ net xpos-cmd ddt.0.in │ │ │ │ │ net X-IPS mult2.0.in0 <= ddt.0.out │ │ │ │ │ net X-ABS abs.0.in <= mult2.0.out │ │ │ │ │ net X-IPM abs.0.out │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 261 / 1327 │ │ │ │ │ │ │ │ │ │ In diesem letzten Abschnitt setzen wir mult2.0.in1 auf 60, um die Zoll pro Sekunde in Zoll pro Minute │ │ │ │ │ umzuwandeln, die wir von ddt.0.out erhalten. │ │ │ │ │ Der xpos-cmd sendet die befohlene Position an den ddt.0.in. Der ddt berechnet die Ableitung der │ │ │ │ │ Änderung des Eingangs. │ │ │ │ │ @@ -13987,15 +13987,15 @@ │ │ │ │ │ │ │ │ │ │ 5.5.4 Details zum Softstart │ │ │ │ │ Dieses Beispiel zeigt, wie die HAL-Komponenten Tiefpass, limit2 oder limit3 verwendet werden können, um die Änderungsgeschwindigkeit eines Signals zu begrenzen. │ │ │ │ │ In diesem Beispiel haben wir einen Servomotor, der eine Drehbankspindel antreibt. Wenn wir nur │ │ │ │ │ die befohlenen Spindeldrehzahlen für den Servomotor verwenden würden, würde er versuchen, so │ │ │ │ │ schnell wie möglich von der aktuellen Drehzahl auf die befohlene Drehzahl zu kommen. Dies könnte │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 262 / 1327 │ │ │ │ │ │ │ │ │ │ zu Problemen führen oder den Antrieb beschädigen. Um die Änderungsrate zu verlangsamen, können │ │ │ │ │ wir die Spindel.N.speed-out durch einen Begrenzer vor dem PID senden, so dass der PID-Befehlswert │ │ │ │ │ langsamer auf neue Einstellungen wechselt. │ │ │ │ │ Die drei eingebauten Komponenten, die ein Signal begrenzen, sind: │ │ │ │ │ @@ -14036,15 +14036,15 @@ │ │ │ │ │ Sie dann Quadrat auf der Registerkarte Signale. Wiederholen Sie dies für die Kanäle 2-4 und fügen │ │ │ │ │ Sie Tiefpass, Limit2 und Limit3 hinzu. │ │ │ │ │ Um ein Triggersignal einzurichten, klicken Sie auf die Schaltfläche Source None und wählen Sie Square. Die Schaltfläche ändert sich in Quelle Kanal 1. │ │ │ │ │ Als nächstes klicken Sie im Optionsfeld Run Mode auf Single. Dadurch wird ein Lauf gestartet, und │ │ │ │ │ nach dessen Beendigung sehen Sie die Spuren (engl. traces). │ │ │ │ │ Um die Signale zu trennen, damit Sie sie besser sehen können, klicken Sie auf einen Kanal und verwenden Sie dann den Pos-Schieberegler im vertikalen Feld, um die Positionen festzulegen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 263 / 1327 │ │ │ │ │ │ │ │ │ │ Um zu sehen, wie sich eine Änderung der Sollwerte der einzelnen Komponenten auswirkt, können │ │ │ │ │ Sie diese im Terminalfenster ändern. Um zu sehen, was verschiedene Verstärkungseinstellungen für │ │ │ │ │ den Tiefpass bewirken, geben Sie einfach Folgendes in das Terminalfenster ein und probieren Sie │ │ │ │ │ verschiedene Einstellungen aus. │ │ │ │ │ @@ -14057,15 +14057,15 @@ │ │ │ │ │ Weitere Informationen zu Halscope finden Sie im HAL-Handbuch und im Tutorial. │ │ │ │ │ │ │ │ │ │ 5.5.5 Stand-Alone HAL │ │ │ │ │ In manchen Fällen möchten Sie vielleicht einen GladeVCP-Bildschirm nur mit HAL betreiben. Nehmen │ │ │ │ │ wir an, Sie haben ein schrittmotorgesteuertes Gerät und alles was Sie benötigen ist diesen Schrittmotor zusteuern. Eine einfache Start/Stop Schnittstelle ist alles, was Sie für Ihre Anwendung benötigen, │ │ │ │ │ so dass Sie keine vollständige CNC-Anwendung laden und konfigurieren müssen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 264 / 1327 │ │ │ │ │ │ │ │ │ │ Im folgenden Beispiel haben wir ein einfaches GladeVCP-Panel mit einem Schrittmotor. │ │ │ │ │ Grundlegende (engl. basic) Syntax │ │ │ │ │ # Lädt die GUI winder.glade und nennt diese winder │ │ │ │ │ loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade │ │ │ │ │ @@ -14102,15 +14102,15 @@ │ │ │ │ │ Dieses Modul bietet eine HAL-Schnittstelle für den Bewegungsplaner (engl. motion planner) von LinuxCNC. │ │ │ │ │ Im Grunde genommen nimmt motmod eine Liste von Wegpunkten auf und erzeugt daraus einen schönen ineinander übergehenden und durch Einschränkungen begrenzten Strom von Gelenkpositionen, │ │ │ │ │ der an die Motorantriebe weitergeleitet wird. │ │ │ │ │ Optional wird die Anzahl der digitalen E/A (engl. I/O) mit num_dio eingestellt. Die Anzahl der analogen │ │ │ │ │ E/A wird mit num_aio festgelegt, Standard ist jeweils 4. Die Anzahl der Spindeln wird mit num_spindles │ │ │ │ │ eingestellt, Voreinstellung ist 1. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 265 / 1327 │ │ │ │ │ │ │ │ │ │ Pin- und Parameternamen, die mit axis.L und joint.N beginnen, werden von der Motion-ControllerFunktion gelesen und aktualisiert. │ │ │ │ │ Motion wird mit dem Befehl motmod geladen. Ein kins sollte vor motion geladen werden. │ │ │ │ │ loadrt motmod base_period_nsec=[’period’] servo_period_nsec=[’period’] │ │ │ │ │ traj_period_nsec=[’period’] num_joints=[’0-9’] │ │ │ │ │ @@ -14144,15 +14144,15 @@ │ │ │ │ │ Der Parameter unlock_joints_mask wird verwendet, um Pins für ein Gelenk zu erzeugen, das als verriegelnder Indexer verwendet wird (normalerweise ein Drehgelenk). Die Maskenbits wählen das/die │ │ │ │ │ Gelenk(e) aus. Das LSB der Maske wählt das Gelenk 0. Beispiel: │ │ │ │ │ unlock_joints_mask=0x38 wählt die Gelenke 3,4,5 aus │ │ │ │ │ │ │ │ │ │ 5.6.1.2 Pins │ │ │ │ │ Diese Pins, Parameter und Funktionen werden durch das Echtzeitmodul motmod angelegt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 266 / 1327 │ │ │ │ │ │ │ │ │ │ • motion.adaptive-feed - (float, in) Wenn der adaptive Vorschub mit M52 P1 aktiviert ist, wird die │ │ │ │ │ befohlene Geschwindigkeit mit diesem Wert multipliziert. Dieser Effekt ist multiplikativ mit dem │ │ │ │ │ Vorschub-Override-Wert auf NML-Ebene und motion.feed-hold. Ab der Version 2.9 von LinuxCNC │ │ │ │ │ ist es möglich, einen negativen adaptiven Vorschubwert zu verwenden, für eine G-Code-Bahn in │ │ │ │ │ @@ -14190,15 +14190,15 @@ │ │ │ │ │ – 5: Antasten │ │ │ │ │ – 6: Indexierung der Drehachse │ │ │ │ │ • motion.on-soft-limit - (bit, out) TRUE, wenn sich die Maschine an einem Softlimit (buchstäblich auch: │ │ │ │ │ einer weichen Grenze) befindet. │ │ │ │ │ • motion.probe-input - (bit, in) G38.n verwendet den Wert an diesem Pin, um den Moment zu bestimmen, in dem der Taster Kontakt hergestellt hat. TRUE für Tasterkontakt geschlossen (berührend), │ │ │ │ │ FALSE für Tasterkontakt offen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 267 / 1327 │ │ │ │ │ │ │ │ │ │ • motion.program-line - (s32, out) Die aktuelle Programmzeile während der Ausführung. Null, wenn │ │ │ │ │ das Programm nicht läuft oder zwischen den Zeilen bei Einzelschritten. │ │ │ │ │ • motion.requested-vel - (float, out) Die aktuell geforderte Geschwindigkeit in Benutzereinheiten pro │ │ │ │ │ Sekunde. Dieser Wert ist die F-Wort-Einstellung aus der G-Code-Datei, möglicherweise reduziert, │ │ │ │ │ @@ -14232,15 +14232,15 @@ │ │ │ │ │ • motion.debug-bit-0 - (bit, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-bit-1 - (bit, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-float-0 - (float, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-float-1 - (float, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-float-2 - (float, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-float-3 - (float, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 268 / 1327 │ │ │ │ │ │ │ │ │ │ • motion.debug-s32-0 - (s32, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • motion.debug-s32-1 - (s32, RO) Dies wird zur Fehlersuche verwendet. │ │ │ │ │ • 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ält │ │ │ │ │ • motion.servo.last-period-ns - (float, RO) │ │ │ │ │ @@ -14271,15 +14271,15 @@ │ │ │ │ │ • spindle.N.inhibit - (bit, in) Wenn dieses Bit TRUE ist, wird die Spindeldrehzahl auf 0 gesetzt. │ │ │ │ │ • spindle.N.on - (bit, out) TRUE wenn sich die Spindel drehen soll. │ │ │ │ │ • spindle.N.reverse - (bit, out) TRUE wenn sich die Spindel rückwärts drehen soll │ │ │ │ │ • spindle.N.revs - (float, in) Für den korrekten Betrieb von spindelsynchronisierten Bewegungen muss │ │ │ │ │ dieses Signal mit dem Positionspin des Spindelgebers verbunden werden. Die Position des Spindelgebers sollte so skaliert werden, dass die Spindelumdrehungen bei jeder Umdrehung der Spindel │ │ │ │ │ im Uhrzeigersinn (M3) um 1,0 zunehmen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 269 / 1327 │ │ │ │ │ │ │ │ │ │ • spindle.N.speed-in - (float, in) Rückmeldung der tatsächlichen Spindeldrehzahl in Umdrehungen pro │ │ │ │ │ Sekunde. Dies wird von der Bewegung mit Vorschub pro Umdrehung (G95) verwendet. Wenn Ihr │ │ │ │ │ Spindelgeber-Treiber nicht über einen Geschwindigkeitsausgang verfügt, können Sie einen geeigneten Ausgang erzeugen, indem Sie die Spindelposition durch eine ddt Komponente senden. Wenn │ │ │ │ │ Sie keinen Spindelgeber haben, können Sie spindle.N.speed-out-rps durchschleifen. │ │ │ │ │ @@ -14311,15 +14311,15 @@ │ │ │ │ │ die Pins ”spindle.N.orient-angle” und ”spindle.N.orient-fwd” festgelegt und durch die M19-Parameter │ │ │ │ │ R und P gesteuert. │ │ │ │ │ Es wird erwartet, dass die HAL-Unterstützungslogik auf spindle.__N__.orient reagiert, indem sie │ │ │ │ │ die Spindel in die gewünschte Position bewegt. Wenn dies abgeschlossen ist, wird erwartet, dass die │ │ │ │ │ HAL-Logik dies durch die Bestätigung des Pins ”Spindle.N.is-oriented” . │ │ │ │ │ Motion quittiert dies durch Deaktivierung des Pins ”Spindle.N.orient” und aktiviert den Pin ”Spindle.N.locked”, um den Modus ”Orientierung abgeschlossen” anzuzeigen. Außerdem wird der Pin ”spindle.N.brake” angehoben. Die Spindel befindet sich nun im Modus Orientierung abgeschlossen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 270 / 1327 │ │ │ │ │ │ │ │ │ │ Wenn der Pin ”spindle.N.orient-fault” einen Wert ungleich Null hat, während ”spindle.N.orient” wahr │ │ │ │ │ ist und ”spindle.N.is oriented” noch nicht aktiviert ist, wird der M19-Befehl abgebrochen, eine Meldung mit dem Fehlercode angezeigt und die Bewegungswarteschlange geleert. Die Spindel kehrt in │ │ │ │ │ den Rotationsmodus zurück. │ │ │ │ │ Außerdem kann jeder der Befehle M3, M4 oder M5 entweder den Modus Suche nach gewünschter │ │ │ │ │ @@ -14352,15 +14352,15 @@ │ │ │ │ │ genug ist. │ │ │ │ │ • iocontrol.0.tool-change - (bit, out) TRUE wenn ein Werkzeugwechsel angefordert wird. │ │ │ │ │ • iocontrol.0.tool-changed - (bit, in) Sollte TRUE sein, wenn ein Werkzeugwechsel abgeschlossen ist. │ │ │ │ │ • iocontrol.0.tool-number - (s32, out) Die aktuelle Werkzeugnummer. │ │ │ │ │ • iocontrol.0.tool-prep-number - (s32, out) Die Nummer des nächsten Werkzeugs, aus dem RS274NGC │ │ │ │ │ T-Wort. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 271 / 1327 │ │ │ │ │ │ │ │ │ │ • iocontrol.0.tool-prepare - (bit, out) TRUE wenn eine Werkzeugvorbereitung angefordert wird. │ │ │ │ │ • iocontrol.0.tool-prepared - (bit, in) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist. │ │ │ │ │ • iocontrol.0.user-enable-out - (bit, out) FALSE, wenn eine interne Not-Aus-Bedingung vorliegt. │ │ │ │ │ • iocontrol.0.user-request-enable - (bit, out) TRUE, wenn der Benutzer die Freigabe des Notausschalters angefordert hat. │ │ │ │ │ @@ -14389,15 +14389,15 @@ │ │ │ │ │ (Referenzfahrt oder Jogging), aber nicht, wenn ein Programm läuft (Auto-Modus) oder im MDI-Modus. │ │ │ │ │ Folglich hat eine Änderung der Pin-Werte bei laufendem Programm erst dann Auswirkungen, wenn │ │ │ │ │ das Programm gestoppt wird und der motion_state wieder frei ist. │ │ │ │ │ │ │ │ │ │ • ini.traj_arc_blend_enable - (bit, in) [TRAJ]ARC_BLEND_ENABLE │ │ │ │ │ • ini.traj_arc_blend_fallback_enable - (bit, in) [TRAJ]ARC_BLEND_FALLBACK_ENABLE │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 272 / 1327 │ │ │ │ │ │ │ │ │ │ • ini.traj_arc_blend_gap_cycles - (float, in) [TRAJ]ARC_BLEND_GAP_CYCLES │ │ │ │ │ • ini.traj_arc_blend_optimization_depth - (float, in) [TRAJ]ARC_BLEND_OPTIMIZATION_DEPTH │ │ │ │ │ • ini.traj_arc_blend_ramp_freq - (float, in) [TRAJ]ARC_BLEND_RAMP_FREQ │ │ │ │ │ Anmerkung │ │ │ │ │ @@ -14446,15 +14446,15 @@ │ │ │ │ │ AXIS - TOUCHY LinuxCNC Grafische Benutzeroberfläche │ │ │ │ │ │ │ │ │ │ gladevcp │ │ │ │ │ │ │ │ │ │ Virtuelles Bedienfeld für LinuxCNC basierend auf Glade, Gtk und HAL │ │ │ │ │ Widgets │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 273 / 1327 │ │ │ │ │ │ │ │ │ │ gladevcp_demoGladeVCP - verwendet von Beispielkonfigurationen zur Demonstration von │ │ │ │ │ Glade Virtual_demo │ │ │ │ │ gremlin_view Grafische Vorschau des G-Codes │ │ │ │ │ moveoff_gui GUI für die Moveoff-Komponente │ │ │ │ │ @@ -14536,15 +14536,15 @@ │ │ │ │ │ Überwacht die XHC-HB04-Hängeleuchte und warnt vor einer │ │ │ │ │ Unterbrechung der Verbindung │ │ │ │ │ Powtran PI500 Modbus-Treiber │ │ │ │ │ Modbus-Kommunikation mit einem Powermax-Plasmaschneidgerät │ │ │ │ │ Testen der Modbus-Kommunikation mit einem │ │ │ │ │ Powermax-Plasmaschneidgerät │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ shuttle │ │ │ │ │ svd-ps_vfd │ │ │ │ │ vfdb_vfd │ │ │ │ │ vfs11_vfd │ │ │ │ │ wj200_vfd │ │ │ │ │ xhc-hb04 │ │ │ │ │ @@ -14622,15 +14622,15 @@ │ │ │ │ │ halcmd │ │ │ │ │ │ │ │ │ │ Plottet den Wert eines HAL-Pins als Histogramm │ │ │ │ │ Erstellen, kompilieren und installieren von LinuxCNC HAL Komponenten │ │ │ │ │ Beobachten von HAL-Pins, -Signale und -Parametern │ │ │ │ │ Manipuliert des LinuxCNC HAL von der Kommandozeile │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 275 / 1327 │ │ │ │ │ │ │ │ │ │ halcmd_twopass │ │ │ │ │ Kurzbeschreibung │ │ │ │ │ halreport │ │ │ │ │ Erzeugt einen Bericht über den Status des HAL │ │ │ │ │ @@ -14715,15 +14715,15 @@ │ │ │ │ │ IEC TOF Timer - Verzögerung der fallenden Flanke eines Signals │ │ │ │ │ Push-on, push-off von Drucktastern mit kurzem Tastendruck │ │ │ │ │ Button auf Nist-Logik umschalten │ │ │ │ │ IEC TON Timer - Verzögerung der steigenden Flanke eines Signals │ │ │ │ │ Äquivalent eines zeitverzögerten Relais. │ │ │ │ │ IEC TP timer - generate a high pulse of defined duration on rising edge │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 276 / 1327 │ │ │ │ │ │ │ │ │ │ tristate_bit │ │ │ │ │ │ │ │ │ │ Legt ein Signal nur dann auf einen E/A-Pin, wenn es aktiviert ist, ähnlich │ │ │ │ │ wie ein Tristate-Puffer in der Elektronik │ │ │ │ │ @@ -14812,15 +14812,15 @@ │ │ │ │ │ Zählt aufwärts oder abwärts, mit optionalen Grenzen und │ │ │ │ │ Wraparound-Verhalten. │ │ │ │ │ wcomp │ │ │ │ │ Fenster-Komparator. │ │ │ │ │ weighted_sumGewichtete Summe, konvertiert eine Gruppe von Bits in eine ganze Zahl. │ │ │ │ │ xhc_hb04_util xhc-hb04 Komfort-Dienstprogramm │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 277 / 1327 │ │ │ │ │ │ │ │ │ │ bin2gray │ │ │ │ │ Konvertierung einer Zahl in die Gray-Code Repräsentation │ │ │ │ │ bitslice │ │ │ │ │ Konvertiert eine vorzeichenlose 32-Eingabe in einzelne Bits │ │ │ │ │ @@ -14888,15 +14888,15 @@ │ │ │ │ │ 5.7.1.8 Motor control (Echtzeit) │ │ │ │ │ 2 Wenn der Eingang eine Position ist, bedeutet dies, dass die Position begrenzt ist. │ │ │ │ │ 3 Wenn der Eingang eine Position ist, bedeutet dies, dass ”Position” und ”Geschwindigkeit” begrenzt sind. │ │ │ │ │ 4 Wenn die Eingabe eine Position ist, bedeutet dies, dass die ”Position”, ”Geschwindigkeit” und ”Beschleunigung” begrenzt │ │ │ │ │ │ │ │ │ │ sind │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ at_pid │ │ │ │ │ bldc │ │ │ │ │ clarke2 │ │ │ │ │ clarke3 │ │ │ │ │ clarkeinv │ │ │ │ │ encoder │ │ │ │ │ @@ -14968,15 +14968,15 @@ │ │ │ │ │ hal_exit.3hal │ │ │ │ │ hal_export_funct.3hal │ │ │ │ │ hal_float_t.3hal │ │ │ │ │ hal_get_lock.3hal │ │ │ │ │ hal_init.3hal │ │ │ │ │ hal_link.3hal │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ hal_malloc.3hal │ │ │ │ │ hal_param_bit_new.3hal │ │ │ │ │ hal_param_bit_newf.3hal │ │ │ │ │ hal_param_float_new.3hal │ │ │ │ │ hal_param_float_newf.3hal │ │ │ │ │ hal_param_new.3hal │ │ │ │ │ @@ -15027,15 +15027,15 @@ │ │ │ │ │ rtapi_exit.3rtapi │ │ │ │ │ rtapi_get_clocks.3rtapi │ │ │ │ │ rtapi_get_msg_level.3rtapi │ │ │ │ │ rtapi_get_time.3rtapi │ │ │ │ │ │ │ │ │ │ 279 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 280 / 1327 │ │ │ │ │ │ │ │ │ │ rtapi_inb.3rtapi │ │ │ │ │ rtapi_init.3rtapi │ │ │ │ │ rtapi_module_param.3rtapi │ │ │ │ │ RTAPI_MP_ARRAY_INT.3rtapi │ │ │ │ │ @@ -15076,21 +15076,21 @@ │ │ │ │ │ die je nach CPU-Geschwindigkeit usw. maximale Schrittfrequenzen von 10 kHz bis vielleicht 50 kHz │ │ │ │ │ erreichen kann. Das Blockdiagramm des Schrittimpulsgenerators zeigt drei Blockdiagramme, jedes │ │ │ │ │ davon ist ein einzelner Schrittimpulsgenerator. Das erste Diagramm ist für den Schritttyp 0 (Schritt │ │ │ │ │ und Richtung). Das zweite ist für den Schritttyp 1 (auf/ab oder Pseudo-PWM), und das dritte für die │ │ │ │ │ Schritttypen 2 bis 14 (verschiedene Schrittmuster). Die ersten beiden Diagramme zeigen den Positionsmodus, das dritte den Geschwindigkeitsmodus. Steuermodus und Schrittart werden unabhängig │ │ │ │ │ voneinander eingestellt, und es kann jede beliebige Kombination gewählt werden. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 5.19: Schrittimpulsgenerator-Blockdiagramm Positionsmodus │ │ │ │ │ │ │ │ │ │ 281 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 282 / 1327 │ │ │ │ │ │ │ │ │ │ Laden der Komponente stepgen │ │ │ │ │ halcmd: loadrt stepgen step_type= [ctrl_type=] │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -15122,15 +15122,15 @@ │ │ │ │ │ • (bit) stepgen..enable - Aktiviert Ausgabeschritte - wenn false, werden keine Schritte erzeugt. │ │ │ │ │ • (bit) stepgen..step - Schrittimpulsausgang (nur Schritttyp 0). │ │ │ │ │ • (bit) stepgen..dir - Richtungsausgabe (nur Schritttyp 0). │ │ │ │ │ • (bit) stepgen..up - UP Pseudo-PWM Ausgang (nur Schritttyp 1). │ │ │ │ │ • (bit) stepgen..down - DOWN Pseudo-PWM-Ausgang (nur Schritttyp 1). │ │ │ │ │ • (bit) stepgen..phase-A - Ausgang Phase A (nur Schritttypen 2-14). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 283 / 1327 │ │ │ │ │ │ │ │ │ │ • (bit) stepgen..phase-B - Ausgang Phase B (nur Schritttypen 2-14). │ │ │ │ │ • (bit) stepgen..phase-C - Phase-C-Ausgang (nur Schritttypen 3-14). │ │ │ │ │ • (bit) stepgen..phase-D - Phase-D-Ausgang (nur Schritttypen 5-14). │ │ │ │ │ • (bit) stepgen..phase-E - Phase-E-Ausgang (nur Schritttypen 11-14). │ │ │ │ │ @@ -15160,15 +15160,15 @@ │ │ │ │ │ angewendet wird, und maxaccel wird verwendet, um die tatsächliche Frequenz zu rampen, wenn sich │ │ │ │ │ die befohlene Geschwindigkeit abrupt ändert. Wie im Positionsmodus sorgen die richtigen Werte für │ │ │ │ │ diese Parameter dafür, dass der Motor der erzeugten Impulsfolge folgen kann. │ │ │ │ │ 5.8.1.3 Schritttypen │ │ │ │ │ Der Schrittgenerator unterstützt 15 verschiedene Schrittfolgen: │ │ │ │ │ Schritttyp 0 (engl. step type 0) Schritttyp 0 ist der Standard-Schritt- und Richtungstyp. Bei der Konfiguration für den Schritttyp 0 gibt es vier zusätzliche Parameter, die das genaue Timing der Schrittund Richtungssignale bestimmen. In der folgenden Abbildung ist die Bedeutung dieser Parameter │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 284 / 1327 │ │ │ │ │ │ │ │ │ │ dargestellt. Die Parameter sind in Nanosekunden angegeben, werden aber auf ein ganzzahliges Vielfaches der Thread-Periode für den Thread aufgerundet, der make_pulses() aufruft. Wenn zum Beispiel │ │ │ │ │ make_pulses() alle 16 µs aufgerufen wird und steplen 20000 ist, dann sind die Schrittimpulse 2 x 16 │ │ │ │ │ = 32 µs lang. Der Standardwert für alle vier Parameter ist 1ns, aber die automatische Rundung wird │ │ │ │ │ bei der ersten Ausführung des Codes wirksam. Da für einen Schritt steplen ns high und stepspace │ │ │ │ │ @@ -15188,33 +15188,33 @@ │ │ │ │ │ Warnung │ │ │ │ │ Verwenden Sie die Parport-Reset-Funktion nicht mit den Schritttypen 2 - 14. Unerwartete Ergebnisse können auftreten. │ │ │ │ │ │ │ │ │ │ Schritt Typen 2 - 14 (engl. step type 2-14) Die Schritttypen 2 bis 14 sind zustandsabhängig und haben zwei bis fünf Ausgänge. Bei jedem Schritt wird ein Zustandszähler inkrementiert oder dekrementiert. Die Zwei-und-Drei-Phasen-, Vier-Phasen- und Fünf-Phasen-Schritte zeigen die Ausgangsmuster │ │ │ │ │ als Funktion des Zustandszählers. Die maximale Frequenz ist 1.000.000.000 geteilt durch steplen, │ │ │ │ │ und wie in den anderen Modi wird maxfreq gesenkt, wenn es über dem Grenzwert liegt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 5.21: Zwei- und dreiphasige Schritttypen │ │ │ │ │ │ │ │ │ │ 285 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 5.22: Vierphasige Schritttypen │ │ │ │ │ │ │ │ │ │ 286 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 5.23: Fünf-Phasen-Schritttypen │ │ │ │ │ │ │ │ │ │ 287 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 288 / 1327 │ │ │ │ │ │ │ │ │ │ 5.8.1.4 Funktionen │ │ │ │ │ Die Komponente exportiert drei Funktionen. Jede Funktion wirkt auf alle Schrittimpulsgeneratoren die Ausführung verschiedener Generatoren in verschiedenen Threads wird nicht unterstützt. │ │ │ │ │ • (funct) stepgen.make-pulses - Hochgeschwindigkeitsfunktion zum Erzeugen und Zählen von Impulsen (kein Fließkomma). │ │ │ │ │ • (funct) stepgen.update-freq - Die Funktion für niedrige Geschwindigkeiten wandelt Position in Geschwindigkeit um, skaliert und begrenzt. │ │ │ │ │ @@ -15247,15 +15247,15 @@ │ │ │ │ │ des Typs 2 (AUF und AB). Es gibt keinen Standardwert, wenn nicht angegeben wird, │ │ │ │ │ wird kein PWM-Generator installiert. Die maximale Anzahl von Frequenzgeneratoren ist 8 (wie durch │ │ │ │ │ MAX_CHAN in pwmgen.c definiert). Jeder Generator ist unabhängig, aber alle werden durch dieselbe(n) Funktion(en) zur gleichen Zeit aktualisiert. In den folgenden Beschreibungen steht für │ │ │ │ │ die Anzahl der einzelnen Generatoren. Die Nummerierung der PWM-Generatoren beginnt bei 0. │ │ │ │ │ Entfernen (engl. hier unloading) von PWMgen │ │ │ │ │ unloadrt pwmgen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 289 / 1327 │ │ │ │ │ │ │ │ │ │ 5.8.2.1 Ausgangstypen (engl. output types) │ │ │ │ │ Der PWM-Generator unterstützt drei verschiedene ”Ausgangstypen”. │ │ │ │ │ • Ausgangstyp 0 - Nur PWM-Ausgangspin. Nur positive Befehle werden akzeptiert, negative Werte │ │ │ │ │ werden als Null behandelt (und werden durch den Parameter min-dc beeinflusst, wenn er ungleich │ │ │ │ │ @@ -15286,15 +15286,15 @@ │ │ │ │ │ PWM erzeugt. Ist die Frequenz höher als die internen Grenzwerte, wird sie beim nächsten Aufruf │ │ │ │ │ von update_freq() auf den internen Grenzwert gesetzt. Falls ungleich Null und dither falsch, wird der │ │ │ │ │ nächste Aufruf von update_freq() auf das nächste ganzzahlige Vielfache der Periode der Funktion │ │ │ │ │ make_pulses() gesetzt. │ │ │ │ │ • (bit) pwmgen..dither-pwm - Bei true wird Dithering aktiviert, um durchschnittliche PWMFrequenzen oder Tastverhältnisse zu erreichen, die mit reiner PWM nicht möglich sind. Bei false │ │ │ │ │ werden sowohl die PWM-Frequenz als auch das Tastverhältnis auf Werte gerundet, die genau erreicht werden können. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 290 / 1327 │ │ │ │ │ │ │ │ │ │ • (float) pwmgen..min-dc - Minimales Tastverhältnis, zwischen 0,0 und 1,0 (das Tastverhältnis │ │ │ │ │ geht unabhängig von dieser Einstellung auf Null, wenn es deaktiviert wird). │ │ │ │ │ • (float) pwmgen..max-dc - Maximales Tastverhältnis, zwischen 0,0 und 1,0. │ │ │ │ │ • (float) pwmgen..curr-dc - Aktuelles Tastverhältnis - nach allen Begrenzungen und Rundungen (nur Lesen). │ │ │ │ │ @@ -15322,15 +15322,15 @@ │ │ │ │ │ berücksichtigen. Wenn Sie z. B. einen Drehgeber mit 100 Impulsen pro Umdrehung an der Spindel │ │ │ │ │ haben und Ihre maximale Drehzahl 3000 beträgt, sollte das maximale Basisgewinde 25 µs betragen. │ │ │ │ │ Ein Drehgeber mit 100 Impulsen pro Umdrehung hat 400 Zählungen. Die Spindeldrehzahl von 3000 │ │ │ │ │ U/min (engl. RPM) = 50 U/s (engl. RPS, Umdrehungen pro Sekunde). 400 * 50 = 20.000 Zählungen │ │ │ │ │ pro Sekunde oder 50 µs zwischen den Zählungen. │ │ │ │ │ Das Blockdiagramm des Encoderzählers ist ein Blockdiagramm eines Kanals eines Encoderzählers. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 291 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.24: Encoderzähler-Blockdiagramm │ │ │ │ │ Laden des Encoders │ │ │ │ │ halcmd: loadrt encoder [num_chan=] │ │ │ │ │ │ │ │ │ │ @@ -15342,15 +15342,15 @@ │ │ │ │ │ halcmd: unloadrt encoder │ │ │ │ │ │ │ │ │ │ 5.8.3.1 Pins │ │ │ │ │ • encoder..counter-mode (Bit, I/O) (Voreinstellung: FALSE) - Aktiviert den Zählermodus. Bei │ │ │ │ │ true zählt der Zähler jede steigende Flanke des Phase-A-Eingangs und ignoriert den Wert an PhaseB. Dies ist nützlich, um den Ausgang eines einkanaligen (nicht-Quadratur-) Sensors zu zählen. Bei │ │ │ │ │ false zählt er im Quadraturmodus. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 292 / 1327 │ │ │ │ │ │ │ │ │ │ • encoder..missing-teeth (s32, In) (Voreinstellung: 0) - Aktiviert die Verwendung des Fehlzahnindex. Dadurch kann ein einzelner IO-Pin sowohl Positions- als auch Indexinformationen liefern. Wenn das Geberrad 58 Zähne hat, von denen zwei fehlen, die so angeordnet sind, als wären │ │ │ │ │ es 60 (wie bei Kurbelwellensensoren in der Automobilindustrie üblich), dann sollte die Positionsskala auf 60 und die fehlenden Zähne auf 2 gesetzt werden. Um diesen Modus zu verwenden, sollte │ │ │ │ │ counter-mode auf true gesetzt werden. Dieser Modus eignet sich zum Gewindedrehen, aber nicht │ │ │ │ │ zum Gewindeschneiden. │ │ │ │ │ @@ -15381,15 +15381,15 @@ │ │ │ │ │ • encoder..position-scale (float, I/O) – Skalierungsfaktor, in Zählungen pro Längeneinheit. │ │ │ │ │ Wenn beispielsweise die Positionsskala 500 beträgt, werden 1000 Zählwerte des Encoders als Position von 2.0 Einheiten gemeldet. │ │ │ │ │ • encoder..rawcounts (s32, In) - Die rohe Anzahl, wie durch Update-Zähler bestimmt. Dieser │ │ │ │ │ Wert wird häufiger aktualisiert als Anzahl und Position. Es ist auch unbeeinflusst von Reset oder │ │ │ │ │ dem Indeximpuls. │ │ │ │ │ • encoder..reset (bit, In) - Wenn True, werden counts und position sofort auf Null gesetzt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 293 / 1327 │ │ │ │ │ │ │ │ │ │ • encoder..velocity (float, Out) - Geschwindigkeit in skalierten Einheiten pro Sekunde. encoder verwendet einen Algorithmus, der das Quantisierungsrauschen im Vergleich zur einfachen │ │ │ │ │ Differenzierung des position-Ausgangs stark reduziert. Wenn der Wert der tatsächlichen Geschwindigkeit unter der geschätzten Mindestgeschwindigkeit liegt, ist die Geschwindigkeitsausgabe 0. │ │ │ │ │ • encoder..x4-mode (bit, I/O) (Voreinstellung: TRUE)’ - Aktiviert den Times-4-Modus. Bei true │ │ │ │ │ zählt der Zähler jede Flanke der Quadraturwellenform (vier Zählungen pro vollem Zyklus). Bei false │ │ │ │ │ @@ -15409,15 +15409,15 @@ │ │ │ │ │ │ │ │ │ │ 5.8.4 PID │ │ │ │ │ Diese Komponente bietet Proportional/Integral/Derivativ-Regelkreise. Es handelt sich um eine reine │ │ │ │ │ Echtzeitkomponente. Der Einfachheit halber wird in dieser Diskussion davon ausgegangen, dass es │ │ │ │ │ sich um Positionsregelkreise handelt. Diese Komponente kann jedoch auch zur Implementierung anderer Rückkopplungsschleifen wie Geschwindigkeit, Brennerhöhe, Temperatur usw. verwendet werden. │ │ │ │ │ Das Blockdiagramm der PID-Schleife ist ein Blockdiagramm einer einzelnen PID-Schleife. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 294 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.25: PID-Regelkreis-Blockdiagramm │ │ │ │ │ PID laden │ │ │ │ │ halcmd: loadrt pid [num_chan=] [debug=1] │ │ │ │ │ │ │ │ │ │ @@ -15430,15 +15430,15 @@ │ │ │ │ │ exportiert, um gemeinsamen Speicherplatz zu sparen und die Pin-Liste nicht zu überfrachten. │ │ │ │ │ PID entfernen (engl. unload) │ │ │ │ │ halcmd: unloadrt pid │ │ │ │ │ │ │ │ │ │ 5.8.4.1 Pins │ │ │ │ │ Die drei wichtigsten Pins sind │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 295 / 1327 │ │ │ │ │ │ │ │ │ │ • (float) pid..command - Die gewünschte Position, wie sie von einer anderen Systemkomponente befohlen wurde. │ │ │ │ │ • (Float) pid..Rückmeldung - Die aktuelle Position, wie sie von einem Rückmeldegerät wie einem Encoder gemessen wird. │ │ │ │ │ • (float) pid..output - Ein Geschwindigkeitsbefehl, der versucht, von der aktuellen Position │ │ │ │ │ zur gewünschten Position zu gelangen. │ │ │ │ │ @@ -15470,15 +15470,15 @@ │ │ │ │ │ • (float) pid. . FF1 - Feedforward erster Ordnung - Ausgabe proportional zur Ableitung │ │ │ │ │ des Befehls (Geschwindigkeit). │ │ │ │ │ • (float) pid. . FF2 - Feedforward zweiter Ordnung - Ausgabe proportional zur 2. Ableitung │ │ │ │ │ des Befehls (Beschleunigung). │ │ │ │ │ • (float) pid..deadband - Betrag des Fehlers, der ignoriert wird │ │ │ │ │ • (float) pid. .maxerror - Fehlerbegrenzung │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 296 / 1327 │ │ │ │ │ │ │ │ │ │ • (float) pid. .maxerrorI - Limit für Fehlerintegrator │ │ │ │ │ • (float) pid. .maxerrorD - Limit für Fehlerableitung │ │ │ │ │ • (float) pid..maxcmdD - Begrenzung der Befehlsableitung │ │ │ │ │ • (float) pid..maxcmdDD - Begrenzung der 2. Ableitung des Befehls │ │ │ │ │ @@ -15507,15 +15507,15 @@ │ │ │ │ │ halcmd: loadrt sim-encoder num_chan= │ │ │ │ │ │ │ │ │ │ ist die Anzahl der Encoder, die Sie simulieren möchten. Wenn nicht angegeben, wird ein │ │ │ │ │ Encoder installiert. Die maximale Anzahl ist 8 (wie durch MAX_CHAN in sim_encoder.c definiert). │ │ │ │ │ Abladen des sim-encoder │ │ │ │ │ halcmd: unloadrt sim-encoder │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 297 / 1327 │ │ │ │ │ │ │ │ │ │ 5.8.5.1 Pins │ │ │ │ │ • (float) sim-encoder..speed - Der Geschwindigkeitsbefehl für die simulierte Welle. │ │ │ │ │ • (bit) sim-encoder..phase-A - Quadraturausgang. │ │ │ │ │ • (bit) sim-encoder..phase-B - Quadraturausgang. │ │ │ │ │ @@ -15545,15 +15545,15 @@ │ │ │ │ │ │ │ │ │ │ Ist eine Reihe von durch Komma getrennten Dezimalzahlen. Jede Zahl installiert eine Gruppe │ │ │ │ │ identischer Entprellungsfilter, wobei die Zahl angibt, wie viele Filter in der Gruppe enthalten │ │ │ │ │ sind. │ │ │ │ │ Beispiel zum Laden von Debounce │ │ │ │ │ halcmd: loadrt debounce cfg=1,4,2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 298 / 1327 │ │ │ │ │ │ │ │ │ │ werden drei Gruppen von Filtern installiert. Gruppe 0 enthält einen Filter, Gruppe 1 enthält vier │ │ │ │ │ Filter und Gruppe 2 enthält zwei Filter. Der Standardwert für ist ”1”, wodurch eine │ │ │ │ │ einzige Gruppe mit einem einzigen Filter installiert wird. Die maximale Anzahl von Gruppen ist 8 (wie │ │ │ │ │ durch MAX_GROUPS in debounce.c definiert). Die maximale Anzahl von Filtern in einer Gruppe ist │ │ │ │ │ @@ -15584,15 +15584,15 @@ │ │ │ │ │ • (funct) debounce. - Aktualisiert alle Filter in der Gruppe . │ │ │ │ │ │ │ │ │ │ 5.8.7 Siggen │ │ │ │ │ Siggen ist eine Echtzeitkomponente, die Rechteck-, Dreieck- und Sinuswellen erzeugt. Sie wird hauptsächlich zum Testen verwendet. │ │ │ │ │ Laden von siggen │ │ │ │ │ halcmd: loadrt siggen [num_chan=] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 299 / 1327 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ist die Anzahl der Signalgeber, die Sie installieren möchten. Wenn numchan nicht angegeben │ │ │ │ │ wird, dann wird ein Signalgenerator installiert. Die maximale Anzahl von Generatoren ist 16 (wie │ │ │ │ │ durch MAX_CHAN in siggen.c definiert). Jeder Generator ist völlig unabhängig. In den folgenden │ │ │ │ │ @@ -15619,15 +15619,15 @@ │ │ │ │ │ von -1,0 bis +1,0. Wenn ”siggen.0.amplitude” 2,5 und ”siggen.0.offset” 10,0 ist, schwanken die Ausgänge zwischen 7,5 und 12,5. │ │ │ │ │ 5.8.7.2 Parameter │ │ │ │ │ Keine. Fußnote:[Vor Version 2.1 waren Frequenz, Amplitude und Offset Parameter. Sie wurden in Pins │ │ │ │ │ geändert, um die Steuerung durch andere Komponenten zu ermöglichen.] │ │ │ │ │ 5.8.7.3 Funktionen │ │ │ │ │ • (funct) siggen..update - Berechnet neue Werte für alle fünf Ausgaben. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 300 / 1327 │ │ │ │ │ │ │ │ │ │ 5.8.8 lut5 │ │ │ │ │ Die Komponente lut5 ist eine Logikkomponente mit 5 Eingängen, die auf einer Look-up-Tabelle basiert. │ │ │ │ │ • lut5’ benötigt keinen Fließkomma-Thread. │ │ │ │ │ Laden von lut5 │ │ │ │ │ @@ -15810,15 +15810,15 @@ │ │ │ │ │ 0 │ │ │ │ │ 1 │ │ │ │ │ 0 │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Ausgabe │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 301 / 1327 │ │ │ │ │ │ │ │ │ │ Lut5 Zwei Eingänge Beispiel In der folgenden Tabelle haben wir für jede Zeile den Ausgangszustand │ │ │ │ │ ausgewählt, den wir für wahr halten wollen. │ │ │ │ │ Tabelle 5.6: Lut5 Zwei Eingänge Beispiel Look Up Table │ │ │ │ │ Bit 4 │ │ │ │ │ @@ -15885,15 +15885,15 @@ │ │ │ │ │ 5.9.2 Installation │ │ │ │ │ Um eine Komponente zu kompilieren, wenn eine gepackte Version von LinuxCNC verwendet wird, │ │ │ │ │ müssen Entwicklungspakete installiert werden, indem man entweder Synaptic aus dem Hauptmenü │ │ │ │ │ System -> Administration -> Synaptic package manager benutzt oder einen der folgenden Befehle in │ │ │ │ │ einem Terminalfenster ausführt: │ │ │ │ │ Installation von Entwicklungspaketen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 302 / 1327 │ │ │ │ │ │ │ │ │ │ sudo apt install linuxcnc-dev │ │ │ │ │ # oder │ │ │ │ │ sudo apt install linuxcnc-uspace-dev │ │ │ │ │ │ │ │ │ │ @@ -15930,15 +15930,15 @@ │ │ │ │ │ einzige nummerierte Instanz erstellt. │ │ │ │ │ │ │ │ │ │ 5.9.6 Implizite Parameter │ │ │ │ │ Den Funktionen wird implizit der Parameter period übergeben, der die Zeit in Nanosekunden der │ │ │ │ │ letzten Periode zur Ausführung der Komponente angibt. Funktionen, die Fließkommazahlen verwenden, können sich auch auf den Parameter fperiod beziehen, der die Fließkommazeit in Sekunden oder │ │ │ │ │ (period*1e-9) angibt. Dies kann in Komponenten nützlich sein, die Zeitinformationen benötigen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 303 / 1327 │ │ │ │ │ │ │ │ │ │ 5.9.7 Syntax │ │ │ │ │ Eine .comp-Datei besteht aus einer Reihe von Deklarationen, gefolgt von ;; auf einer eigenen Zeile, │ │ │ │ │ gefolgt von C Code, der die Funktionen des Moduls implementiert. │ │ │ │ │ Die Erklärungen umfassen: │ │ │ │ │ @@ -15970,15 +15970,15 @@ │ │ │ │ │ In the HAL identifier for a pin or parameter, # denotes an array item, and must be used in conjunction │ │ │ │ │ with a [SIZE] declaration. The hash marks are replaced with a 0-padded number with the same length │ │ │ │ │ as the number of # characters. │ │ │ │ │ Wenn Sie einen C-Bezeichner erstellen, werden die folgenden Änderungen am HALNAME vorgenommen: │ │ │ │ │ 1. Alle ”#”-Zeichen und alle Zeichen ”.”, ”_” oder ”-”, die unmittelbar davor stehen, werden entfernt. │ │ │ │ │ 2. Alle verbleibenden ”.”- und ”-”-Zeichen werden durch ”_” ersetzt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 304 / 1327 │ │ │ │ │ │ │ │ │ │ 3. Wiederholte „_“-Zeichen werden in ein einzelnes „\_“-Zeichen geändert. │ │ │ │ │ Ein nachgestelltes ”_” wird beibehalten, damit HAL-Kennungen, die sonst mit reservierten Namen │ │ │ │ │ oder Schlüsselwörtern (z. B. ”min”) kollidieren würden, verwendet werden können. │ │ │ │ │ HALNAME │ │ │ │ │ @@ -16035,15 +16035,15 @@ │ │ │ │ │ • TYPE - One of the HAL types: bit, signed, unsigned, or float. The old names s32 and u32 may also │ │ │ │ │ be used, but signed and unsigned are preferred. │ │ │ │ │ • PINDIRECTION - One of the following: in, out, or io. A component sets a value for an out pin, it │ │ │ │ │ reads a value from an in pin, and it may read or set the value of an io pin. │ │ │ │ │ • PARAMDIRECTION - Eine der folgenden: r oder rw. Eine Komponente legt einen Wert für einen │ │ │ │ │ r-Parameter fest und kann den Wert eines rw-Parameters lesen oder festlegen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 305 / 1327 │ │ │ │ │ │ │ │ │ │ • STARTVALUE - Specifies the initial value of a pin or parameter. If it is not specified, then the default │ │ │ │ │ is 0 or FALSE, depending on the type of the item. │ │ │ │ │ • HEADERFILE - Der Name einer Headerdatei, entweder in doppelten Anführungszeichen (include │ │ │ │ │ ”myfile.h”;) oder in spitzen Klammern (include ;). Die Header-Datei wird (unter Verwendung der #include von C) am Anfang der Datei vor Pin- und Parameterdeklarationen eingefügt. │ │ │ │ │ @@ -16074,15 +16074,15 @@ │ │ │ │ │ variable should be used instead. │ │ │ │ │ • option extra_setup yes - (default: no) │ │ │ │ │ If specified, call the function defined by EXTRA_SETUP for each instance. If using the automatically │ │ │ │ │ defined rtapi_app_main, extra_arg is the number of this instance. │ │ │ │ │ • option extra_cleanup yes - (default: no) │ │ │ │ │ If specified, call the function defined by EXTRA_CLEANUP from the automatically defined rtapi_app_exit, or if an error is detected in the automatically defined rtapi_app_main. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 306 / 1327 │ │ │ │ │ │ │ │ │ │ • option userspace yes - (default: no) │ │ │ │ │ If specified, this file describes a userspace (i.e., non-realtime) component, rather than a regular (i.e., │ │ │ │ │ realtime) one. A userspace component may not have functions defined by the function directive. Instead, after all the instances are constructed, the C function void user_mainloop(void); is called. │ │ │ │ │ When this function returns, the component exits. Typically, user_mainloop() will use FOR_ALL_INSTS() │ │ │ │ │ @@ -16122,15 +16122,15 @@ │ │ │ │ │ Diese Erklärung ist erforderlich. │ │ │ │ │ • AUTHOR - Geben Sie den Autor des Moduls für die Dokumentation an. │ │ │ │ │ 5.9.7.4 Datenspeicherung pro Instanz │ │ │ │ │ │ │ │ │ │ • variable CTYPE STARREDNAME; + variable CTYPE STARREDNAME[SIZE]; + variable CTYPE STARRED │ │ │ │ │ = DEFAULT; + variable CTYPE STARREDNAME[SIZE] = DEFAULT; │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 307 / 1327 │ │ │ │ │ │ │ │ │ │ Declare a per-instance variable STARREDNAME of type CTYPE, optionally as an array of SIZE items, │ │ │ │ │ and optionally with a default value DEFAULT. Items with no DEFAULT are initialized to all-bits-zero. │ │ │ │ │ CTYPE is a simple one-word C type, such as float, u32, s32, int, etc. Access to array variables uses │ │ │ │ │ square brackets. │ │ │ │ │ @@ -16164,15 +16164,15 @@ │ │ │ │ │ may change from one version of halcompile to the next. │ │ │ │ │ • FUNCTION(name) - Use this macro to begin the definition of a realtime function, which was previously declared with function NAME. The function includes a parameter period which is the integer │ │ │ │ │ number of nanoseconds between calls to the function. │ │ │ │ │ • EXTRA_SETUP() - Use this macro to begin the definition of the function called to perform extra │ │ │ │ │ setup of this instance. Return a negative Unix errno value to indicate failure (e.g., return -EBUSY │ │ │ │ │ on failure to reserve an I/O port), or 0 to indicate success. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 308 / 1327 │ │ │ │ │ │ │ │ │ │ • EXTRA_CLEANUP() - Use this macro to begin the definition of the function called to perform extra │ │ │ │ │ cleanup of the component. Note that this function must clean up all instances of the component, │ │ │ │ │ not just one. The ”pin_name”, ”parameter_name”, and ”data” macros may not be used here. │ │ │ │ │ • pin_name or parameter_name - For each pin pin_name or param parameter_name there is a macro │ │ │ │ │ @@ -16208,15 +16208,15 @@ │ │ │ │ │ Um die zulässige Anzahl von Persönlichkeitselementen für benutzerdefinierte Komponenten zu ändern, verwenden Sie die Option --personality mit halcompile. Zum Beispiel, um bis zu 128 Persönlichkeitszeiten zu erlauben: │ │ │ │ │ [sudo] halcompile --personality=128 --install ... │ │ │ │ │ │ │ │ │ │ Bei der Verwendung von Komponenten mit Persönlichkeit ist es üblich, ein Persönlichkeitselement für │ │ │ │ │ jede angegebene Komponenteninstanz anzugeben. Beispiel für 3 Instanzen der Logikkomponente: │ │ │ │ │ loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 309 / 1327 │ │ │ │ │ │ │ │ │ │ Anmerkung │ │ │ │ │ Wenn eine loadrt-Zeile mehr Instanzen als Persönlichkeiten angibt, wird den Instanzen mit nicht angegebenen Persönlichkeiten eine Persönlichkeit von 0 zugewiesen. Wenn die angeforderte Anzahl von │ │ │ │ │ Instanzen die Anzahl der erlaubten Persönlichkeiten übersteigt, werden die Persönlichkeiten durch │ │ │ │ │ Indexierung modulo der Anzahl der erlaubten Persönlichkeiten zugewiesen. Es wird eine Meldung │ │ │ │ │ @@ -16253,15 +16253,15 @@ │ │ │ │ │ halcompile --document rtexample.comp │ │ │ │ │ │ │ │ │ │ Die resultierende Manpage „example.9“ kann angezeigt werden mit │ │ │ │ │ man ./example.9 │ │ │ │ │ │ │ │ │ │ oder an einen Standardspeicherort für UNIX man pages kopiert. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 310 / 1327 │ │ │ │ │ │ │ │ │ │ 5.9.14 Kompilieren von Userspace-Komponenten außerhalb des Quellbaums │ │ │ │ │ halcompile’ kann Userspace-Komponenten verarbeiten, kompilieren, installieren und dokumentieren: │ │ │ │ │ halcompile usrexample.comp │ │ │ │ │ halcompile --compile usrexample.comp │ │ │ │ │ @@ -16301,15 +16301,15 @@ │ │ │ │ │ pin in float theta; │ │ │ │ │ function _; │ │ │ │ │ license ”GPL”; // bedeutet GPL v2 oder höher │ │ │ │ │ ;; │ │ │ │ │ #include │ │ │ │ │ FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 311 / 1327 │ │ │ │ │ │ │ │ │ │ 5.9.15.3 out8 │ │ │ │ │ This component is a driver for a fictional card called ”out8”, which has 8 pins of digital output which │ │ │ │ │ are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they │ │ │ │ │ can be at various addresses. The pin is called out_ because out is an identifier used in . It │ │ │ │ │ @@ -16352,15 +16352,15 @@ │ │ │ │ │ } │ │ │ │ │ FUNCTION(_) { outb(out_, ioaddr); } │ │ │ │ │ │ │ │ │ │ 5.9.15.4 hal_loop │ │ │ │ │ component hal_loop; │ │ │ │ │ pin out float example; │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 312 / 1327 │ │ │ │ │ │ │ │ │ │ This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the │ │ │ │ │ name of a standard Linux kernel module, so a loop component might not successfully load if the Linux │ │ │ │ │ loop module was also present on the system. │ │ │ │ │ When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by │ │ │ │ │ @@ -16402,15 +16402,15 @@ │ │ │ │ │ pin out bit or if personality & 0x200; │ │ │ │ │ pin out bit xor if personality & 0x400; │ │ │ │ │ function _ nofp; │ │ │ │ │ description ””” │ │ │ │ │ Experimentelle allgemeine ’Logikfunktion’ Komponente. Kann ’und’, ’oder’ und ’xor’ von bis ←zu 16 Eingängen durchführen. Bestimmen Sie den richtigen Wert für ’Persönlichkeit’ durch ←Hinzufügen: │ │ │ │ │ .IP \\(bu 4 Die Anzahl der Eingangsstifte, in der Regel von 2 bis 16 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 313 / 1327 │ │ │ │ │ │ │ │ │ │ .IP \\(bu 256 (0x100), wenn der ’und’-Ausgang gewünscht ist │ │ │ │ │ .IP \\(bu 512 (0x200), wenn der ’oder’-Ausgang erwünscht ist │ │ │ │ │ IP \\(bu 1024 (0x400), wenn die ’xor’-Ausgabe (exklusives oder) gewünscht ist”””; │ │ │ │ │ license ”GPL”; // bedeutet GPL v2 or höher │ │ │ │ │ @@ -16455,15 +16455,15 @@ │ │ │ │ │ FUNCTION(_) { │ │ │ │ │ if (in < 0){ │ │ │ │ │ set(&out1); │ │ │ │ │ unset(&out2); │ │ │ │ │ }else if (in >0){ │ │ │ │ │ unset(&out2); │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 314 / 1327 │ │ │ │ │ │ │ │ │ │ set(&out2); │ │ │ │ │ }else{ │ │ │ │ │ unset(&out1); │ │ │ │ │ unset(&out2); │ │ │ │ │ @@ -16497,15 +16497,15 @@ │ │ │ │ │ │ │ │ │ │ 5.10.1 Kompatibilität │ │ │ │ │ Die in HAL-Dateien verwendete halcmd-Sprache hat eine einfache Syntax, die eigentlich eine Teilmenge der leistungsfähigeren Allzweck-Skriptsprache Tcl ist. │ │ │ │ │ │ │ │ │ │ 5.10.2 Haltcl-Befehle │ │ │ │ │ Haltcl-Dateien verwenden die Tcl-Skriptsprache, die mit den spezifischen Befehlen der LinuxCNCHardware-Abstraktionsschicht (HAL) erweitert wird. Die HAL-spezifischen Befehle sind: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 315 / 1327 │ │ │ │ │ │ │ │ │ │ addf, alias, │ │ │ │ │ delf, delsig, │ │ │ │ │ getp, gets │ │ │ │ │ ptype, │ │ │ │ │ @@ -16551,15 +16551,15 @@ │ │ │ │ │ wird in HAL-Dateien für halcmd als [JOINT_0]MAX_VELOCITY ausgedrückt │ │ │ │ │ und als $::JOINT_0(MAX_VELOCITY) in Tcl-Dateien für haltcl. │ │ │ │ │ Da INI-Dateien das gleiche ITEM in der gleichen SECTION mehrfach wiederholen kann, ist $::SECTION(ITEM) eigentlich eine Tcl-Liste jedes einzelnen Wertes. │ │ │ │ │ Wenn es nur einen Wert gibt und dieser ein einfacher Wert ist (alle Werte, die nur aus Buchstaben und │ │ │ │ │ Zahlen ohne Leerzeichen bestehen, gehören zu dieser Gruppe), dann ist es möglich, $::SECTION(ITEM) │ │ │ │ │ so zu behandeln, als ob es keine Liste wäre. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 316 / 1327 │ │ │ │ │ │ │ │ │ │ Wenn der Wert Sonderzeichen enthalten könnte - Anführungszeichen, geschweifte Klammern, eingebettete Leerzeichen oder andere Zeichen, die in Tcl eine besondere Bedeutung haben - ist es notwendig, zwischen der Liste der Werte und dem ersten (und möglicherweise einzigen) Wert in der Liste zu │ │ │ │ │ unterscheiden. │ │ │ │ │ In Tcl wird dies als [lindex $::SECTION(ITEM) 0] geschrieben. │ │ │ │ │ Beispiel: Bei den folgenden INI-Werten │ │ │ │ │ @@ -16605,15 +16605,15 @@ │ │ │ │ │ Leerzeichen im bloßen Ausdruck sind nicht erlaubt, verwenden Sie dafür Anführungszeichen: │ │ │ │ │ setp scale.0.gain ”6.28 / 360.0 * $::JOINT_0(radius) * 60.0” │ │ │ │ │ │ │ │ │ │ In anderen Zusammenhängen, wie z. B. bei loadrt, müssen Sie den Tcl ”expr”-Befehl ([expr {}]) ausdrücklich für Berechnungsausdrücke verwenden. │ │ │ │ │ Beispiel │ │ │ │ │ loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 317 / 1327 │ │ │ │ │ │ │ │ │ │ 5.10.6 Haltcl Beispiele │ │ │ │ │ Betrachten Sie das Thema ”Stepgen Headroom”. Software-Stepgen läuft am besten mit einer Beschleunigungsbeschränkung, die ”ein bisschen höher” ist als die vom Bewegungsplaner verwendete. │ │ │ │ │ Bei der Verwendung von halcmd-Dateien erzwingen wir daher, dass INI-Dateien einen manuell berechneten Wert haben. │ │ │ │ │ [JOINT_0] │ │ │ │ │ @@ -16655,15 +16655,15 @@ │ │ │ │ │ │ │ │ │ │ 5.10.8 Haltcl-Verteilungsbeispiele (sim) │ │ │ │ │ Das Verzeichnis configs/sim/axis/simtcl enthält eine INI-Datei, die eine .tcl-Datei verwendet, um eine │ │ │ │ │ haltcl-Konfiguration in Verbindung mit der Verwendung der twopass-Verarbeitung zu demonstrieren. │ │ │ │ │ Das Beispiel zeigt die Verwendung von Tcl-Prozeduren, Schleifen, die Verwendung von Kommentaren │ │ │ │ │ und die Ausgabe auf dem Terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 318 / 1327 │ │ │ │ │ │ │ │ │ │ 5.11 Erstellen von Userspace-Python-Komponenten │ │ │ │ │ 5.11.1 Grundlegende Verwendung (engl. basic usage) │ │ │ │ │ Eine Userspace-Komponente beginnt mit der Erstellung ihrer Pins und Parameter und tritt dann in │ │ │ │ │ eine Schleife ein, die periodisch alle Ausgänge von den Eingängen steuert. Die folgende Komponente │ │ │ │ │ @@ -16717,15 +16717,15 @@ │ │ │ │ │ Wenn Sie ”show pin” schnell eingegeben haben, sehen Sie vielleicht, dass passthrough.out immer noch │ │ │ │ │ den alten Wert von 0 hat. Das liegt an dem Aufruf von time.sleep(1), der dafür sorgt, dass die Zuweisung an den Ausgangspin höchstens einmal pro Sekunde erfolgt. Da es sich hier um eine UserspaceKomponente handelt, kann die tatsächliche Verzögerung zwischen den Zuweisungen viel länger sein, │ │ │ │ │ wenn der von der Passthrough-Komponente verwendete Speicher auf die Festplatte ausgelagert wird; │ │ │ │ │ die Zuweisung könnte verzögert werden, bis dieser Speicher wieder ausgelagert wird. │ │ │ │ │ So eignen sich Userspace-Komponenten für benutzerinteraktive Elemente wie Bedienfelder (Verzögerungen im Bereich von Millisekunden werden nicht bemerkt, und längere Verzögerungen sind akzeptabel), nicht aber für das Senden von Schrittimpulsen an eine Stepper-Treiberkarte (Verzögerungen │ │ │ │ │ müssen immer im Bereich von Mikrosekunden liegen, egal wie). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 319 / 1327 │ │ │ │ │ │ │ │ │ │ 5.11.3 Pins und Parameter erstellen │ │ │ │ │ h = hal.component(”passthrough”) │ │ │ │ │ │ │ │ │ │ Die Komponente selbst wird durch einen Aufruf des Konstruktors hal.component erzeugt. Die Argumente sind der HAL-Komponentenname und (optional) das für Pin- und Parameternamen verwendete │ │ │ │ │ @@ -16770,15 +16770,15 @@ │ │ │ │ │ unter Verwendung der tiefgestellten Syntax aufgerufen oder gesetzt werden: │ │ │ │ │ h[’out’] = h[’in’] │ │ │ │ │ │ │ │ │ │ Um alle Pins mit ihren Werten zu sehen, gibt getpins alle Werte in einem Wörterbuch dieser Komponente zurück. │ │ │ │ │ h.getpins() │ │ │ │ │ >>>{’in’: 0.0, ’out’: 0.0} │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 320 / 1327 │ │ │ │ │ │ │ │ │ │ 5.11.4.1 Ansteuerung der Ausgangsstifte (HAL_OUT) │ │ │ │ │ In regelmäßigen Abständen, in der Regel als Reaktion auf einen Timer, sollten alle HAL_OUT-Pins │ │ │ │ │ ”getrieben” werden, indem ihnen ein neuer Wert zugewiesen wird. Dies sollte unabhängig davon │ │ │ │ │ geschehen, ob sich der Wert von dem zuletzt zugewiesenen unterscheidet oder nicht. Beim Verbinden │ │ │ │ │ @@ -16808,15 +16808,15 @@ │ │ │ │ │ hal.component_exists(”testpanel”) │ │ │ │ │ │ │ │ │ │ 5.11.6.4 component_is_ready (engl. für Komponente ist bereit) │ │ │ │ │ Ist die angegebene Komponente zu diesem Zeitpunkt bereit. │ │ │ │ │ Beispiel │ │ │ │ │ hal.component_is_ready(”testpanel”) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 321 / 1327 │ │ │ │ │ │ │ │ │ │ 5.11.6.5 get_msg_level │ │ │ │ │ Abfrage der aktuellen Echtzeit-Nachrichten (engl. kurz msg)-Stufe. │ │ │ │ │ 5.11.6.6 set_msg_level │ │ │ │ │ Legen Sie die aktuelle Echtzeit-MSG-Stufe fest. Wird zum Debuggen von Informationen verwendet. │ │ │ │ │ @@ -16846,15 +16846,15 @@ │ │ │ │ │ 5.11.6.11 get_info_signals() │ │ │ │ │ Gibt eine Liste von Dicts aller Systemsignale zurück. │ │ │ │ │ listOfDicts = hal.get_info_signals() │ │ │ │ │ signalName1 = listOfDicts[0].get(’NAME’) │ │ │ │ │ signalValue1 = listOfDicts[0].get(’VALUE’) │ │ │ │ │ driverPin1 = listOfDicts[0].get(’DRIVER’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.12 get_info_params() │ │ │ │ │ Gibt eine Liste von Dicts mit allen Systemparametern zurück. │ │ │ │ │ listOfDicts = hal.get_info_params() │ │ │ │ │ paramName1 = listOfDicts[0].get(’NAME’) │ │ │ │ │ paramValue1 = listOfDicts[0].get(’VALUE’) │ │ │ │ │ paramDirection1 = listOfDicts[0].get(’DIRECTION’) │ │ │ │ │ @@ -16886,15 +16886,15 @@ │ │ │ │ │ │ │ │ │ │ 5.11.6.18 get │ │ │ │ │ Ermittelt den Wert des HAL-Objekts. │ │ │ │ │ h.in.get() │ │ │ │ │ │ │ │ │ │ 322 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.19 set │ │ │ │ │ Setzt den Wert des HAL-Objekts. │ │ │ │ │ h.out.set(10) │ │ │ │ │ │ │ │ │ │ 5.11.6.20 is_pin │ │ │ │ │ Ist das Objekt ein Pin oder Parameter? │ │ │ │ │ @@ -16921,15 +16921,15 @@ │ │ │ │ │ • HAL_IN │ │ │ │ │ • HAL_OUT │ │ │ │ │ • HAL_RO │ │ │ │ │ • HAL_RW │ │ │ │ │ │ │ │ │ │ 323 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 324 / 1327 │ │ │ │ │ │ │ │ │ │ • MSG_NONE │ │ │ │ │ • MSG_ALL │ │ │ │ │ • MSG_DBG │ │ │ │ │ • MSG_ERR │ │ │ │ │ @@ -16963,15 +16963,15 @@ │ │ │ │ │ def _on_example_trigger_change(self,pin,userdata=None): │ │ │ │ │ print(”pin value changed to: {}”.format(pin.get())) │ │ │ │ │ print(”pin name= {}”.format(pin.get_name())) │ │ │ │ │ print(”pin type= {}”.format(pin.get_type())) │ │ │ │ │ # dies kann außerhalb der Funktion aufgerufen werden │ │ │ │ │ self.example_trigger.get() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 325 / 1327 │ │ │ │ │ │ │ │ │ │ 5.11.10 Verwendung mit hal_glib in QtVCP Handler │ │ │ │ │ QtVCP nutzt die hal_glib Bibliothek, die verwendet werden kann, um ein ”watcher” Signal an einen │ │ │ │ │ HAL-Eingangspin anzuschließen. │ │ │ │ │ Dieses Signal kann verwendet werden, um eine Funktion zu registrieren, die aufgerufen wird, wenn │ │ │ │ │ @@ -17008,15 +17008,15 @@ │ │ │ │ │ microcontroller, and connect the microcontroller to the PC using a serial interface. Python has a │ │ │ │ │ very capable serial interface module called pyserial (Ubuntu package name ”python3-serial”, in the │ │ │ │ │ universe repository). │ │ │ │ │ • Attach a LCDProc-compatible LCD module and use it to display a digital readout with information │ │ │ │ │ of your choice (Ubuntu package name ”lcdproc”, in the universe repository). │ │ │ │ │ • Create a virtual control panel using any GUI library supported by Python (gtk, Qt, wxWindows, etc.). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 326 / 1327 │ │ │ │ │ │ │ │ │ │ 5.12 Kanonische Geräteschnittstellen (engl. canonical device │ │ │ │ │ interfaces) │ │ │ │ │ 5.12.1 Einführung │ │ │ │ │ Die folgenden Abschnitte zeigen die Pins, Parameter und Funktionen, die von ”kanonischen Geräten” │ │ │ │ │ @@ -17047,15 +17047,15 @@ │ │ │ │ │ (bit) out │ │ │ │ │ Wert, der (eventuell invertiert) an den Hardware-Ausgang geschrieben werden soll. │ │ │ │ │ 5.12.3.2 Parameter(((HAL Digital Output Parameter)) │ │ │ │ │ │ │ │ │ │ (bit) invert │ │ │ │ │ Wenn TRUE, wird out vor dem Schreiben in die Hardware invertiert. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 327 / 1327 │ │ │ │ │ │ │ │ │ │ 5.12.3.3 Funktionen │ │ │ │ │ │ │ │ │ │ (funct) write │ │ │ │ │ Lesen Sie out und invert und stellen Sie die Hardwareausgabe entsprechend ein. │ │ │ │ │ @@ -17084,15 +17084,15 @@ │ │ │ │ │ Lesen Sie die Werte dieses analogen Eingangskanals. Dies kann zum Lesen einzelner Kanäle │ │ │ │ │ verwendet werden, oder es können alle Kanäle gelesen werden │ │ │ │ │ │ │ │ │ │ 5.12.5 Analogausgang │ │ │ │ │ Der kanonische Analogausgang (E/A-Typ: adcout). Dieser ist für jede Art von Hardware gedacht, │ │ │ │ │ die einen mehr oder weniger kontinuierlichen Wertebereich ausgeben kann. Beispiele sind DigitalAnalog-Wandler oder PWM-Generatoren. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 328 / 1327 │ │ │ │ │ │ │ │ │ │ 5.12.5.1 Pins │ │ │ │ │ │ │ │ │ │ (float) Wert │ │ │ │ │ Der zu schreibende Wert. Der tatsächliche Wert, der an die Hardware ausgegeben wird, hängt │ │ │ │ │ @@ -17127,15 +17127,15 @@ │ │ │ │ │ 5.13 HAL-Werkzeuge │ │ │ │ │ 5.13.1 Halcmd │ │ │ │ │ Halcmd ist ein Kommandozeilen-Tool für die Manipulation des HAL. Es gibt eine ziemlich vollständige │ │ │ │ │ Manpage für Link:../man/man1/halcmd.1.html[halcmd], die installiert wird, wenn Sie LinuxCNC entweder aus dem Quellcode oder einem Paket installiert haben. Die Manpage bietet Informationen zur │ │ │ │ │ Benutzung: │ │ │ │ │ man halcmd │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 329 / 1327 │ │ │ │ │ │ │ │ │ │ Wenn Sie LinuxCNC für ”run-in-place” kompiliert haben, müssen Sie das rip-environment Skript als │ │ │ │ │ Quelle angeben, um die Manpage verfügbar zu machen: │ │ │ │ │ cd toplevel_directory_for_rip_build │ │ │ │ │ . scripts/rip-environment │ │ │ │ │ @@ -17168,23 +17168,23 @@ │ │ │ │ │ displays the value. Multiple Halmeters can be open at the same time. If you use a script to open │ │ │ │ │ multiple Halmeters you can set the position of each one with the argument -g X Y relative to the │ │ │ │ │ upper left corner of your screen. For example: │ │ │ │ │ loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500 │ │ │ │ │ │ │ │ │ │ Siehe die Manpage für weitere Optionen und den Abschnitt Halmeter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Abbildung 5.26: Halmeter-Auswahlfenster │ │ │ │ │ │ │ │ │ │ Abbildung 5.27: Halmeter-Watch Fenster │ │ │ │ │ │ │ │ │ │ 330 / 1327 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 331 / 1327 │ │ │ │ │ │ │ │ │ │ 5.13.3 Halshow │ │ │ │ │ Halshow (komplettee Beschreibung der Anwendung) kann von der Kommandozeile aus gestartet werden, um Details für ausgewählte Komponenten, Pins, Parameter, Signale, Funktionen und Threads einer laufenden HAL anzuzeigen. Die Registerkarte WATCH bietet eine kontinuierliche Anzeige der ausgewählten Pins, Parameter und Signale. Das Menü ”Datei” enthält Schaltflächen zum Speichern der │ │ │ │ │ Watch-Elemente in einer Watch-Liste und zum Laden einer bestehenden Watch-Liste. Die Elemente │ │ │ │ │ der Überwachungsliste können auch automatisch beim Starten geladen werden. Für die Verwendung │ │ │ │ │ @@ -17199,15 +17199,15 @@ │ │ │ │ │ --iformat format_string_for_int │ │ │ │ │ Hinweise: │ │ │ │ │ Erstellen Sie einen watchfile in halshow mit: ’File/Save Watch List’. │ │ │ │ │ LinuxCNC muss für die Standalone-Nutzung ausgeführt werden. │ │ │ │ │ │ │ │ │ │ Abbildung 5.28: Halshow Watch Tab │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 332 / 1327 │ │ │ │ │ │ │ │ │ │ A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens │ │ │ │ │ ”pin+”, ”param+”, ”sig=+” followed by the appropriate pin, param, or signal name. The token-name │ │ │ │ │ pairs are separated by a space character. │ │ │ │ │ Einzeiliges Watchfile-Beispiel │ │ │ │ │ @@ -17253,15 +17253,15 @@ │ │ │ │ │ A named item can specify a pin, param, or signal │ │ │ │ │ The item must be writable, e.g.: │ │ │ │ │ pin: │ │ │ │ │ IN or I/O (and not connected to a signal with a writer) │ │ │ │ │ param: RW │ │ │ │ │ signal: connected to a writable pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 333 / 1327 │ │ │ │ │ │ │ │ │ │ HAL-Elementtypen bit, s32, u32, float werden unterstützt │ │ │ │ │ When a bit item is specified, a pushbutton is created │ │ │ │ │ to manage the item in one of three manners specified │ │ │ │ │ by radio buttons: │ │ │ │ │ @@ -17285,15 +17285,15 @@ │ │ │ │ │ Abbildung 5.29: sim_pin-Fenster │ │ │ │ │ │ │ │ │ │ 5.13.6 simulate_probe (Sonde simulieren) │ │ │ │ │ simulate_probe ist ein einfaches GUI, um die Aktivierung des Pins motion.probe-input zu simulieren. │ │ │ │ │ Verwendung: │ │ │ │ │ simulate_probe & │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 334 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 5.30: Fenster simulieren_probe │ │ │ │ │ │ │ │ │ │ 5.13.7 HAL Histogramm │ │ │ │ │ hal-histogram ist ein Kommandozeilenprogramm zur Anzeige von Histogrammen für HAL-Pins. │ │ │ │ │ @@ -17345,15 +17345,15 @@ │ │ │ │ │ angezeigten nbins │ │ │ │ │ anzeigen, Voreinstellung │ │ │ │ │ aus │ │ │ │ │ Fortschritt und │ │ │ │ │ Fehlersuche, │ │ │ │ │ standardmäßig aus │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 335 / 1327 │ │ │ │ │ │ │ │ │ │ 2. If no pinname is specified, default is: motion-command-handler.time. │ │ │ │ │ 3. Diese App kann für 5 Pins geöffnet werden. │ │ │ │ │ 4. Unterstützt werden die Pintypen float, s32, u32, bit. │ │ │ │ │ 5. Der Pin muss mit einem Thread verbunden sein, der Fließkomma unterstützt. Für einen BasisThread kann dies die Verwendung von loadrt motmod ... base_thread_fp=1 erfordern. │ │ │ │ │ @@ -17363,15 +17363,15 @@ │ │ │ │ │ 5.13.8 Halreport │ │ │ │ │ halreport ist ein Befehlszeilen-Dienstprogramm, das einen Bericht über HAL-Verbindungen für eine │ │ │ │ │ laufende LinuxCNC (oder andere HAL) Anwendung erzeugt. Der Bericht zeigt alle Signalverbindungen an und weist auf mögliche Probleme hin. Enthaltene Informationen: │ │ │ │ │ 1. Systembeschreibung und Kernelversion. │ │ │ │ │ 2. Signale und alle angeschlossenen Ausgangs-, E/A- und Eingangspins. │ │ │ │ │ 3. Eines jeden Pin component_function, thread und addf-Reihenfolge. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 336 / 1327 │ │ │ │ │ │ │ │ │ │ 4. Pins von Userspace-Komponenten mit nicht geordneten Funktionen. │ │ │ │ │ 5. Identifizierung von unbekannten Funktionen für nicht behandelte Komponenten. │ │ │ │ │ 6. Signale ohne Ausgang. │ │ │ │ │ 7. Signale ohne Eingänge. │ │ │ │ │ @@ -17428,15 +17428,15 @@ │ │ │ │ │ OUT: │ │ │ │ │ │ │ │ │ │ pos-cmd-0 │ │ │ │ │ joint.0.motor-pos-cmd │ │ │ │ │ │ │ │ │ │ motion-command-handler servo-thread 002 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ IN: │ │ │ │ │ │ │ │ │ │ ..................... │ │ │ │ │ X_pid.command │ │ │ │ │ │ │ │ │ │ motion-controller │ │ │ │ │ @@ -17475,15 +17475,15 @@ │ │ │ │ │ Komponentenstifte, die nicht mit einer bekannten Gewindefunktion verbunden werden können, melden die Funktion als ”Unbekannt”. │ │ │ │ │ │ │ │ │ │ halreport generates a connections report (without pin types, and current values) for a running HAL │ │ │ │ │ application to aid in designing and verifying connections. This helps with the understanding what the │ │ │ │ │ source of a pin value is. Use this information with applications like halshow, halmeter, halscope or │ │ │ │ │ the halcmd show command in a terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 338 / 1327 │ │ │ │ │ │ │ │ │ │ Kapitel 6 │ │ │ │ │ │ │ │ │ │ Hardware-Treiber │ │ │ │ │ 6.1 Parallelport-Treiber │ │ │ │ │ @@ -17511,15 +17511,15 @@ │ │ │ │ │ Bei einigen Computern können die BIOS-Einstellungen beeinflussen, ob der x-Modus verwendet werden kann. Der SPP-Modus funktioniert am ehesten. │ │ │ │ │ │ │ │ │ │ Andere Kombinationen werden nicht unterstützt, und ein Anschluss kann nach der Installation des │ │ │ │ │ Treibers nicht mehr von Eingang auf Ausgang umgestellt werden. │ │ │ │ │ Der parport-Treiber kann bis zu 8 Ports steuern (definiert durch MAX_PORTS in hal_parport.c). Die │ │ │ │ │ Ports werden bei Null beginnend nummeriert. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 339 / 1327 │ │ │ │ │ │ │ │ │ │ 6.1.1 Laden │ │ │ │ │ Der hal_parport Treiber ist eine Echtzeitkomponente und muss daher mit loadrt in den EchtzeitThread geladen werden. Der Konfigurationsstring beschreibt die zu verwendenden parallelen Ports │ │ │ │ │ und (optional) deren Typen. Wenn der Konfigurationsstring nicht mindestens einen Port beschreibt, │ │ │ │ │ ist dies ein Fehler. │ │ │ │ │ @@ -17546,15 +17546,15 @@ │ │ │ │ │ zu konfigurieren. Bei ISA-Bus-Ports ist dies in der Regel kein Problem, da die Ports fast immer eine │ │ │ │ │ bekannte Adresse haben, wie z. B. 0x278 oder 0x378, die normalerweise im BIOS konfiguriert werden. │ │ │ │ │ Die Adressen von PCI-Bus-Karten werden normalerweise mit lspci -v in einer I/O-Ports-Zeile oder │ │ │ │ │ in einer Kernel-Meldung nach der Ausführung von sudo modprobe -a parport_pc gefunden. Es gibt │ │ │ │ │ keine Standardadresse, wenn also nicht mindestens eine Adresse enthält, ist das │ │ │ │ │ ein Fehler. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 340 / 1327 │ │ │ │ │ │ │ │ │ │ Abbildung 6.1: Parport-Blockdiagramm │ │ │ │ │ Typ Für jede parallele Schnittstelle, die vom hal_parport Treiber verwaltet wird, kann optional ein │ │ │ │ │ Typ angegeben werden. Der Typ ist einer von in, out, epp oder x. │ │ │ │ │ Tabelle 6.1: Parallele Port-Richtung │ │ │ │ │ @@ -17614,15 +17614,15 @@ │ │ │ │ │ out │ │ │ │ │ out │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 341 / 1327 │ │ │ │ │ │ │ │ │ │ Tabelle 6.1: (continued) │ │ │ │ │ Pin │ │ │ │ │ 14 │ │ │ │ │ 15 │ │ │ │ │ @@ -17682,15 +17682,15 @@ │ │ │ │ │ I/O ports at c800 [size=8] │ │ │ │ │ I/O ports at cc00 [size=16] │ │ │ │ │ │ │ │ │ │ Beim Experimentieren habe ich festgestellt, dass der erste Anschluss (der Anschluss auf der Karte) die │ │ │ │ │ dritte Adresse (c000) und der zweite Anschluss (derjenige, der mit einem Flachbandkabel angeschlossen wird) die erste Adresse (b800) verwendet. Das folgende Beispiel zeigt den Onboard-Parallelport │ │ │ │ │ und einen PCI-Parallelport, der die Standard-Ausgangsrichtung verwendet. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 342 / 1327 │ │ │ │ │ │ │ │ │ │ loadrt hal_parport cfg=”0x378 0xc000” │ │ │ │ │ │ │ │ │ │ Bitte beachten Sie, dass Ihre Werte abweichen können. Die Netmos-Karten sind Plug-N-Play, und │ │ │ │ │ könnte ihre Einstellungen ändern, je nachdem, welchen Steckplatz Sie sie in, so dass, wenn Sie \ │ │ │ │ │ @@ -17720,15 +17720,15 @@ │ │ │ │ │ • parport.

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

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

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

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

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

.pin--out (bit) Drives a physical output pin. │ │ │ │ │ • parport.

.pin--in (bit) Tracks a physical input pin. │ │ │ │ │ • parport.

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

refer to │ │ │ │ │ the same parameter. Named parameters must be enclosed with < > marks. │ │ │ │ │ @@ -38822,15 +38822,15 @@ │ │ │ │ │ • #<_motion_mode> - Return the interpreter’s current motion mode: │ │ │ │ │ Motion return │ │ │ │ │ mode │ │ │ │ │ value │ │ │ │ │ G1 │ │ │ │ │ 10 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Motion return │ │ │ │ │ mode │ │ │ │ │ value │ │ │ │ │ G2 │ │ │ │ │ 20 │ │ │ │ │ G3 │ │ │ │ │ @@ -38912,15 +38912,15 @@ │ │ │ │ │ • #<_absolute> - Return 1 if G90 is on, else 0. │ │ │ │ │ • #<_incremental> - Return 1 if G91 is on, else 0. │ │ │ │ │ • #<_inverse_time> - Return 1 if inverse feed mode (G93) is on, else 0. │ │ │ │ │ • #<_units_per_minute> - Return 1 if Units/minute feed mode (G94) is on, else 0. │ │ │ │ │ │ │ │ │ │ 846 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 847 / 1279 │ │ │ │ │ │ │ │ │ │ • #<_units_per_rev> - Return 1 if Units/revolution mode (G95) is on, else 0. │ │ │ │ │ • #<_coord_system> - Return a float of the current coordinate system name (G54..G59.3). For example if your in G55 coordinate system the return value is 550.000000 and if your in G59.1 the return │ │ │ │ │ value is 591.000000. │ │ │ │ │ Mode │ │ │ │ │ @@ -38966,15 +38966,15 @@ │ │ │ │ │ • #<_adaptive_feed> - Return 1 if adaptive feed (M52 or M52 P1) is on, else 0. │ │ │ │ │ • #<_feed_hold> - Return 1 if feed hold switch is enabled (M53 P1), else 0. │ │ │ │ │ • #<_feed> - Return the current value of F, not the actual feed rate. │ │ │ │ │ • #<_rpm> - Return the current value of S, not the actual spindle speed. │ │ │ │ │ • #<_x> - Return current relative X coordinate including all offsets. Same as #5420. In a lathe │ │ │ │ │ configuration, it always returns radius. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 848 / 1279 │ │ │ │ │ │ │ │ │ │ • #<_y> - Return current relative Y coordinate including all offsets. Same as #5421. │ │ │ │ │ • #<_z> - Return current relative Z coordinate including all offsets. Same as #5422. │ │ │ │ │ • #<_a> - Return current relative A coordinate including all offsets. Same as #5423. │ │ │ │ │ • #<_b> - Return current relative B coordinate including all offsets. Same as #5424. │ │ │ │ │ @@ -39009,15 +39009,15 @@ │ │ │ │ │ If enabled in the INI file G-code has access to the values of INI file entries and HAL pins. │ │ │ │ │ • #<_ini[section]name> Returns the value of the corresponding item in the INI file. │ │ │ │ │ For example, if the INI file looks like so: │ │ │ │ │ [SETUP] │ │ │ │ │ XPOS = 3.145 │ │ │ │ │ YPOS = 2.718 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 849 / 1279 │ │ │ │ │ │ │ │ │ │ you may refer to the named parameters #<_ini[setup]xpos> and #<_ini[setup]ypos> within Gcode. │ │ │ │ │ EXISTS can be used to test for presence of a given INI file variable: │ │ │ │ │ o100 if [EXISTS[#<_ini[setup]xpos>]] │ │ │ │ │ (debug, [setup]xpos exists: #<_ini[setup]xpos>) │ │ │ │ │ @@ -39060,15 +39060,15 @@ │ │ │ │ │ Binary operators only appear inside expressions. There are four basic mathematical operations: addition (+), subtraction (-), multiplication (*), and division (/). There are three logical operations: │ │ │ │ │ non-exclusive or (OR), exclusive or (XOR), and logical and (AND). The eighth operation is the modulus │ │ │ │ │ operation (MOD). The ninth operation is the power operation (**) of raising the number on the left of │ │ │ │ │ the operation to the power on the right. The relational operators are equality (EQ), inequality (NE), │ │ │ │ │ strictly greater than (GT), greater than or equal to (GE), strictly less than (LT), and less than or equal │ │ │ │ │ to (LE). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 850 / 1279 │ │ │ │ │ │ │ │ │ │ The binary operations are divided into several groups according to their precedence. If operations │ │ │ │ │ in different precedence groups are strung together (for example in the expression [2.0 / 3 * 1.5 - 5.5 │ │ │ │ │ / 11.0]), operations in a higher group are to be performed before operations in a lower group. If an │ │ │ │ │ expression contains more than one operation from the same group (such as the first / and * in the │ │ │ │ │ @@ -39127,15 +39127,15 @@ │ │ │ │ │ Round to nearest integer │ │ │ │ │ Base-e logarithm │ │ │ │ │ Sine │ │ │ │ │ Square Root │ │ │ │ │ Tangent │ │ │ │ │ Check named Parameter │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 851 / 1279 │ │ │ │ │ │ │ │ │ │ The FIX function rounds towards the left (less positive or more negative) on a number line, so that │ │ │ │ │ FIX[2.8] =2 and FIX[-2.8] = -3. │ │ │ │ │ The FUP operation rounds towards the right (more positive or less negative) on a number line; │ │ │ │ │ FUP[2.8] = 3 and FUP[-2.8] = -2. │ │ │ │ │ @@ -39180,15 +39180,15 @@ │ │ │ │ │ If the third group (the comments) contains more than one comment and is reordered, only the last │ │ │ │ │ comment will be used. │ │ │ │ │ If each group is kept in order or reordered without changing the meaning of the line, then the three │ │ │ │ │ groups may be interleaved in any way without changing the meaning of the line. For example, the │ │ │ │ │ line g40 g1 #3=15 (foo) #4=-7.0 has five items and means exactly the same thing in any of the 120 │ │ │ │ │ possible orders (such as #4=-7.0 g1 #3=15 g40 (foo)) for the five items. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 852 / 1279 │ │ │ │ │ │ │ │ │ │ 11.4.11 Commands and Machine Modes │ │ │ │ │ Many commands cause the controller to change from one mode to another, and the mode stays active │ │ │ │ │ until some other command changes it implicitly or explicitly. Such commands are called modal. For │ │ │ │ │ example, if coolant is turned on, it stays on until it is explicitly turned off. The G-codes for motion are │ │ │ │ │ @@ -39215,15 +39215,15 @@ │ │ │ │ │ @.5 ^90 │ │ │ │ │ @.5 ^90 │ │ │ │ │ G90 G0 X0 Y0 M2 │ │ │ │ │ │ │ │ │ │ You can see from the following figure that the output is not what you might expect. Because we added │ │ │ │ │ 0.5 to the distance each time the distance from the XY zero position increased with each line. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 853 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 11.10: Polar Spiral │ │ │ │ │ The following code will produce our square pattern: │ │ │ │ │ F100 G1 @.5 ^90 │ │ │ │ │ G91 ^90 │ │ │ │ │ @@ -39231,15 +39231,15 @@ │ │ │ │ │ ^90 │ │ │ │ │ ^90 │ │ │ │ │ G90 G0 X0 Y0 M2 │ │ │ │ │ │ │ │ │ │ As you can see by only adding to the angle by 90 degrees each time the end point distance is the same │ │ │ │ │ for each line. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 854 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 11.11: Polar Square │ │ │ │ │ It is an error if: │ │ │ │ │ • An incremental move is started at the origin │ │ │ │ │ • A mix of Polar and X or Y words are used │ │ │ │ │ @@ -39263,15 +39263,15 @@ │ │ │ │ │ G92.2, G92.3, │ │ │ │ │ G0, G1, G2, G3, G33, G38.n, G73, G76, G80, │ │ │ │ │ G81 │ │ │ │ │ G82, G83, G84, G85, G86, G87, G88, G89 │ │ │ │ │ G17, G18, G19, G17.1, G18.1, G19.1 │ │ │ │ │ G90, G91 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 855 / 1279 │ │ │ │ │ │ │ │ │ │ Table 11.7: (continued) │ │ │ │ │ Modal Group Meaning │ │ │ │ │ Arc IJK Distance Mode │ │ │ │ │ (Group 4) │ │ │ │ │ @@ -39336,15 +39336,15 @@ │ │ │ │ │ │ │ │ │ │ 11.4.14 Comments │ │ │ │ │ Comments are purely informative and have no influence on machine behaviour. │ │ │ │ │ Comments can be added to lines of G-code to help clear up the intention of the programmer. Comments │ │ │ │ │ can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon. The │ │ │ │ │ semi-colon is not treated as the start of a comment when enclosed in parentheses. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 856 / 1279 │ │ │ │ │ │ │ │ │ │ Comments may appear between words, but not between words and their corresponding parameter. │ │ │ │ │ So, S100(set speed)F200(feed) is OK while S(speed)100F(feed) is not. │ │ │ │ │ Here is an example of a commented program: │ │ │ │ │ G0 (Rapid to start) X1 Y1 │ │ │ │ │ @@ -39379,15 +39379,15 @@ │ │ │ │ │ • (LOGAPPEND,filename) - opens the named log file. If the file already exists, the data is appended. │ │ │ │ │ • (LOGCLOSE) - closes an open log file. │ │ │ │ │ • (LOG,) - everything past the , is written to the log file if it is open. Supports expansion of parameters │ │ │ │ │ as described below. │ │ │ │ │ Examples of logging are in nc_files/examples/smartprobe.ngc and in nc_files/ngcgui_lib/rectange_probe.ngc │ │ │ │ │ sample G-code files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 857 / 1279 │ │ │ │ │ │ │ │ │ │ 11.4.18 Debug Messages │ │ │ │ │ • (DEBUG,) - displays a message like (MSG,) with the addition of special handling for comment parameters as described below. │ │ │ │ │ │ │ │ │ │ 11.4.19 Print Messages │ │ │ │ │ @@ -39421,15 +39421,15 @@ │ │ │ │ │ 11.4.21 File Requirements │ │ │ │ │ A G-code file must contain one or more lines of G-code and be terminated with a Program End. Any │ │ │ │ │ G-code past the program end is not evaluated. │ │ │ │ │ If a program end code is not used a pair of percent signs % with the first percent sign on the first │ │ │ │ │ line of the file followed by one or more lines of G-code and a second percent sign. Any code past the │ │ │ │ │ second percent sign is not evaluated. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 858 / 1279 │ │ │ │ │ │ │ │ │ │ Warning │ │ │ │ │ Using % to wrap a G-code file will not do the same thing as using a program end. The machine │ │ │ │ │ will be in what ever state the program left it in using %, the spindle and coolant may still be on │ │ │ │ │ and things like G90/91 are left as the last program set them. If you don’t use a proper preamble │ │ │ │ │ @@ -39464,15 +39464,15 @@ │ │ │ │ │ • Enable or disable overrides (M48, M49,M50,M51,M52,M53). │ │ │ │ │ • User-defined Commands (M100-M199). │ │ │ │ │ • Dwell (G4). │ │ │ │ │ • Set active plane (G17, G18, G19). │ │ │ │ │ • Set length units (G20, G21). │ │ │ │ │ • Cutter radius compensation on or off (G40, G41, G42) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 859 / 1279 │ │ │ │ │ │ │ │ │ │ • Cutter length compensation on or off (G43, G49) │ │ │ │ │ • Coordinate system selection (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3). │ │ │ │ │ • Set path control mode (G61, G61.1, G64) │ │ │ │ │ • Set distance mode (G90, G91). │ │ │ │ │ @@ -39508,15 +39508,15 @@ │ │ │ │ │ Don’t use line numbers Line numbers offer no benefits. When line numbers are reported in error │ │ │ │ │ messages, the numbers refer to the line number in the file, not the N-word value. │ │ │ │ │ When several coordinate systems are moved Consider using the inverse time speed mode. │ │ │ │ │ Because the meaning of an F word in meters per minute varies depending on the type of axis to be │ │ │ │ │ moved and because the amount of removed material does not depend only on the feed rate, it can be │ │ │ │ │ simpler to use G93, inverse speed of time, to achieve the removal of desired material. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 860 / 1279 │ │ │ │ │ │ │ │ │ │ 11.4.25 Linear and Rotary Axis │ │ │ │ │ Because the meaning of an F-word in feed-per-minute mode varies depending on which axes are commanded to move, and because the amount of material removed does not depend only on the feed rate, │ │ │ │ │ it may be easier to use G93 inverse time feed mode to achieve the desired material removal rate. │ │ │ │ │ │ │ │ │ │ @@ -39550,15 +39550,15 @@ │ │ │ │ │ Any items in the G-code prototypes not explicitly described as optional are required. │ │ │ │ │ The values following letters are often given as explicit numbers. Unless stated otherwise, the explicit │ │ │ │ │ numbers can be real values. For example, G10 L2 could equally well be written G[2*5] L[1+1]. If the │ │ │ │ │ value of parameter 100 were 2, G10 L#100 would also mean the same. │ │ │ │ │ If L- is written in a prototype the - will often be referred to as the L number, and so on for any other │ │ │ │ │ letter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11.5.2 G-Code Quick Reference Table │ │ │ │ │ Code │ │ │ │ │ G0 │ │ │ │ │ G1 │ │ │ │ │ G2 G3 │ │ │ │ │ G4 │ │ │ │ │ @@ -39664,15 +39664,15 @@ │ │ │ │ │ implemented) │ │ │ │ │ Boring Cycle, Dwell, Feed Out │ │ │ │ │ Distance Mode │ │ │ │ │ Arc Distance Mode │ │ │ │ │ │ │ │ │ │ 861 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Code │ │ │ │ │ G92 │ │ │ │ │ G92.1 G92.2 │ │ │ │ │ G92.3 │ │ │ │ │ G93 G94 G95 │ │ │ │ │ G96 G97 │ │ │ │ │ @@ -39720,15 +39720,15 @@ │ │ │ │ │ G1 axes │ │ │ │ │ │ │ │ │ │ For linear (straight line) motion at programmed feed rate (for cutting or not), program G1 ’axes’, │ │ │ │ │ where all the axis words are optional. The G1 is optional if the current motion mode is G1. This will │ │ │ │ │ produce coordinated motion to the destination point at the current feed rate (or slower). │ │ │ │ │ G1 Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 863 / 1279 │ │ │ │ │ │ │ │ │ │ G90 (set absolute distance mode) │ │ │ │ │ G1 X1.2 Y-3 F10 (linear move at a feed rate of 10 from current position to X1.2 Y-3) │ │ │ │ │ Z-2.3 (linear move at same feed rate from current position to Z-2.3) │ │ │ │ │ Z1 F25 (linear move at a feed rate of 25 from current position to Z1) │ │ │ │ │ @@ -39769,15 +39769,15 @@ │ │ │ │ │ If the pitch of the helix is very small (less than the naive CAM tolerance) then the helix might │ │ │ │ │ be converted into a straight line. Bug #222 │ │ │ │ │ │ │ │ │ │ If a line of code makes an arc and includes rotary axis motion, the rotary axes turn at a constant rate │ │ │ │ │ so that the rotary motion starts and finishes when the XYZ motion starts and finishes. Lines of this │ │ │ │ │ sort are hardly ever programmed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 864 / 1279 │ │ │ │ │ │ │ │ │ │ If cutter compensation is active, the motion will differ from the above; see the Cutter Compensation │ │ │ │ │ section. │ │ │ │ │ The arc center is absolute or relative as set by G90.1 or G91.1 respectively. │ │ │ │ │ Two formats are allowed for specifying an arc: Center Format and Radius Format. │ │ │ │ │ @@ -39812,15 +39812,15 @@ │ │ │ │ │ • Z - helix │ │ │ │ │ • I - X offset │ │ │ │ │ • J - Y offset │ │ │ │ │ • P - number of turns │ │ │ │ │ XZ-plane (G18) │ │ │ │ │ G2 or G3 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 865 / 1279 │ │ │ │ │ │ │ │ │ │ • Y - helix │ │ │ │ │ • I - X offset │ │ │ │ │ • K - Z offset │ │ │ │ │ • P - number of turns │ │ │ │ │ @@ -39852,28 +39852,28 @@ │ │ │ │ │ In the following figure you can see the start position is X0 Y0, the end position is X1 Y1. The arc center │ │ │ │ │ position is at X1 Y0. This gives us an offset from the start position of 1 in the X axis and 0 in the Y │ │ │ │ │ axis. In this case only an I offset is needed. │ │ │ │ │ G2 Example Line │ │ │ │ │ G0 X0 Y0 │ │ │ │ │ G2 X1 Y1 I1 F10 (clockwise arc in the XY plane) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 866 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 11.12: G2 Example │ │ │ │ │ In the next example we see the difference between the offsets for Y if we are doing a G2 or a G3 move. │ │ │ │ │ For the G2 move the start position is X0 Y0, for the G3 move it is X0 Y1. The arc center is at X1 Y0.5 │ │ │ │ │ for both moves. The G2 move the J offset is 0.5 and the G3 move the J offset is -0.5. │ │ │ │ │ G2-G3 Example Line │ │ │ │ │ G0 X0 Y0 │ │ │ │ │ G2 X0 Y1 I1 J0.5 F25 (clockwise arc in the XY plane) │ │ │ │ │ G3 X0 Y0 I1 J-0.5 F25 (counterclockwise arc in the XY plane) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 867 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 11.13: G2-G3 Example │ │ │ │ │ In the next example we show how the arc can make a helix in the Z axis by adding the Z word. │ │ │ │ │ G2 Example Helix │ │ │ │ │ G0 X0 Y0 Z0 │ │ │ │ │ @@ -39892,15 +39892,15 @@ │ │ │ │ │ • R - radius from current position │ │ │ │ │ It is not good practice to program radius format arcs that are nearly full circles or nearly semicircles │ │ │ │ │ because a small change in the location of the end point will produce a much larger change in the │ │ │ │ │ location of the center of the circle (and, hence, the middle of the arc). The magnification effect is │ │ │ │ │ large enough that rounding error in a number can produce out-of-tolerance cuts. For instance, a 1% │ │ │ │ │ displacement of the endpoint of a 180 degree arc produced a 7% displacement of the point 90 degrees │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 868 / 1279 │ │ │ │ │ │ │ │ │ │ along the arc. Nearly full circles are even worse. Other size arcs (in the range tiny to 165 degrees or │ │ │ │ │ 195 to 345 degrees) are OK. │ │ │ │ │ In the radius format, the coordinates of the end point of the arc in the selected plane are specified │ │ │ │ │ along with the radius of the arc. Program G2 axes R- (or use G3 instead of G2 ). R is the radius. The │ │ │ │ │ @@ -39935,15 +39935,15 @@ │ │ │ │ │ G5 X- Y- P- Q- │ │ │ │ │ │ │ │ │ │ • I - X incremental offset from start point to first control point │ │ │ │ │ • J - Y incremental offset from start point to first control point │ │ │ │ │ • P - X incremental offset from end point to second control point │ │ │ │ │ • Q - Y incremental offset from end point to second control point │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 869 / 1279 │ │ │ │ │ │ │ │ │ │ G5 creates a cubic B-spline in the XY plane with the X and Y axes only. P and Q must both be specified │ │ │ │ │ for every G5 command. │ │ │ │ │ For the first G5 command in a series of G5 commands, I and J must both be specified. For subsequent │ │ │ │ │ G5 commands, either both I and J must be specified, or neither. If I and J are unspecified, the starting │ │ │ │ │ @@ -39980,15 +39980,15 @@ │ │ │ │ │ G5.1 X2 I2 J-8 │ │ │ │ │ │ │ │ │ │ It is an error if: │ │ │ │ │ • both I and J offset are unspecified or zero │ │ │ │ │ • An axis other than X or Y is specified │ │ │ │ │ • The active plane is not G17 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 870 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.9 G5.2 G5.3 NURBS Block │ │ │ │ │ G5.2 │ │ │ │ │ X- Y- │ │ │ │ │ ... │ │ │ │ │ @@ -40015,15 +40015,15 @@ │ │ │ │ │ ; The rapid moves show the same path without the NURBS Block │ │ │ │ │ G0 X0 Y1 │ │ │ │ │ X2 Y2 │ │ │ │ │ X2 Y0 │ │ │ │ │ X0 Y0 │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 871 / 1279 │ │ │ │ │ │ │ │ │ │ Sample NURBS Output │ │ │ │ │ More information on NURBS can be found here: │ │ │ │ │ https://wiki.linuxcnc.org/cgi-bin/wiki.pl?NURBS │ │ │ │ │ │ │ │ │ │ @@ -40033,15 +40033,15 @@ │ │ │ │ │ Program G7 to enter the diameter mode for axis X on a lathe. When in the diameter mode the X axis │ │ │ │ │ moves on a lathe will be 1/2 the distance to the center of the lathe. For example X1 would move the │ │ │ │ │ cutter to 0.500” from the center of the lathe thus giving a 1” diameter part. │ │ │ │ │ │ │ │ │ │ 11.5.11 G8 Lathe Radius Mode │ │ │ │ │ G8 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 872 / 1279 │ │ │ │ │ │ │ │ │ │ Program G8 to enter the radius mode for axis X on a lathe. When in Radius mode the X axis moves │ │ │ │ │ on a lathe will be the distance from the center. Thus a cut at X1 would result in a part that is 2” in │ │ │ │ │ diameter. G8 is default at power up. │ │ │ │ │ │ │ │ │ │ @@ -40071,15 +40071,15 @@ │ │ │ │ │ It is an error if: │ │ │ │ │ • Cutter Compensation is on │ │ │ │ │ • The P number is unspecified │ │ │ │ │ • The P number is not a valid tool number from the tool table │ │ │ │ │ • The P number is 0 │ │ │ │ │ For more information on cutter orientation used by the Q word, see the Lathe Tool Orientation diagram. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 873 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.14 G10 L2 Set Coordinate System │ │ │ │ │ G10 L2 P- │ │ │ │ │ │ │ │ │ │ • P - coordinate system (0-9) │ │ │ │ │ @@ -40139,15 +40139,15 @@ │ │ │ │ │ afterwards. │ │ │ │ │ • When programming a coordinate system with R, any G52 or G92 will be applied after the rotation. │ │ │ │ │ • The coordinate system whose origin is set by a G10 command may be active or inactive at the time │ │ │ │ │ the G10 is executed. If it is currently active, the new coordinates take effect immediately. │ │ │ │ │ It is an error if: │ │ │ │ │ • The P number does not evaluate to an integer in the range 0 to 9. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 874 / 1279 │ │ │ │ │ │ │ │ │ │ • An axis is programmed that is not defined in the configuration. │ │ │ │ │ G10 L2 Example Line │ │ │ │ │ G10 L2 P1 X3.5 Y17.2 │ │ │ │ │ │ │ │ │ │ @@ -40181,15 +40181,15 @@ │ │ │ │ │ • See T & M6, and G43/G43.1 sections for more information. │ │ │ │ │ It is an error if: │ │ │ │ │ • Cutter Compensation is on │ │ │ │ │ • The P number is unspecified │ │ │ │ │ • The P number is not a valid tool number from the tool table │ │ │ │ │ • The P number is 0 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 875 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.16 G10 L11 Set Tool Table │ │ │ │ │ G10 L11 P- axes │ │ │ │ │ │ │ │ │ │ • P - tool number │ │ │ │ │ @@ -40217,15 +40217,15 @@ │ │ │ │ │ G10 L20 Example Line │ │ │ │ │ G10 L20 P1 X1.5 (set the X axis current location in coordinate system 1 to 1.5) │ │ │ │ │ │ │ │ │ │ It is an error if: │ │ │ │ │ • The P number does not evaluate to an integer in the range 0 to 9. │ │ │ │ │ • An axis is programmed that is not defined in the configuration. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 876 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.18 G17 - G19.1 Plane Select │ │ │ │ │ These codes set the current plane as follows: │ │ │ │ │ • G17 - XY (default) │ │ │ │ │ • G18 - ZX │ │ │ │ │ @@ -40259,15 +40259,15 @@ │ │ │ │ │ • G28.1 - stores the current absolute position into parameters 5161-5166. │ │ │ │ │ G28 Example Line │ │ │ │ │ G28 Z2.5 (rapid to Z2.5 then to Z location specified in #5163) │ │ │ │ │ │ │ │ │ │ It is an error if : │ │ │ │ │ • Cutter Compensation is turned on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 877 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.21 G30, G30.1 Go/Set Predefined Position │ │ │ │ │ │ │ │ │ │ Warning │ │ │ │ │ Only use G30 when your machine is homed to a repeatable position and the desired G30 │ │ │ │ │ @@ -40304,15 +40304,15 @@ │ │ │ │ │ The (optional) $ argument sets which spindle the motion is synchronised to (default is zero). For │ │ │ │ │ example G33 Z10 K1 $1 will move the spindle in synchrony with the spindle.N.revs HAL pin value. │ │ │ │ │ Spindle-synchronized motion waits for the spindle index and spindle at speed pins, so multiple passes │ │ │ │ │ line up. G33 moves end at the programmed endpoint. G33 could be used to cut tapered threads or a │ │ │ │ │ fusee. │ │ │ │ │ All the axis words are optional, except that at least one must be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 878 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ K follows the drive line described by X- Y- Z-. K is not parallel to the Z axis if X or Y endpoints are │ │ │ │ │ used for example when cutting tapered threads. │ │ │ │ │ │ │ │ │ │ @@ -40349,15 +40349,15 @@ │ │ │ │ │ • $ - optional spindle selector │ │ │ │ │ Warning │ │ │ │ │ For Z only tapping preposition the XY location prior to calling G33.1 and only use a Z word in │ │ │ │ │ the G33.1. If the coordinates specified are not the current coordinates when calling G33.1 for │ │ │ │ │ tapping the move will not be along the Z axis but will be a coordinated, spindle-synchronized │ │ │ │ │ move from the current location to the location specified and back. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 879 / 1279 │ │ │ │ │ │ │ │ │ │ For rigid tapping (spindle synchronized motion with return), code G33.1 X- Y- Z- K- where K- gives the │ │ │ │ │ distance moved for each revolution of the spindle. │ │ │ │ │ A rigid tapping move consists of the following sequence: │ │ │ │ │ • A move from the current coordinate to the specified coordinate, synchronized with the selected │ │ │ │ │ @@ -40392,15 +40392,15 @@ │ │ │ │ │ G38.n axes │ │ │ │ │ │ │ │ │ │ • G38.2 - probe toward workpiece, stop on contact, signal error if failure │ │ │ │ │ • G38.3 - probe toward workpiece, stop on contact │ │ │ │ │ • G38.4 - probe away from workpiece, stop on loss of contact, signal error if failure │ │ │ │ │ • G38.5 - probe away from workpiece, stop on loss of contact │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 880 / 1279 │ │ │ │ │ │ │ │ │ │ Important │ │ │ │ │ You will not be able to use a probe move until your machine has been set up to provide a probe │ │ │ │ │ input signal. The probe input signal must be connected to motion.probe-input in a .hal file. │ │ │ │ │ G38.n uses motion.probe-input to determine when the probe has made (or lost) contact. TRUE │ │ │ │ │ @@ -40456,15 +40456,15 @@ │ │ │ │ │ It is an error if: │ │ │ │ │ • the current point is the same as the programmed point. │ │ │ │ │ • no axis word is used │ │ │ │ │ • cutter compensation is enabled │ │ │ │ │ • the feed rate is zero │ │ │ │ │ • the probe is already in the target state │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 881 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.25 G40 Compensation Off │ │ │ │ │ • G40 - turn cutter compensation off. If tool compensation was on the next move must be a linear │ │ │ │ │ move and longer than the tool diameter. It is OK to turn compensation off when it is already off. │ │ │ │ │ G40 Example │ │ │ │ │ @@ -40503,15 +40503,15 @@ │ │ │ │ │ The lead in move must be at least as long as the tool radius. The lead in move can be a rapid move. │ │ │ │ │ Cutter compensation may be performed if the XY-plane or XZ-plane is active. │ │ │ │ │ User M100-M199 commands are allowed when Cutter Compensation is on. │ │ │ │ │ The behavior of the machining center when cutter compensation is on is described in the Cutter │ │ │ │ │ Compensation section along with code examples. │ │ │ │ │ It is an error if: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 882 / 1279 │ │ │ │ │ │ │ │ │ │ • The D number is not a valid tool number or 0. │ │ │ │ │ • The YZ plane is active. │ │ │ │ │ • Cutter compensation is commanded to turn on when it is already on. │ │ │ │ │ │ │ │ │ │ @@ -40549,15 +40549,15 @@ │ │ │ │ │ │ │ │ │ │ It is an error if: │ │ │ │ │ • the H number is not an integer, or │ │ │ │ │ • the H number is negative, or │ │ │ │ │ • the H number is not a valid tool number (though note that 0 is a valid tool number on nonrandom │ │ │ │ │ tool changer machines, it means ”the tool currently in the spindle”) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 883 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.29 G43.1 Dynamic Tool Length Offset │ │ │ │ │ G43.1 axes │ │ │ │ │ │ │ │ │ │ • G43.1 axes - change subsequent motions by replacing the current offset(s) of axes. G43.1 does │ │ │ │ │ @@ -40594,15 +40594,15 @@ │ │ │ │ │ It is an error if: │ │ │ │ │ • H is unspecified and no axis offsets are specified. │ │ │ │ │ • H is specified and the given tool number does not exist in the tool table. │ │ │ │ │ • H is specified and axes are also specified. │ │ │ │ │ Note │ │ │ │ │ G43.2 does not write to the tool table. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 884 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.31 G49 Cancel Tool Length Compensation │ │ │ │ │ • G49 - cancels tool length compensation │ │ │ │ │ It is OK to program using the same offset already in use. It is also OK to program using no tool length │ │ │ │ │ offset if none is currently being used. │ │ │ │ │ @@ -40637,15 +40637,15 @@ │ │ │ │ │ • G57 - select coordinate system 4 │ │ │ │ │ • G58 - select coordinate system 5 │ │ │ │ │ • G59 - select coordinate system 6 │ │ │ │ │ • G59.1 - select coordinate system 7 │ │ │ │ │ • G59.2 - select coordinate system 8 │ │ │ │ │ • G59.3 - select coordinate system 9 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 885 / 1279 │ │ │ │ │ │ │ │ │ │ The coordinate systems store the axis values and the XY rotation angle around the Z axis in the parameters shown in the following table. │ │ │ │ │ Table 11.11: Coordinate System Parameters │ │ │ │ │ Select CS │ │ │ │ │ G54 │ │ │ │ │ @@ -40795,15 +40795,15 @@ │ │ │ │ │ away from the programmed point you end up. │ │ │ │ │ • G64 P- - Blend between best speed and deviation tolerance │ │ │ │ │ • G64 P- blending with tolerance. It is a way to fine tune your system for best compromise │ │ │ │ │ between speed and accuracy. The P- tolerance means that the actual path will be no more than Paway from the programmed endpoint. The velocity will be reduced if needed to maintain the path. │ │ │ │ │ If you set Q to a non-zero value it turns on the Naive CAM Detector: when there are a series of │ │ │ │ │ linear XYZ feed moves at the same feed rate that are less than Q- away from being collinear, they │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 886 / 1279 │ │ │ │ │ │ │ │ │ │ are collapsed into a single linear move. On G2/G3 moves in the G17 (XY) plane when the maximum │ │ │ │ │ deviation of an arc from a straight line is less than the G64 P- tolerance the arc is broken into two │ │ │ │ │ lines (from start of arc to midpoint, and from midpoint to end). those lines are then subject to the │ │ │ │ │ naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases as well as line-line benefit │ │ │ │ │ @@ -40841,15 +40841,15 @@ │ │ │ │ │ this point. │ │ │ │ │ • 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. │ │ │ │ │ It is an error if: │ │ │ │ │ • There is no subroutine defined with the number given in Q. │ │ │ │ │ • The path given in the profile is not monotonic in Z or X. │ │ │ │ │ • Section 11.5.18 has not been used to select the ZX plane. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 887 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.39 G71 G72 Lathe roughing cycles │ │ │ │ │ G71 │ │ │ │ │ Q- │ │ │ │ │ G71.1 Q- │ │ │ │ │ @@ -40891,15 +40891,15 @@ │ │ │ │ │ finishing. │ │ │ │ │ It is an error if: │ │ │ │ │ • There is no subroutine defined with the number given in Q. │ │ │ │ │ • The path given in the profile is not monotonic in Z or X. │ │ │ │ │ • Section 11.5.18 has not been used to select the ZX plane. │ │ │ │ │ • Section 11.5.26 is active. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 888 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.40 G73 Drilling Cycle with Chip Breaking │ │ │ │ │ G73 X- Y- Z- R- Q- │ │ │ │ │ │ │ │ │ │ • R - retract position along the Z axis. │ │ │ │ │ @@ -40930,15 +40930,15 @@ │ │ │ │ │ │ │ │ │ │ Warning │ │ │ │ │ G74 does not use synchronized motion. │ │ │ │ │ │ │ │ │ │ The G74 cycle is intended for tapping with floating chuck and dwell at the bottom of the hole. │ │ │ │ │ 1. Preliminary motion, as described in the Preliminary and In-Between Motion section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 889 / 1279 │ │ │ │ │ │ │ │ │ │ 2. Disable Feed and Speed Overrides. │ │ │ │ │ 3. Move the Z-axis at the current feed rate to the Z position. │ │ │ │ │ 4. Stop the selected spindle (chosen by the $ parameter) │ │ │ │ │ 5. Start spindle rotation clockwise. │ │ │ │ │ @@ -40953,15 +40953,15 @@ │ │ │ │ │ G76 P- Z- I- J- R- K- Q- H- E- L- $- │ │ │ │ │ │ │ │ │ │ Figure 11.14: G76 Threading │ │ │ │ │ • Drive Line - A line through the initial X position parallel to the Z. │ │ │ │ │ • P- - The thread pitch in distance per revolution. │ │ │ │ │ • Z- - The final position of threads. At the end of the cycle the tool will be at this Z position. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 890 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ When G7 Lathe Diameter Mode is in force the values for I, J and K are diameter measurements. When │ │ │ │ │ G8 Lathe Radius Mode is in force the values for I, J and K are radius measurements. │ │ │ │ │ │ │ │ │ │ @@ -41001,15 +41001,15 @@ │ │ │ │ │ taper. No entry taper and the tool will rapid to the cut depth then synchronize and begin the cut. │ │ │ │ │ The tool is moved to the initial X and Z positions prior to issuing the G76. The X position is the drive │ │ │ │ │ line and the Z position is the start of the threads. │ │ │ │ │ The tool will pause briefly for synchronization before each threading pass, so a relief groove will be │ │ │ │ │ required at the entry unless the beginning of the thread is past the end of the material or an entry │ │ │ │ │ taper is used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 891 / 1279 │ │ │ │ │ │ │ │ │ │ Unless using an exit taper, the exit move is not synchronized to the spindle speed and will be a rapid │ │ │ │ │ move. With a slow spindle, the exit move might take only a small fraction of a revolution. If the │ │ │ │ │ spindle speed is increased after several passes are complete, subsequent exit moves will require a │ │ │ │ │ larger portion of a revolution, resulting in a very heavy cut during the exit move. This can be avoided │ │ │ │ │ @@ -41036,15 +41036,15 @@ │ │ │ │ │ │ │ │ │ │ In the figure the tool is in the final position after the G76 cycle is completed. You can see the entry │ │ │ │ │ path on the right from the Q29.5 and the exit path on the left from the L2 E0.045. The white lines are │ │ │ │ │ the cutting moves. │ │ │ │ │ │ │ │ │ │ Figure 11.15: G76 Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 892 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.43 G80-G89 Canned Cycles │ │ │ │ │ The canned cycles G81 through G89 and the canned cycle stop G80 are described in this section. │ │ │ │ │ All canned cycles are performed with respect to the currently-selected plane. Any of the nine planes │ │ │ │ │ may be selected. Throughout this section, most of the descriptions assume the XY-plane has been │ │ │ │ │ @@ -41078,15 +41078,15 @@ │ │ │ │ │ L=1. │ │ │ │ │ 11.5.43.4 Retract Mode │ │ │ │ │ The height of the retract move at the end of each repeat (called clear Z in the descriptions below) is │ │ │ │ │ determined by the setting of the retract mode, either to the original Z position (if that is above the │ │ │ │ │ R position and the retract mode is G98, OLD_Z), or otherwise to the R position. See the G98 G99 │ │ │ │ │ section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 893 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.43.5 Canned Cycle Errors │ │ │ │ │ It is an error if: │ │ │ │ │ • axis words are all missing during a canned cycle, │ │ │ │ │ • axis words from different groups (XYZ) (UVW) are used together, │ │ │ │ │ @@ -41117,15 +41117,15 @@ │ │ │ │ │ same order as the earlier example. But the program writing economy of a good canned cycle should │ │ │ │ │ be obvious. │ │ │ │ │ Note │ │ │ │ │ Line numbers are not needed but help clarify these examples. │ │ │ │ │ │ │ │ │ │ Eight Holes │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 894 / 1279 │ │ │ │ │ │ │ │ │ │ N100 G90 G0 X0 Y0 Z0 (move coordinate home) │ │ │ │ │ N110 G1 F10 X0 G4 P0.1 │ │ │ │ │ N120 G91 G81 X1 Y0 Z-1 R1 L4(canned drill cycle) │ │ │ │ │ N130 G90 G0 X0 Y1 │ │ │ │ │ @@ -41148,15 +41148,15 @@ │ │ │ │ │ N1050 X0 Y-1 L2 (repeat) │ │ │ │ │ N1060 G80 (turn off canned cycle) │ │ │ │ │ N1070 G90 G0 X0 (rapid move home) │ │ │ │ │ N1080 Y0 │ │ │ │ │ N1090 Z0 │ │ │ │ │ N1100 M2 (program end) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 895 / 1279 │ │ │ │ │ │ │ │ │ │ The second reason to use a canned cycle is that they all produce preliminary moves and returns that │ │ │ │ │ you can anticipate and control regardless of the start point of the canned cycle. │ │ │ │ │ │ │ │ │ │ 11.5.44 G80 Cancel Canned Cycle │ │ │ │ │ @@ -41178,15 +41178,15 @@ │ │ │ │ │ first set of blocks, the programmer must turn motion back on with G0, as is done in the next line, or │ │ │ │ │ any other motion mode G word. │ │ │ │ │ If a canned cycle is not turned off with G80 or another motion word, the canned cycle will attempt │ │ │ │ │ to repeat itself using the next block of code that contains an X, Y, or Z word. The following file drills │ │ │ │ │ (G81) a set of eight holes as shown in the following caption. │ │ │ │ │ G80 Example 1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 896 / 1279 │ │ │ │ │ │ │ │ │ │ N100 G90 G0 X0 Y0 Z0 (coordinate home) │ │ │ │ │ N110 G1 X0 G4 P0.1 │ │ │ │ │ N120 G81 X1 Y0 Z0 R1 (canned drill cycle) │ │ │ │ │ N130 X2 │ │ │ │ │ @@ -41215,15 +41215,15 @@ │ │ │ │ │ │ │ │ │ │ The G81 cycle is intended for drilling. │ │ │ │ │ The cycle functions as follows: │ │ │ │ │ • Preliminary motion, as described in the Preliminary and In-Between Motion section. │ │ │ │ │ • Move the Z-axis at the current feed rate to the Z position. │ │ │ │ │ • The Z-axis does a rapid move to clear Z. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 897 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 11.16: G81 Cycle │ │ │ │ │ Example 1 - Absolute Position G81 │ │ │ │ │ G90 G98 G81 X4 Y5 Z1.5 R2.8 │ │ │ │ │ │ │ │ │ │ @@ -41236,15 +41236,15 @@ │ │ │ │ │ • The R value and clear Z are 2.8. OLD_Z is 3. │ │ │ │ │ The following moves take place: │ │ │ │ │ • A rapid move parallel to the XY plane to (X4, Y5) │ │ │ │ │ • A rapid move move parallel to the Z-axis to (Z2.8). │ │ │ │ │ • Move parallel to the Z-axis at the feed rate to (Z1.5) │ │ │ │ │ • A rapid move parallel to the Z-axis to (Z3) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 898 / 1279 │ │ │ │ │ │ │ │ │ │ Example 2 - Relative Position G81 │ │ │ │ │ G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3 │ │ │ │ │ │ │ │ │ │ Suppose the current position is (X1, Y2, Z3) and the preceding line of NC code is interpreted. │ │ │ │ │ @@ -41265,27 +41265,27 @@ │ │ │ │ │ • A rapid move parallel to the Z-axis to (X9, Y12, Z4.8) │ │ │ │ │ The third repeat consists of 3 moves. The X position is reset to 13 (=9+4) and the Y position to 17 │ │ │ │ │ (=12+5). │ │ │ │ │ • A rapid move parallel to the XY-plane to (X13, Y17, Z4.8) │ │ │ │ │ • Move parallel to the Z-axis at the feed rate to (X13, Y17, Z4.2) │ │ │ │ │ • A rapid move parallel to the Z-axis to (X13, Y17, Z4.8) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 899 / 1279 │ │ │ │ │ │ │ │ │ │ Example 3 - Relative Position G81 │ │ │ │ │ G90 G98 G81 X4 Y5 Z1.5 R2.8 │ │ │ │ │ │ │ │ │ │ Now suppose that you execute the first G81 block of code but from (X0, Y0, Z0) rather than from (X1, │ │ │ │ │ Y2, Z3). │ │ │ │ │ Since OLD_Z is below the R value, it adds nothing for the motion but since the initial value of Z is less │ │ │ │ │ than the value specified in R, there will be an initial Z move during the preliminary moves. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 900 / 1279 │ │ │ │ │ │ │ │ │ │ Example 4 - Absolute G81 R > Z This is a plot of the path of motion for the second g81 block of │ │ │ │ │ code. │ │ │ │ │ G91 G98 G81 X4 Y5 Z-0.6 R1.8 L3 │ │ │ │ │ │ │ │ │ │ @@ -41295,15 +41295,15 @@ │ │ │ │ │ │ │ │ │ │ Example 5 - Relative position R > Z │ │ │ │ │ G90 G98 G81 X4 Y5 Z-0.6 R1.8 │ │ │ │ │ │ │ │ │ │ Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves │ │ │ │ │ to that location as in Example 4. After that initial Z move, the rapid move to X4 Y5 is done. Then the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 901 / 1279 │ │ │ │ │ │ │ │ │ │ final Z depth being 0.6 below the R value. The repeat function would make the Z move in the same │ │ │ │ │ location again. │ │ │ │ │ │ │ │ │ │ 11.5.46 G82 Drilling Cycle, Dwell │ │ │ │ │ @@ -41336,15 +41336,15 @@ │ │ │ │ │ • Rapid move back out to the retract plane specified by the R word. │ │ │ │ │ • Rapid move back down to the current hole bottom, less .010 of an inch or 0.254 mm. │ │ │ │ │ • Repeat steps 2, 3, and 4 until the Z position is reached at step 2. │ │ │ │ │ • The Z-axis does a rapid move to clear Z. │ │ │ │ │ It is an error if: │ │ │ │ │ • the Q number is negative or zero. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 902 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.48 G84 Right-hand Tapping Cycle, Dwell │ │ │ │ │ G84 (X- Y- Z-) or (U- V- W-) R- L- P- $- F- │ │ │ │ │ │ │ │ │ │ • R- - Retract position along the Z axis. │ │ │ │ │ @@ -41374,15 +41374,15 @@ │ │ │ │ │ │ │ │ │ │ The G85 cycle is intended for boring or reaming, but could be used for drilling or milling. │ │ │ │ │ • Preliminary motion, as described in the Preliminary and In-Between Motion section. │ │ │ │ │ • Move the Z-axis only at the current feed rate to the Z position. │ │ │ │ │ • Retract the Z-axis at the current feed rate to the R plane if it is lower than the initial Z. │ │ │ │ │ • Retract at the traverse rate to clear Z. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 903 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.50 G86 Boring Cycle, Spindle Stop, Rapid Move Out │ │ │ │ │ G86 (X- Y- Z-) or (U- V- W-) R- L- P- $- │ │ │ │ │ │ │ │ │ │ The G86 cycle is intended for boring. This cycle uses a P number for the number of seconds to dwell. │ │ │ │ │ @@ -41414,15 +41414,15 @@ │ │ │ │ │ 11.5.54 G90, G91 Distance Mode │ │ │ │ │ • G90 - absolute distance mode In absolute distance mode, axis numbers (X, Y, Z, A, B, C, U, V, W) │ │ │ │ │ usually represent positions in terms of the currently active coordinate system. Any exceptions to │ │ │ │ │ that rule are described explicitly in the G80 G89 section. │ │ │ │ │ • G91 - incremental distance mode In incremental distance mode, axis numbers usually represent │ │ │ │ │ increments from the current coordinate. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 904 / 1279 │ │ │ │ │ │ │ │ │ │ G90 Example │ │ │ │ │ G90 (set absolute distance mode) │ │ │ │ │ G0 X2.5 (rapid move to coordinate X2.5 including any offsets in effect) │ │ │ │ │ │ │ │ │ │ @@ -41460,15 +41460,15 @@ │ │ │ │ │ Being in incremental distance mode (G91 instead of G90) has no effect on the action of G92. │ │ │ │ │ G92 offsets may be already be in effect when the G92 is called. If this is the case, the offset is replaced │ │ │ │ │ with a new offset that makes the current point become the specified value. │ │ │ │ │ It is an error if all axis words are omitted. │ │ │ │ │ LinuxCNC stores the G92 offsets and reuses them on the next run of a program. To prevent this, one │ │ │ │ │ can program a G92.1 (to erase them), or program a G92.2 (to remove them - they are still stored). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 905 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The G52 command can also be used to change this offset; see the Offsets section for more details │ │ │ │ │ about G92 and G52 and how they interact. │ │ │ │ │ See the Coordinate System section for an overview of coordinate systems. │ │ │ │ │ @@ -41506,15 +41506,15 @@ │ │ │ │ │ threading, for threading use G33 or G76. G95 requires that spindle.N.speed-in to be connected. │ │ │ │ │ The actual spindle to which the feed is synchronised is chosen by the $ parameter. │ │ │ │ │ It is an error if: │ │ │ │ │ • Inverse time feed mode is active and a line with G1, G2, or G3 (explicitly or implicitly) does not have │ │ │ │ │ an F-word. │ │ │ │ │ • A new feed rate is not specified after switching to G94 or G95 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 906 / 1279 │ │ │ │ │ │ │ │ │ │ 11.5.60 G96, G97 Spindle Control Mode │ │ │ │ │ G96 S- <$-> (Constant Surface Speed Mode) │ │ │ │ │ G97 S- <$-> (RPM Mode) │ │ │ │ │ │ │ │ │ │ @@ -41552,15 +41552,15 @@ │ │ │ │ │ │ │ │ │ │ The G98 to the second line above means that the return move will be to the value of Z in the first line │ │ │ │ │ since it is higher that the R value specified. │ │ │ │ │ The initial (G98) plane is reset any time cycle motion mode is abandoned, whether explicitly (G80) or │ │ │ │ │ implicitly (any motion code that is not a cycle). Switching among cycle modes (say G81 to G83) does │ │ │ │ │ NOT reset the initial plane. It is possible to switch between G98 and G99 during a series of cycles. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 907 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6 M-Codes │ │ │ │ │ 11.6.1 M-Code Quick Reference Table │ │ │ │ │ Code │ │ │ │ │ M0 M1 │ │ │ │ │ @@ -41626,15 +41626,15 @@ │ │ │ │ │ │ │ │ │ │ 11.6.3 M2, M30 Program End │ │ │ │ │ • M2 - end the program. Pressing Cycle Start (”R” in the Axis GUI) will restart the program at the │ │ │ │ │ beginning of the file. │ │ │ │ │ • M30 - exchange pallet shuttles and end the program. Pressing Cycle Start will start the program │ │ │ │ │ at the beginning of the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 908 / 1279 │ │ │ │ │ │ │ │ │ │ Both of these commands have the following effects: │ │ │ │ │ • Change from Auto mode to MDI mode. │ │ │ │ │ • Origin offsets are set to the default (like G54). │ │ │ │ │ • Selected plane is set to XY plane (like G17). │ │ │ │ │ @@ -41668,15 +41668,15 @@ │ │ │ │ │ S100 $0 │ │ │ │ │ S200 $1 │ │ │ │ │ S300 $2 │ │ │ │ │ M3 $-1 │ │ │ │ │ │ │ │ │ │ This example will then reverse spindle 1 but leave the other spindles rotating forwards: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 909 / 1279 │ │ │ │ │ │ │ │ │ │ M4 $1 │ │ │ │ │ │ │ │ │ │ And this will stop spindle 2 and leave the other spindles rotating: │ │ │ │ │ M5 $2 │ │ │ │ │ @@ -41713,15 +41713,15 @@ │ │ │ │ │ │ │ │ │ │ The tool change may include axis motion. It is OK (but not useful) to program a change to the tool │ │ │ │ │ already in the spindle. It is OK if there is no tool in the selected slot; in that case, the spindle will │ │ │ │ │ be empty after the tool change. If slot zero was last selected, there will definitely be no tool in the │ │ │ │ │ spindle after a tool change. The tool changer will have to be setup to perform the tool change in HAL │ │ │ │ │ and possibly ClassicLadder. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 910 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6.7 M7, M8, M9 Coolant Control │ │ │ │ │ • M7 - turn mist coolant on. M7 controls iocontrol.0.coolant-mist pin. │ │ │ │ │ • M8 - turn flood coolant on. M8 controls iocontrol.0.coolant-flood pin. │ │ │ │ │ • M9 - turn both M7 and M8 off. │ │ │ │ │ @@ -41756,15 +41756,15 @@ │ │ │ │ │ – spindle.N.is-oriented (in bit) Acknowledge pin for spindle-orient. Completes orient cycle. If │ │ │ │ │ spindle-orient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared │ │ │ │ │ and the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted. │ │ │ │ │ – spindle.N.orient-fault (in s32) Fault code input for orient cycle. Any value other than zero will │ │ │ │ │ cause the orient cycle to abort. │ │ │ │ │ – spindle.N.locked (out bit) Spindle orient complete pin. Cleared by any of M3,M4,M5. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 911 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6.9 M48, M49 Speed and Feed Override Control │ │ │ │ │ • M48 - enable the spindle speed and feed rate override controls. │ │ │ │ │ • M49 - disable both controls. │ │ │ │ │ These commands also take an optional $ parameter to determine which spindle they operate on. │ │ │ │ │ @@ -41797,15 +41797,15 @@ │ │ │ │ │ │ │ │ │ │ 11.6.13 M53 Feed Stop Control │ │ │ │ │ • M53 - enable the feed stop switch. The P1 is optional. Enabling the feed stop switch will allow │ │ │ │ │ motion to be interrupted by means of the feed stop control. In LinuxCNC, the HAL pin motion.feedhold is used for this purpose. A true value will cause the motion to stop when M53 is active. │ │ │ │ │ • M53 P0 - disable the feed stop switch. The state of motion.feed-hold will have no effect on feed │ │ │ │ │ when M53 is not active. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 912 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6.14 M61 Set Current Tool │ │ │ │ │ • M61 Q- - change the current tool number while in MDI or Manual mode without a tool change. │ │ │ │ │ One use is when you power up LinuxCNC with a tool currently in the spindle you can set that tool │ │ │ │ │ number without doing a tool change. │ │ │ │ │ @@ -41839,15 +41839,15 @@ │ │ │ │ │ 11.6.16 M66 Wait on Input │ │ │ │ │ M66 P- | E- │ │ │ │ │ │ │ │ │ │ • P- - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio) │ │ │ │ │ • E- - specifies the analog input number from 0 to 3. (Adjustable from motmod argument num_aio) │ │ │ │ │ • L- - specifies the wait mode type. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 913 / 1279 │ │ │ │ │ │ │ │ │ │ – Mode 0: IMMEDIATE - no waiting, returns immediately. The current value of the input is stored │ │ │ │ │ in parameter #5399 │ │ │ │ │ – Mode 1: RISE - waits for the selected input to perform a rise event. │ │ │ │ │ – Mode 2: FALL - waits for the selected input to perform a fall event. │ │ │ │ │ @@ -41883,15 +41883,15 @@ │ │ │ │ │ always program a motion G-code (G0, G1, etc) right after the M67. M67 functions the same as M6263. │ │ │ │ │ The number of I/O can be increased by using the num_dio or num_aio parameter when loading the │ │ │ │ │ motion controller. See the Motion section for more information. │ │ │ │ │ Note │ │ │ │ │ M67 will not function unless the appropriate motion.analog-out-nn pins are connected in your HAL │ │ │ │ │ file to outputs. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 914 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6.18 M68 Analog Output, Immediate │ │ │ │ │ M68 E- Q- │ │ │ │ │ │ │ │ │ │ • M68 - set an analog output immediately. │ │ │ │ │ @@ -41922,15 +41922,15 @@ │ │ │ │ │ • spindle mode (G96-css or G97-RPM) │ │ │ │ │ • arc distance mode (G90.1, G91.1) │ │ │ │ │ • lathe radius/diameter mode (G7,G8) │ │ │ │ │ • path control mode (G61, G61.1, G64) │ │ │ │ │ • current feed and speed (F and S values) │ │ │ │ │ • spindle status (M3,M4,M5) - on/off and direction │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 915 / 1279 │ │ │ │ │ │ │ │ │ │ • mist (M7) and flood (M8) status │ │ │ │ │ • speed override (M51) and feed override (M50) settings │ │ │ │ │ • adaptive feed setting (M52) │ │ │ │ │ • feed hold setting (M53) │ │ │ │ │ @@ -41968,15 +41968,15 @@ │ │ │ │ │ g20 (imperial) │ │ │ │ │ g91 (relative mode) │ │ │ │ │ F5 (low feed) │ │ │ │ │ S300 (low rpm) │ │ │ │ │ (debug, in subroutine, state now:) │ │ │ │ │ o call │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 916 / 1279 │ │ │ │ │ │ │ │ │ │ O endsub │ │ │ │ │ ; main program │ │ │ │ │ g21 (metric) │ │ │ │ │ g90 (absolute) │ │ │ │ │ @@ -42022,15 +42022,15 @@ │ │ │ │ │ (debug, in main, state now:) │ │ │ │ │ o call │ │ │ │ │ o call │ │ │ │ │ (debug, back in main, state now:) │ │ │ │ │ o call │ │ │ │ │ m2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 917 / 1279 │ │ │ │ │ │ │ │ │ │ 11.6.23 M98 and M99 │ │ │ │ │ The interpreter supports Fanuc-style main- and sub-programs with the M98 and M99 M-codes. See │ │ │ │ │ Fanuc-Style Programs. │ │ │ │ │ 11.6.23.1 Selectively Restoring Modal State │ │ │ │ │ @@ -42072,15 +42072,15 @@ │ │ │ │ │ and Q values as its two arguments. │ │ │ │ │ Execution of the G-code file pauses until the external program exits. Any valid executable file can │ │ │ │ │ be used. The file must be located in the search path specified in the INI file configuration. See the │ │ │ │ │ Display section for more information on search paths. │ │ │ │ │ After creating a new M1nn program, the GUI should be restarted so that the new program is taken │ │ │ │ │ into account, otherwise a Unknown M-code error will occur. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 918 / 1279 │ │ │ │ │ │ │ │ │ │ Warning │ │ │ │ │ Do not use a word processor to create or edit the files. A word processor will leave unseen │ │ │ │ │ codes that will cause problems and may prevent a bash or python file from working. Use a │ │ │ │ │ text editor like Geany in Debian or Notepad++ in other operating systems to create or edit the │ │ │ │ │ @@ -42122,15 +42122,15 @@ │ │ │ │ │ To display a graphic message and stop until the message window is closed use a graphic display │ │ │ │ │ program like Eye of Gnome to display the graphic file. When you close it the program will resume. │ │ │ │ │ M110 Example file │ │ │ │ │ #!/bin/bash │ │ │ │ │ eog /home/john/linuxcnc/nc_files/message.png │ │ │ │ │ exit 0 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 919 / 1279 │ │ │ │ │ │ │ │ │ │ To display a graphic message and continue processing the G-code file suffix an ampersand to the │ │ │ │ │ command. │ │ │ │ │ M110 Example display and keep going │ │ │ │ │ #!/bin/bash │ │ │ │ │ @@ -42164,15 +42164,15 @@ │ │ │ │ │ • The same number is used for more than one block. │ │ │ │ │ • Other words are used on a line with an O- word. │ │ │ │ │ • Comments are used on a line with an O-word. │ │ │ │ │ Note │ │ │ │ │ Using the lower case o makes it easier to distinguish from a 0 that might have been mistyped. For │ │ │ │ │ example o100 is easier to see than O100 that it is not a 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 920 / 1279 │ │ │ │ │ │ │ │ │ │ 11.7.4 Subroutines │ │ │ │ │ Subroutines starts at Onnn sub and ends at Onnn endsub. The lines between Onnn sub and Onnn │ │ │ │ │ endsub are not executed until the subroutine is called with Onnn call. Each subroutine must use a │ │ │ │ │ unique number. │ │ │ │ │ @@ -42220,15 +42220,15 @@ │ │ │ │ │ │ │ │ │ │ Subroutine bodies may not be nested. They may only be called after they are defined. They may │ │ │ │ │ be called from other functions, and may call themselves recursively if it makes sense to do so. The │ │ │ │ │ maximum subroutine nesting level is 10. │ │ │ │ │ Subroutines can change the value of parameters above #30 and those changes will be visible to the │ │ │ │ │ calling code. Subroutines may also change the value of global named parameters. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 921 / 1279 │ │ │ │ │ │ │ │ │ │ 11.7.4.1 Fanuc-Style Numbered Programs │ │ │ │ │ Numbered programs (both main and subprograms), the M98 call and M99 return M-codes, and their │ │ │ │ │ respective semantic differences are an alternative to the rs274ngc subroutines described above, provided for compatibility with Fanuc and other machine controllers. │ │ │ │ │ Numbered programs are enabled by default, and may be disabled by placing DISABLE_FANUC_STYLE_SUB │ │ │ │ │ @@ -42274,15 +42274,15 @@ │ │ │ │ │ • M98 subprogram call blocks may contain an optional L-word specifying a loop repeat count. Without │ │ │ │ │ the L-word, the subprogram will execute once only (equivalent to M98 L1). An M98 L0 block will not │ │ │ │ │ execute the subprogram. │ │ │ │ │ In rare cases, the M99 M-code may be used to terminate the main program, where it indicates an │ │ │ │ │ endless program. When the interpreter reaches an M99 in the main program, it will skip back to the │ │ │ │ │ beginning of the file and resume execution at the first line. An example use of an endless program is │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 922 / 1279 │ │ │ │ │ │ │ │ │ │ in a machine warm-up cycle; a block delete program end /M30 block might be used to stop the cycle │ │ │ │ │ at a tidy point when the operator is ready. │ │ │ │ │ Numbered Subprogram Full Example │ │ │ │ │ O1 │ │ │ │ │ @@ -42348,15 +42348,15 @@ │ │ │ │ │ #1 = 3 (assign the value of 3 to parameter #1) │ │ │ │ │ (msg, #1 has been assigned the value of 3) │ │ │ │ │ o100 continue (skip to start of loop) │ │ │ │ │ o110 endif │ │ │ │ │ (some code here) │ │ │ │ │ #1 = [#1 + 1] (increment the test counter) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 923 / 1279 │ │ │ │ │ │ │ │ │ │ o100 while [#1 LT 3] │ │ │ │ │ (msg, Loop Done!) │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ @@ -42402,15 +42402,15 @@ │ │ │ │ │ O102 elseif [#2 LT 2] │ │ │ │ │ F20 │ │ │ │ │ (parameter #2 is between 2 and 5) │ │ │ │ │ O102 else │ │ │ │ │ F200 │ │ │ │ │ O102 endif │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 924 / 1279 │ │ │ │ │ │ │ │ │ │ 11.7.7 Repeat │ │ │ │ │ The repeat will execute the statements inside of the repeat/endrepeat the specified number of times. │ │ │ │ │ The example shows how you might mill a diagonal series of shapes starting at the present position. │ │ │ │ │ Example with repeat │ │ │ │ │ @@ -42451,15 +42451,15 @@ │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The file names are lowercase letters only so o is converted to o by the interpreter. │ │ │ │ │ More information about the search path and options for the search path are in the INI configuration │ │ │ │ │ section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 925 / 1279 │ │ │ │ │ │ │ │ │ │ 11.7.10 Subroutine return values │ │ │ │ │ Subroutines may optionally return a value by an optional expression at an endsub or return statement. │ │ │ │ │ Return value example │ │ │ │ │ o123 return [#2 *5] │ │ │ │ │ @@ -42495,15 +42495,15 @@ │ │ │ │ │ spindle speed for a specific spindle. Without the $ the command will default to spindle.0. │ │ │ │ │ The spindle(s) or selected spindle will turn at that speed when a M3 or M4 is in effect. It is OK to │ │ │ │ │ program an S word whether the spindle is turning or not. If the speed override switch is enabled and │ │ │ │ │ not set at 100%, the speed will be different from what is programmed. │ │ │ │ │ It is OK to program S0, the spindle will not turn if that is done. │ │ │ │ │ It is an error if: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 926 / 1279 │ │ │ │ │ │ │ │ │ │ • the S number is negative. │ │ │ │ │ As described in the section Right-hand Tapping Cycle with Dwell, if a G84 (tapping) drilling cycle is │ │ │ │ │ active and the speed and feed potentiometers are enabled, the one with the lowest setting will be │ │ │ │ │ used. The rotational speed and feed rate will remain synchronized. In this case, the speed may differ │ │ │ │ │ @@ -42540,37 +42540,37 @@ │ │ │ │ │ file is appropriate for your machine before running. │ │ │ │ │ │ │ │ │ │ 11.9.1 Mill Examples │ │ │ │ │ 11.9.1.1 Helical Hole Milling │ │ │ │ │ • File Name: useful-subroutines.ngc │ │ │ │ │ • Description: Subroutine for milling a hole using parameters. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 927 / 1279 │ │ │ │ │ │ │ │ │ │ 11.9.1.2 Slotting │ │ │ │ │ • File Name: useful-subroutines.ngc │ │ │ │ │ • Description: Subroutine for milling a slot using parameters. │ │ │ │ │ │ │ │ │ │ 11.9.1.3 Grid Probe │ │ │ │ │ • File Name: gridprobe.ngc │ │ │ │ │ • Description: Rectangular Probing │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 928 / 1279 │ │ │ │ │ │ │ │ │ │ 11.9.1.4 Smart Probe │ │ │ │ │ • File Name: smartprobe.ngc │ │ │ │ │ • Description: Rectangular Probing │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 929 / 1279 │ │ │ │ │ │ │ │ │ │ 11.9.1.5 Tool Length Probe │ │ │ │ │ • File Name: tool-length-probe.ngc │ │ │ │ │ • Description: Tool Length Probing │ │ │ │ │ This program shows an example of how to measure tool lengths automatically using a switch hooked │ │ │ │ │ @@ -42580,15 +42580,15 @@ │ │ │ │ │ • File Name: probe-hole.ngc │ │ │ │ │ • Description: Finding the Center and Diameter of a hole. │ │ │ │ │ The program demonstrates how to find the center of a hole, measure the hole diameter and record │ │ │ │ │ the results. │ │ │ │ │ 11.9.1.7 Cutter Compensation │ │ │ │ │ • File Name: comp-g1.ngc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 930 / 1279 │ │ │ │ │ │ │ │ │ │ • Description: Entry and exit movements with compensation of tool radius. │ │ │ │ │ This program demonstrates the peculiarity of the toolpath without and with tool radius compensation. │ │ │ │ │ The tool radius is taken from the tool table. │ │ │ │ │ │ │ │ │ │ @@ -42600,15 +42600,15 @@ │ │ │ │ │ │ │ │ │ │ 11.10 Image to G-Code │ │ │ │ │ │ │ │ │ │ 11.10.1 What is a depth map? │ │ │ │ │ A depth map is a greyscale image where the brightness of each pixel corresponds to the depth (or │ │ │ │ │ height) of the object at each point. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 931 / 1279 │ │ │ │ │ │ │ │ │ │ 11.10.2 Integrating image-to-gcode with the AXIS user interface │ │ │ │ │ Add the following lines to the [FILTER] section of your INI file to make AXIS automatically invoke │ │ │ │ │ image-to-gcode when you open a PNG, GIF, or JPEG image: │ │ │ │ │ PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image │ │ │ │ │ @@ -42642,15 +42642,15 @@ │ │ │ │ │ cut off. If White or Black, then a border of pixels equal to the tool diameter is added on all sides, and │ │ │ │ │ details which are at the very edges of the images will not be cut off. │ │ │ │ │ 11.10.4.5 Tolerance (units) │ │ │ │ │ When a series of points are within tolerance of being a straight line, they are output as a straight line. │ │ │ │ │ Increasing tolerance can lead to better contouring performance in LinuxCNC, but can also remove or │ │ │ │ │ blur small details in the image. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 932 / 1279 │ │ │ │ │ │ │ │ │ │ 11.10.4.6 Pixel Size (units) │ │ │ │ │ One pixel in the input image will be this many units—usually this number is much smaller than 1.0. For │ │ │ │ │ instance, to mill a 2.5x2.5-inch object from a 400x400 image file, use a pixel size of .00625, because │ │ │ │ │ 2.5 / 400 = .00625. │ │ │ │ │ @@ -42673,15 +42673,15 @@ │ │ │ │ │ • Alternating: Start on the same end of the X or Y axis travel that the last move ended on. This reduces │ │ │ │ │ the amount of traverse movements. │ │ │ │ │ • Up Milling: Start milling at low points, moving towards high points. │ │ │ │ │ • Down Milling: Start milling at high points, moving towards low points. │ │ │ │ │ 11.10.4.12 Depth (units) │ │ │ │ │ The top of material is always at Z = 0. The deepest cut into the material is at Z = -depth. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 933 / 1279 │ │ │ │ │ │ │ │ │ │ 11.10.4.13 Step Over (pixels) │ │ │ │ │ The distance between adjacent rows or columns. To find the number of pixels for a given units distance, compute distance/pixel size and round to the nearest whole number. For example, if pixel │ │ │ │ │ size=.006 and the desired step over distance=.015, then use a Step Over of 2 or 3 pixels, because │ │ │ │ │ .015/.006=2.5. │ │ │ │ │ @@ -42705,15 +42705,15 @@ │ │ │ │ │ • Full: When milling in the first direction, areas that strongly slope in the second direction are │ │ │ │ │ skipped. When milling in the second direction, areas that do not strongly slope in that direction │ │ │ │ │ are skipped. │ │ │ │ │ 11.10.4.18 Contact angle │ │ │ │ │ When Lace bounding is not None, slopes greater than Contact angle are considered to be strong │ │ │ │ │ slopes, and slopes less than that angle are considered to be weak slopes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 934 / 1279 │ │ │ │ │ │ │ │ │ │ 11.10.4.19 Roughing offset and depth per pass │ │ │ │ │ Image-to-gcode can optionally perform roughing passes. The depth of successive roughing passes is │ │ │ │ │ given by Roughing depth per pass. For instance, entering 0.2 will perform the first roughing pass │ │ │ │ │ with a depth of 0.2, the second roughing pass with a depth of 0.4, and so on until the full Depth of │ │ │ │ │ @@ -42735,15 +42735,15 @@ │ │ │ │ │ coordinate systems, and the G92 offset are in ”INI file units”. This change was made because │ │ │ │ │ otherwise the meaning of a location changed depending on whether G20 or G21 was active when │ │ │ │ │ G28, G30, G10 L2, or G92.3 is programmed. │ │ │ │ │ Tool table lengths/diameters are in INI file units │ │ │ │ │ In LinuxCNC, the tool lengths (offsets) and diameters in the tool table are specified in INI file │ │ │ │ │ units only. This change was made because otherwise the length of a tool and its diameter would │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 935 / 1279 │ │ │ │ │ │ │ │ │ │ change based on whether G20 or G21 was active when initiating G43, G41, G42 modes. This made │ │ │ │ │ it impossible to run G-code in the machine’s non-native units, even when the G-code was simple │ │ │ │ │ and well-formed (starting with G20 or G21, and didn’t change units throughout the program), │ │ │ │ │ without changing the tool table. │ │ │ │ │ @@ -42780,28 +42780,28 @@ │ │ │ │ │ primarily useful on lathes. │ │ │ │ │ Dynamic tool lengths │ │ │ │ │ LinuxCNC allows specification of a computed tool length through G43.1 I K. │ │ │ │ │ G41.1, G42.1 │ │ │ │ │ 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 │ │ │ │ │ orientation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 936 / 1279 │ │ │ │ │ │ │ │ │ │ G43 without H word │ │ │ │ │ In NGC this is not allowed. In LinuxCNC, it sets length offsets for the currently loaded tool. If no │ │ │ │ │ tool is currently loaded, it is an error. This change was made so the user doesn’t have to specify │ │ │ │ │ the tool number in two places for each tool change, and because it’s consistent with the way │ │ │ │ │ G41/G42 work when the D word is not specified. │ │ │ │ │ U, V, and W axes │ │ │ │ │ LinuxCNC allows machines with up to 9 axes by defining an additional set of 3 linear axes known │ │ │ │ │ as U, V and W │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 937 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 12 │ │ │ │ │ │ │ │ │ │ Virtual Control Panels │ │ │ │ │ 12.1 PyVCP │ │ │ │ │ @@ -42811,15 +42811,15 @@ │ │ │ │ │ Hardware machine control panels can use up a lot of I/O pins and can be expensive. That is where │ │ │ │ │ Virtual Control Panels have the advantage as well as it cost nothing to build a PyVCP. │ │ │ │ │ Virtual Control Panels can be used for testing or monitoring things to temporarily replace real I/O │ │ │ │ │ devices while debugging ladder logic, or to simulate a physical panel before you build it and wire it │ │ │ │ │ to an I/O board. │ │ │ │ │ The following graphic displays many of the PyVCP widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 938 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.1: PyVCP Widgets Showcase │ │ │ │ │ │ │ │ │ │ 12.1.2 Panel Construction │ │ │ │ │ The layout of a PyVCP panel is specified with an XML file that contains widget tags between │ │ │ │ │ @@ -42827,15 +42827,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Figure 12.2: Simple PyVCP LED Panel Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 939 / 1279 │ │ │ │ │ │ │ │ │ │ If you place this text in a file called tiny.xml, and run │ │ │ │ │ halcmd loadusr pyvcp -c mypanel tiny.xml │ │ │ │ │ │ │ │ │ │ PyVCP will create the panel for you, which includes two widgets, a Label with the text This is a LED │ │ │ │ │ @@ -42880,15 +42880,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Here we’ve made a panel with a Label and a Bar widget, specified that the HAL pin connected to │ │ │ │ │ the Bar should be named spindle-speed, and set the maximum value of the bar to 5000 (see widget │ │ │ │ │ reference below for all options). To make AXIS aware of this file, and call it at start up, we need to │ │ │ │ │ specify the following in the [DISPLAY] section of the INI file: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 940 / 1279 │ │ │ │ │ │ │ │ │ │ PYVCP = spindle.xml │ │ │ │ │ │ │ │ │ │ If the panel should appear at the bottom of the AXIS user interface then we need to specify the │ │ │ │ │ following in the [DISPLAY] section of the INI file: │ │ │ │ │ @@ -42906,15 +42906,15 @@ │ │ │ │ │ assuming that a signal called spindle-rpm-filtered already exists. Note that when running together │ │ │ │ │ with AXIS, all PyVCP panel widget HAL pins have names that start with pyvcp., all PyVCP embedded │ │ │ │ │ tab widget HAL pins start with the name specified as EMBED_TAB_NAME converted to lower case. │ │ │ │ │ │ │ │ │ │ This is what the newly created PyVCP panel should look like in AXIS. The sim/lathe configuration is │ │ │ │ │ already configured this way. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 941 / 1279 │ │ │ │ │ │ │ │ │ │ 12.1.5 Stand Alone │ │ │ │ │ This section describes how PyVCP panels can be displayed on their own with or without LinuxCNC’s │ │ │ │ │ machine controller. │ │ │ │ │ To load a stand alone PyVCP panel with LinuxCNC use these commands: │ │ │ │ │ @@ -42953,15 +42953,15 @@ │ │ │ │ │ An optional command to use if you want the panel to stop HAL from continuing commands / shutting │ │ │ │ │ down. After loading any other components you want the last HAL command to be: │ │ │ │ │ waitusr panelname │ │ │ │ │ │ │ │ │ │ This tells HAL to wait for component panelname to close before continuing HAL commands. This is │ │ │ │ │ usually set as the last command so that HAL shuts down when the panel is closed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 942 / 1279 │ │ │ │ │ │ │ │ │ │ 12.1.6 Widgets │ │ │ │ │ HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be float, │ │ │ │ │ s32 or u32. For more information on HAL data types see the HAL Data section. The PyVCP widget │ │ │ │ │ can either display the value of the signal with an indicator widget, or modify the signal value with a │ │ │ │ │ @@ -42998,15 +42998,15 @@ │ │ │ │ │ Editing the XML file Edit the XML file with a text editor. In most cases you can right click on the │ │ │ │ │ file and select open with text editor or similar. │ │ │ │ │ Colors │ │ │ │ │ Colors can be specified using the X11 rgb colors by name gray75 or hex #0000ff. A complete list is │ │ │ │ │ located here https://sedition.com/perl/rgb.html. │ │ │ │ │ Common Colors (colors with numbers indicate shades of that color) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 943 / 1279 │ │ │ │ │ │ │ │ │ │ • white │ │ │ │ │ • black │ │ │ │ │ • blue and blue1 - 4 │ │ │ │ │ • cyan and cyan1 - 4 │ │ │ │ │ @@ -43035,15 +43035,15 @@ │ │ │ │ │ (”Helvetica”,20) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ Figure 12.3: Simple Label Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 944 / 1279 │ │ │ │ │ │ │ │ │ │ 12.1.6.4 Multi_Label │ │ │ │ │ An extension of the text label. │ │ │ │ │ Selectable text label, can display up to 6 label legends when associated bit pin is activated. │ │ │ │ │ Attach each legend pin to a signal and get a descriptive label when the signal is TRUE. │ │ │ │ │ @@ -43080,15 +43080,15 @@ │ │ │ │ │ red. │ │ │ │ │ • n - sets the height of the LED in pixels. │ │ │ │ │ • n - sets the width of the LED in pixels. │ │ │ │ │ • false - when true adds a disable pin to the led. │ │ │ │ │ • color - sets the color of the LED to color when the pin is disabled. │ │ │ │ │ Round LED │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 945 / 1279 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ”my-led” │ │ │ │ │ 50 │ │ │ │ │ ”green” │ │ │ │ │ @@ -43117,15 +43117,15 @@ │ │ │ │ │ │ │ │ │ │ 12.1.6.6 Buttons │ │ │ │ │ A button is used to control a BIT pin. The pin will be set True when the button is pressed and held │ │ │ │ │ down, and will be set False when the button is released. Buttons can use the following optional options. │ │ │ │ │ • n - where n is the amount of extra horizontal extra space. │ │ │ │ │ • n - where n is the amount of extra vertical extra space. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 946 / 1279 │ │ │ │ │ │ │ │ │ │ • ”color” - the cursor over color set to color. │ │ │ │ │ • ”color” - the foreground color set to color. │ │ │ │ │ • ”color” - the background color set to color. │ │ │ │ │ • True - disable pin. │ │ │ │ │ @@ -43154,15 +43154,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.8: Checked button │ │ │ │ │ Checkbutton Code Example │ │ │ │ │ │ │ │ │ │ ”coolant-chkbtn” │ │ │ │ │ ”Coolant” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 947 / 1279 │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ”chip-chkbtn” │ │ │ │ │ @@ -43190,15 +43190,15 @@ │ │ │ │ │ Figure 12.10: Simple Radiobutton Example │ │ │ │ │ Note that the HAL pins in the example above will be named my-radio.one, my-radio.two, and myradio.three. In the image above, one is the selected value. Use the tag HORIZONTAL │ │ │ │ │ to display horizontally. │ │ │ │ │ 12.1.6.7 Number Displays │ │ │ │ │ Number displays can use the following formatting options │ │ │ │ │ • (”Font Name”,n), where n is the font size. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 948 / 1279 │ │ │ │ │ │ │ │ │ │ • _n_, where n is the overall width of the space used. │ │ │ │ │ • _pos_, where pos is LEFT, CENTER, or RIGHT (doesn’t work). │ │ │ │ │ • _n_, where n is the amount of extra horizontal extra space. │ │ │ │ │ • _n_, where n is the amount of extra vertical extra space. │ │ │ │ │ @@ -43227,15 +43227,15 @@ │ │ │ │ │ 6 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ Figure 12.12: Simple s32 Number Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 949 / 1279 │ │ │ │ │ │ │ │ │ │ u32 Number The u32 number widget displays the value of a u32 number. The syntax is the same as │ │ │ │ │ number except the name which is . │ │ │ │ │ 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 │ │ │ │ │ set to change color, dependent upon the value of the halpin (range1, range2 range3 must all be set, │ │ │ │ │ @@ -43270,15 +43270,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ Figure 12.13: Simple Bar Example │ │ │ │ │ Meter Meter displays the value of a FLOAT signal using a traditional dial indicator. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 950 / 1279 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ”mymeter” │ │ │ │ │ ”Battery” │ │ │ │ │ ”Volts” │ │ │ │ │ @@ -43304,15 +43304,15 @@ │ │ │ │ │ │ │ │ │ │ ”my-spinbox” │ │ │ │ │ -12 │ │ │ │ │ 33 │ │ │ │ │ 0 │ │ │ │ │ 0.1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 951 / 1279 │ │ │ │ │ │ │ │ │ │ ”2.3f” │ │ │ │ │ (”Arial”,30) │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ @@ -43346,15 +43346,15 @@ │ │ │ │ │ 100 │ │ │ │ │ 0 │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 952 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.16: Simple Scale Example │ │ │ │ │ Note │ │ │ │ │ Note that by default it is ”min” which is displayed even if it is greater than ”max”, unless ”min” is │ │ │ │ │ negative. │ │ │ │ │ @@ -43377,15 +43377,15 @@ │ │ │ │ │ ”green” │ │ │ │ │ ”black” │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 953 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.17: Simple Dial Example │ │ │ │ │ Jogwheel Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as │ │ │ │ │ the wheel is turned, either by dragging in a circular motion, or by rolling the mouse-wheel. │ │ │ │ │ │ │ │ │ │ @@ -43397,15 +43397,15 @@ │ │ │ │ │ ”my-wheel” │ │ │ │ │ 45 │ │ │ │ │ 250 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 954 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.18: Simple Jogwheel Example │ │ │ │ │ │ │ │ │ │ 12.1.6.9 Images │ │ │ │ │ Image displays use only .gif image format. All of the images must be the same size. The images must │ │ │ │ │ @@ -43419,15 +43419,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ This example was produced from the above code. Using the two image files fwd.gif and rev.gif. FWD │ │ │ │ │ is displayed when selectimage is false and REV is displayed when selectimage is true. │ │ │ │ │ │ │ │ │ │ Figure 12.19: Selectimage False Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 955 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.20: Selectimage True Example │ │ │ │ │ Image u32 The image_u32 is the same as image_bit, except you have essentially an unlimited number │ │ │ │ │ of images and you select the image by setting the halpin to a integer value with 0 for the first image │ │ │ │ │ in the images list and 1 for the second image, etc. │ │ │ │ │ @@ -43440,15 +43440,15 @@ │ │ │ │ │ │ │ │ │ │ The above code produced the following example by adding the stb.gif image. │ │ │ │ │ │ │ │ │ │ Figure 12.21: Simple image_u32 Example with halpin=0 │ │ │ │ │ │ │ │ │ │ Figure 12.22: Simple image_u32 Example withhalpin=1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 956 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.23: Simple image_u32 Example withhalpin=2 │ │ │ │ │ Notice that the default is the min even though it is set higher than max unless there is a negative min. │ │ │ │ │ 12.1.6.10 Containers │ │ │ │ │ Containers are widgets that contain other widgets. Containers are used to group other widgets. │ │ │ │ │ @@ -43484,15 +43484,15 @@ │ │ │ │ │ ”RIDGE” │ │ │ │ │ 3 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 957 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.24: Containers Borders Showcase │ │ │ │ │ Fill Container fill are specified with the tag. Valid entries are none, x, y and both. │ │ │ │ │ The x fill is a horizontal fill and the y fill is a vertical fill │ │ │ │ │ │ │ │ │ │ @@ -43519,15 +43519,15 @@ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ Figure 12.25: Simple hbox Example │ │ │ │ │ Inside an Hbox, you can use the , , and tags to choose how items in the box behave when the window is re-sized. The default is │ │ │ │ │ fill=”y”, anchor=”center”, expand=”yes” for an Hbox. │ │ │ │ │ Vbox Use a Vbox when you want to stack widgets vertically on top of each other. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 958 / 1279 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ RIDGE │ │ │ │ │ 6 │ │ │ │ │ │ │ │ │ │ @@ -43553,15 +43553,15 @@ │ │ │ │ │ │ │ │ │ │ The above code produced this example: │ │ │ │ │ │ │ │ │ │ Figure 12.27: Simple labelframe Example │ │ │ │ │ Table A table is a container that allows layout in a grid of rows and columns. Each row is started by │ │ │ │ │ a tag. A contained widget may span rows or columns through the use of the tag. The sides of the cells to which the contained widgets ”stick” may be set through │ │ │ │ │ the use of the tag. A table expands on its flexible rows and columns. │ │ │ │ │ Table Code Example │ │ │ │ │ │ │ │ │ │ @@ -43605,15 +43605,15 @@ │ │ │ │ │ │ │ │ │ │ ”spindle-speed” │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example showing each tab selected. │ │ │ │ │ │ │ │ │ │ 960 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 961 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.29: Simple Tabs Example │ │ │ │ │ │ │ │ │ │ 12.2 PyVCP Examples │ │ │ │ │ 12.2.1 AXIS │ │ │ │ │ @@ -43651,15 +43651,15 @@ │ │ │ │ │ • Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to │ │ │ │ │ LinuxCNC. │ │ │ │ │ The following is an example of a loadusr command to load two PyVCP panels and name each one so │ │ │ │ │ the connection names in HAL will be known. │ │ │ │ │ loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml │ │ │ │ │ loadusr -Wn sppanel pyvcp -c sppanel panel2.xml │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 962 / 1279 │ │ │ │ │ │ │ │ │ │ The -Wn makes HAL Wait for name to be loaded before proceeding. │ │ │ │ │ The pyvcp -c makes PyVCP name the panel. │ │ │ │ │ The HAL pins from panel1.xml will be named btnpanel.<_pin name_>. │ │ │ │ │ The HAL pins from panel2.xml will be named sppanel.<_pin name_>. │ │ │ │ │ @@ -43668,27 +43668,27 @@ │ │ │ │ │ 12.2.3 Jog Buttons Example │ │ │ │ │ In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be │ │ │ │ │ built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure │ │ │ │ │ our machine, then on the Advanced Configuration Options page we make a couple of selections to add │ │ │ │ │ a blank PyVCP panel as shown in the following figure. For this example we named the configuration │ │ │ │ │ pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 963 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.30: XYZ Wizard Configuration │ │ │ │ │ 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. │ │ │ │ │ 12.2.3.1 Create the Widgets │ │ │ │ │ Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between │ │ │ │ │ the tags we will add the widgets for our panel. │ │ │ │ │ Look in the PyVCP Widgets Reference section of the manual for more detailed information on each │ │ │ │ │ widget documentation des widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ In your custompanel.xml file we will add the description of the widgets. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ (”Helvetica”,16) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43742,15 +43742,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 964 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 965 / 1279 │ │ │ │ │ │ │ │ │ │ RAISED │ │ │ │ │ 3 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above gives us a PyVCP panel that looks like the following. │ │ │ │ │ │ │ │ │ │ 970 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 971 / 1279 │ │ │ │ │ │ │ │ │ │ 12.2.5.2 The Connections │ │ │ │ │ To make it work we add the following code to the custom_postgui.hal file. │ │ │ │ │ # display the rpm based on freq * rpm per hz │ │ │ │ │ loadrt mult2 │ │ │ │ │ @@ -44102,15 +44102,15 @@ │ │ │ │ │ custom.hal file whereas the rev led needs to use the spindle-rev bit. You can’t link the spindle-fwd bit │ │ │ │ │ twice so you use the signal that it was linked to. │ │ │ │ │ │ │ │ │ │ 12.2.6 Rapid to Home Button │ │ │ │ │ This example creates a button on the PyVCP side panel when pressed will send all the axis back to │ │ │ │ │ the home position. This example assumes you don’t have a PyVCP panel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 972 / 1279 │ │ │ │ │ │ │ │ │ │ In your configuration directory create the XML file. In this example it’s named rth.xml. In the rth.xml │ │ │ │ │ file add the following code to create the button. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -44126,15 +44126,15 @@ │ │ │ │ │ │ │ │ │ │ If you don’t have a [HALUI] section in the INI file create it and add the following MDI command. │ │ │ │ │ MDI_COMMAND = G53 G0 X0 Y0 Z0 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Information about G53 and G0 G-codes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 973 / 1279 │ │ │ │ │ │ │ │ │ │ In the [HAL] section if you don’t have a post gui file add the following and create a file called postgui.hal. │ │ │ │ │ POSTGUI_HALFILE = postgui.hal │ │ │ │ │ │ │ │ │ │ In the postgui.hal file add the following code to link the PyVCP button to the MDI command. │ │ │ │ │ @@ -44165,15 +44165,15 @@ │ │ │ │ │ • Widget set: uses TkInter widgets. │ │ │ │ │ • User interface creation: ”edit XML file / run result / evaluate looks” cycle. │ │ │ │ │ • No support for embedding user-defined event handling. │ │ │ │ │ • No LinuxCNC interaction beyond HAL pin I/O supported. │ │ │ │ │ GladeVCP: │ │ │ │ │ • Widget set: relies on the GTK+ widget set. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 974 / 1279 │ │ │ │ │ │ │ │ │ │ • User interface creation: uses the Glade WYSIWYG user interface editor. │ │ │ │ │ • Any HAL pin change may be directed to call back into a user-defined Python event handler. │ │ │ │ │ • Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python. │ │ │ │ │ • Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a │ │ │ │ │ @@ -44197,31 +44197,31 @@ │ │ │ │ │ make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the │ │ │ │ │ LinuxCNC wiki page. │ │ │ │ │ │ │ │ │ │ Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_panel.ini │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Run the same panel, but as a tab inside AXIS: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_tab.ini │ │ │ │ │ │ │ │ │ │ 975 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ To run this panel inside Touchy: │ │ │ │ │ $ cd configs/sim/touchy/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_touchy.ini │ │ │ │ │ │ │ │ │ │ 976 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 977 / 1279 │ │ │ │ │ │ │ │ │ │ Functionally these setups are identical - they only differ in screen real estate requirements and visibility. Since it is possible to run several GladeVCP components in parallel (with different HAL component │ │ │ │ │ names), mixed setups are possible as well - for instance a panel on the right hand side, and one or │ │ │ │ │ more tabs for less-frequently used parts of the interface. │ │ │ │ │ 12.3.2.1 Exploring the example panel │ │ │ │ │ @@ -44236,15 +44236,15 @@ │ │ │ │ │ The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI │ │ │ │ │ command in the interpreter. The third button Execute Oword subroutine is an advanced example - it │ │ │ │ │ takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword │ │ │ │ │ subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body. │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 978 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.2.2 Exploring the User Interface description │ │ │ │ │ The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed. │ │ │ │ │ To edit the user interface, run the command │ │ │ │ │ $ glade configs/axis/gladevcp/manual-example.ui │ │ │ │ │ @@ -44279,15 +44279,15 @@ │ │ │ │ │ Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian │ │ │ │ │ Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error. │ │ │ │ │ 12.3.3.2 Running Glade to create a new user interface │ │ │ │ │ This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on │ │ │ │ │ Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube. │ │ │ │ │ Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 979 / 1279 │ │ │ │ │ │ │ │ │ │ • If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up │ │ │ │ │ with /scripts/rip-environment, otherwise Glade won’t find the LinuxCNC-specific │ │ │ │ │ widgets. │ │ │ │ │ • When asked for unsaved preferences, just accept the defaults and hit Close. │ │ │ │ │ @@ -44302,15 +44302,15 @@ │ │ │ │ │ File→Save as, give it a name like myui.ui and make sure it’s saved as GtkBuilder file (radio button │ │ │ │ │ left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but │ │ │ │ │ there is no point in using it. The convention for GtkBuilder file extension is .ui. │ │ │ │ │ 12.3.3.3 Testing a panel │ │ │ │ │ You’re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with: │ │ │ │ │ gladevcp myui.ui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 980 / 1279 │ │ │ │ │ │ │ │ │ │ GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless │ │ │ │ │ overridden by the -c option. If running AXIS, just try Show HAL configuration and │ │ │ │ │ inspect its pins. │ │ │ │ │ You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive). │ │ │ │ │ @@ -44348,15 +44348,15 @@ │ │ │ │ │ It is possible to create a custom HAL component name by adding the -c option: │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel where PyVCP used to live: │ │ │ │ │ GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui │ │ │ │ │ │ │ │ │ │ The command line actually run by AXIS for the above is: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 981 / 1279 │ │ │ │ │ │ │ │ │ │ halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example ←.ui │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located │ │ │ │ │ @@ -44392,15 +44392,15 @@ │ │ │ │ │ Note │ │ │ │ │ Make sure the UI file is the last option passed to GladeVCP in both the GLADEVCP= and │ │ │ │ │ EMBED_TAB_COMMAND= statements. │ │ │ │ │ │ │ │ │ │ 12.3.3.7 Integrating into Touchy │ │ │ │ │ To do add a GladeVCP tab to Touchy, edit your INI file as follows: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 982 / 1279 │ │ │ │ │ │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel as a tab │ │ │ │ │ EMBED_TAB_NAME=GladeVCP demo │ │ │ │ │ EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal ←./manual-example.ui │ │ │ │ │ @@ -44439,15 +44439,15 @@ │ │ │ │ │ -H FILE:: │ │ │ │ │ Execute HAL statements from FILE with halcmd after the │ │ │ │ │ component is set up and ready │ │ │ │ │ -m MAXIMUM:: │ │ │ │ │ Force panel window to maximize. Together with the -g geometry option │ │ │ │ │ one can move the panel to a second monitor and force it to use all of the screen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 983 / 1279 │ │ │ │ │ │ │ │ │ │ -t THEME:: │ │ │ │ │ Set gtk theme. Default is system theme. Different panels can have different themes. │ │ │ │ │ An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? ←GTK_Themes[EMC Wiki]. │ │ │ │ │ -x XID:: │ │ │ │ │ @@ -44486,15 +44486,15 @@ │ │ │ │ │ So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded │ │ │ │ │ fashion): │ │ │ │ │ • You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the │ │ │ │ │ right point in time, so comment that out in the INI file. │ │ │ │ │ • Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H │ │ │ │ │ option (see previous section). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 984 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6 HAL Widget reference │ │ │ │ │ GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended │ │ │ │ │ to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used │ │ │ │ │ with the Glade user interface editor. With proper installation, the HAL Widgets should show up in │ │ │ │ │ @@ -44525,15 +44525,15 @@ │ │ │ │ │ Exceptions to this rule currently are: │ │ │ │ │ │ │ │ │ │ • HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a │ │ │ │ │ (s32) pin │ │ │ │ │ • HAL_ProgressBar, which has a -value input pin, and a -scale input │ │ │ │ │ pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 985 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6.2 Python attributes and methods of HAL Widgets │ │ │ │ │ HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the │ │ │ │ │ applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties │ │ │ │ │ and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual. │ │ │ │ │ @@ -44571,15 +44571,15 @@ │ │ │ │ │ callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin’s │ │ │ │ │ value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback │ │ │ │ │ into your Python code when - well, a HAL pin changes its value. This means there’s no more need for │ │ │ │ │ permanent polling of HAL pin changes in your code, the widgets do that in the background and let │ │ │ │ │ you know. │ │ │ │ │ Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 986 / 1279 │ │ │ │ │ │ │ │ │ │ The example in configs/apps/gladevcp/complex shows how this is handled in Python. │ │ │ │ │ 12.3.6.5 Buttons │ │ │ │ │ This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton, │ │ │ │ │ HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical │ │ │ │ │ @@ -44590,15 +44590,15 @@ │ │ │ │ │ • Important common methods: set_active(), get_active() │ │ │ │ │ • Important properties: label, image │ │ │ │ │ │ │ │ │ │ Figure 12.31: Check button │ │ │ │ │ │ │ │ │ │ Figure 12.32: Radio buttons │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 987 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.33: Toggle button │ │ │ │ │ Tip │ │ │ │ │ Defining radio button groups in Glade: │ │ │ │ │ • Decide on default active button. │ │ │ │ │ @@ -44621,15 +44621,15 @@ │ │ │ │ │ 12.3.6.7 SpinButton │ │ │ │ │ HAL SpinButton is derived from GtkSpinButton and holds two pins: │ │ │ │ │ -f │ │ │ │ │ out FLOAT pin │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 988 / 1279 │ │ │ │ │ │ │ │ │ │ To be useful, Spinbuttons need an adjustment value like scales, see above. │ │ │ │ │ │ │ │ │ │ Figure 12.35: Example SpinButton │ │ │ │ │ │ │ │ │ │ @@ -44663,15 +44663,15 @@ │ │ │ │ │ Set the content of the label which may be shown over the counts value. │ │ │ │ │ If the label given is longer than 15 Characters, it will be cut to 15 Characters. │ │ │ │ │ default = blank │ │ │ │ │ center_color │ │ │ │ │ This allows one to change the color of the wheel. It uses a GDK color string. │ │ │ │ │ default = #bdefbdefbdef (gray) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 989 / 1279 │ │ │ │ │ │ │ │ │ │ count_type_shown │ │ │ │ │ There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts. │ │ │ │ │ default = 1 │ │ │ │ │ • count is based on the CPR selected - it will count positive and negative. It is available as a s32 │ │ │ │ │ @@ -44712,15 +44712,15 @@ │ │ │ │ │ There are two GObject signals emitted: │ │ │ │ │ • count_changed │ │ │ │ │ Emitted when the widget’s count changes eg. from being wheel scrolled. │ │ │ │ │ • scale_changed │ │ │ │ │ Emitted when the widget’s scale changes eg. from double clicking. │ │ │ │ │ Connect to these like so: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 990 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].connect(’count_changed’, [count function name]) │ │ │ │ │ [widget name].connect(’scale_changed’, [scale function name]) │ │ │ │ │ │ │ │ │ │ The callback functions would use this pattern: │ │ │ │ │ @@ -44742,15 +44742,15 @@ │ │ │ │ │ may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough │ │ │ │ │ movements the drag and drop way. │ │ │ │ │ jogwheel exports it’s count value as HAL pin: │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ jogwheel has the following properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 991 / 1279 │ │ │ │ │ │ │ │ │ │ size │ │ │ │ │ Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200 │ │ │ │ │ cpr │ │ │ │ │ Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40 │ │ │ │ │ @@ -44773,15 +44773,15 @@ │ │ │ │ │ Sets the label content with ”string” │ │ │ │ │ │ │ │ │ │ Figure 12.37: Example JogWheel │ │ │ │ │ │ │ │ │ │ 12.3.6.10 Speed Control │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 992 / 1279 │ │ │ │ │ │ │ │ │ │ The value is controlled with two button to increase or decrease the value. The increment will change │ │ │ │ │ as long a button is pressed. The value of each increment as well as the time between two changes │ │ │ │ │ can be set using the widget properties. │ │ │ │ │ speedcontrol offers some HAL pin: │ │ │ │ │ @@ -44826,15 +44826,15 @@ │ │ │ │ │ Float │ │ │ │ │ The max allowed value. │ │ │ │ │ Allowed values are 0.001 to 99999.0. │ │ │ │ │ Default is 100.0. │ │ │ │ │ If you change this value, the increment will be reset to default, so it might be necessary to set │ │ │ │ │ afterwards a new increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 993 / 1279 │ │ │ │ │ │ │ │ │ │ increment │ │ │ │ │ Float │ │ │ │ │ Sets the applied increment per mouse click. │ │ │ │ │ Allowed values are 0.001 to 99999.0 and -1. │ │ │ │ │ @@ -44880,15 +44880,15 @@ │ │ │ │ │ • [widget name].get_value() │ │ │ │ │ Will return the counts value as float │ │ │ │ │ • [widget name].set_value(float(value)) │ │ │ │ │ Sets the widget to the commanded value │ │ │ │ │ • [widget name].set_digits(int(value)) │ │ │ │ │ Sets the digits of the value to be used │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 994 / 1279 │ │ │ │ │ │ │ │ │ │ • [widget name].hide_button(bool(value)) │ │ │ │ │ Hide or show the button │ │ │ │ │ │ │ │ │ │ Figure 12.38: Example Speedcontrol │ │ │ │ │ @@ -44919,15 +44919,15 @@ │ │ │ │ │ If the pin is low then child widgets are visible which is the default state. │ │ │ │ │ HAL_Table and HAL_Hbox │ │ │ │ │ Have one HAL BIT input pin which controls if their child widgets are sensitive or not. │ │ │ │ │ Pin: , . │ │ │ │ │ in bit pin │ │ │ │ │ If the pin is low then child widgets are inactive which is the default state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 995 / 1279 │ │ │ │ │ │ │ │ │ │ State_Sensitive_Table │ │ │ │ │ Responds to the state to LinuxCNC’s interpreter. │ │ │ │ │ Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle. │ │ │ │ │ You can combine them. It will always be insensitive at Estop. │ │ │ │ │ @@ -44968,15 +44968,15 @@ │ │ │ │ │ led_blink_rate │ │ │ │ │ If set and LED is ON then it’s blinking. │ │ │ │ │ Blink period is equal to ”led_blink_rate” specified in milliseconds. │ │ │ │ │ create_hal_pin │ │ │ │ │ Select/deselect creation of a HAL pin to control the LED. │ │ │ │ │ With no HAL pin created LED can be controlled with a Python function. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 996 / 1279 │ │ │ │ │ │ │ │ │ │ As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification │ │ │ │ │ in your code when the LED’s HAL pin was changed, then connect this signal to a handler, for example │ │ │ │ │ on_led_pin_changed and provide the handler as follows: │ │ │ │ │ def on_led_pin_changed(self,hal_led,data=None): │ │ │ │ │ @@ -45008,15 +45008,15 @@ │ │ │ │ │ Yellow zone lower limit │ │ │ │ │ red_limit │ │ │ │ │ Red zone lower limit │ │ │ │ │ text_template │ │ │ │ │ Text template to display the current value of the pin. │ │ │ │ │ Python formatting may be used for dict {”value”:value}. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 997 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.40: Example HAL_ProgressBar │ │ │ │ │ │ │ │ │ │ 12.3.6.15 ComboBox │ │ │ │ │ HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list. │ │ │ │ │ @@ -45046,15 +45046,15 @@ │ │ │ │ │ invert │ │ │ │ │ Swap min and max direction. │ │ │ │ │ An inverted HBar grows from right to left, an inverted VBar from top to bottom. │ │ │ │ │ min, max │ │ │ │ │ Minimum and maximum value of desired range. It is not an error condition if the current value │ │ │ │ │ is outside this range. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 998 / 1279 │ │ │ │ │ │ │ │ │ │ show limits │ │ │ │ │ Used to select/deselect the limits text on bar. │ │ │ │ │ zero │ │ │ │ │ Zero point of range. │ │ │ │ │ @@ -45092,15 +45092,15 @@ │ │ │ │ │ to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border │ │ │ │ │ and zone 2 from last border to 1. │ │ │ │ │ Borders are set as fractions. │ │ │ │ │ Valid values range from 0 to 1. │ │ │ │ │ │ │ │ │ │ Figure 12.41: Horizontal bar │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 999 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.42: Vertical bar │ │ │ │ │ │ │ │ │ │ 12.3.6.17 Meter │ │ │ │ │ HAL_Meter is a widget similar to PyVCP meter - it represents a float value. │ │ │ │ │ @@ -45129,15 +45129,15 @@ │ │ │ │ │ z0_border, z1_border │ │ │ │ │ Define up bounds of color zones. │ │ │ │ │ By default only one zone is enabled. If you want more then one zone set z0_border and z1_border │ │ │ │ │ to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second │ │ │ │ │ border and zone 2 from last border to max. │ │ │ │ │ Borders are set as values in range min-max. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1000 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.43: Example HAL Meters │ │ │ │ │ │ │ │ │ │ 12.3.6.18 HAL_Graph │ │ │ │ │ This widget is for plotting values over time. │ │ │ │ │ @@ -45162,15 +45162,15 @@ │ │ │ │ │ show rapids │ │ │ │ │ This tells the plotter to show the rapid moves. │ │ │ │ │ Default = true. │ │ │ │ │ show DTG │ │ │ │ │ This selects the DRO to display the distance-to-go value. │ │ │ │ │ Default = true. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1001 / 1279 │ │ │ │ │ │ │ │ │ │ show relative │ │ │ │ │ This selects the DRO to show values relative to user system or machine coordinates. │ │ │ │ │ Default = true. │ │ │ │ │ show live plot │ │ │ │ │ @@ -45214,15 +45214,15 @@ │ │ │ │ │ Mouse button handling: leads to different functions of the button: │ │ │ │ │ • 0 = default: left rotate, middle move, right zoom │ │ │ │ │ • 1 = left zoom, middle move, right rotate │ │ │ │ │ • 2 = left move, middle rotate, right zoom │ │ │ │ │ • 3 = left zoom, middle rotate, right move │ │ │ │ │ • 4 = left move, middle zoom, right rotate │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1002 / 1279 │ │ │ │ │ │ │ │ │ │ • 5 = left rotate, middle zoom, right move │ │ │ │ │ • 6 = left move, middle zoom, right zoom │ │ │ │ │ Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ @@ -45260,15 +45260,15 @@ │ │ │ │ │ • If you set all the plotting options false but show_offsets true you get an offsets page instead of │ │ │ │ │ a graphics plot. │ │ │ │ │ • If you get the zoom distance before changing the view then reset the zoom distance, it’s much │ │ │ │ │ more user friendly. │ │ │ │ │ • if you select an element in the preview, the selected element will be used as rotation center │ │ │ │ │ point │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.44: Gremlin Example │ │ │ │ │ │ │ │ │ │ 12.3.6.20 HAL_Offset │ │ │ │ │ The HAL_Offset widget is used to display the offset of a single axis. │ │ │ │ │ HAL_Offset has the following properties: │ │ │ │ │ Joint Number │ │ │ │ │ @@ -45303,15 +45303,15 @@ │ │ │ │ │ The DRO widget is used to display the current axis position. │ │ │ │ │ It has the following properties: │ │ │ │ │ Actual Position │ │ │ │ │ select actual (feedback) position or commanded position. │ │ │ │ │ │ │ │ │ │ 1003 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1004 / 1279 │ │ │ │ │ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ @@ -45351,15 +45351,15 @@ │ │ │ │ │ 12.3.6.22 Combi_DRO widget │ │ │ │ │ The Combi_DRO widget is used to display the current, the relative axis position and the distance to go │ │ │ │ │ in one DRO. │ │ │ │ │ By clicking on the DRO the Order of the DRO will toggle around. │ │ │ │ │ In Relative Mode the actual coordinate system will be displayed. │ │ │ │ │ Combi_DRO has the following properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1005 / 1279 │ │ │ │ │ │ │ │ │ │ joint_number │ │ │ │ │ Used to select which axis (technically which joint) is displayed. │ │ │ │ │ On a trivialkins machine (mill, lathe, router) axis vrs. joint number are: │ │ │ │ │ 0:X │ │ │ │ │ @@ -45408,15 +45408,15 @@ │ │ │ │ │ toggle_readout │ │ │ │ │ A left mouse click will toggle the DRO readout through the different modes [”Rel”, ”Abs”, ”DTG”]. │ │ │ │ │ By unchecking the box you can disable that behavior. The toggling can still be done with [widget │ │ │ │ │ name].toggle_readout(). │ │ │ │ │ Value must be boolean. │ │ │ │ │ Default is TRUE. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1006 / 1279 │ │ │ │ │ │ │ │ │ │ cycle_time │ │ │ │ │ The time the DRO waits between two polls. │ │ │ │ │ this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis │ │ │ │ │ config, to avoid, that the DRO slows down the main application too much. │ │ │ │ │ @@ -45457,15 +45457,15 @@ │ │ │ │ │ – [”Abs”, ”DTG”, ”Rel”] │ │ │ │ │ • [widget name].get_position() │ │ │ │ │ Returns the position of the DRO as a list of floats. │ │ │ │ │ The order is independent of the order shown on the DRO and will be given as [Absolute , relative │ │ │ │ │ , DTG]. │ │ │ │ │ – Absolute = the machine coordinates, depends on the actual property will give actual or commanded position. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1007 / 1279 │ │ │ │ │ │ │ │ │ │ – Relative = will be the coordinates of the actual coordinate system. │ │ │ │ │ – DTG = the distance to go. │ │ │ │ │ Will mostly be 0, as this function should not be used while the machine is moving, because of time │ │ │ │ │ delays. │ │ │ │ │ @@ -45500,15 +45500,15 @@ │ │ │ │ │ • [widget name].system │ │ │ │ │ The actual system, as mentioned in the system_changed signal. │ │ │ │ │ • [widget name].homed │ │ │ │ │ True if the joint is homed. │ │ │ │ │ • [widget name].machine_units │ │ │ │ │ 0 if Imperial, 1 if Metric. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1008 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.45: Example: Three Combi_DRO in a window │ │ │ │ │ X = Relative Mode │ │ │ │ │ Y = Absolute Mode │ │ │ │ │ Z = DTG Mode │ │ │ │ │ @@ -45533,15 +45533,15 @@ │ │ │ │ │ Sets the file filter for the objects to be shown. │ │ │ │ │ Must be a string containing a comma separated list of extensions to be shown. │ │ │ │ │ Default is ”ngc,py”. │ │ │ │ │ sortorder │ │ │ │ │ Sets the sorting order of the displayed icon. │ │ │ │ │ Must be an integer value from 0 to 3, where: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1009 / 1279 │ │ │ │ │ │ │ │ │ │ • 0 = ASCENDING (sorted according to file names) │ │ │ │ │ • 1 = DESCENDING (sorted according to file names) │ │ │ │ │ • 2 = FOLDERFIRST (show the folders first, then the files), default │ │ │ │ │ • 3 = FILEFIRST (show the files first, then the folders) │ │ │ │ │ @@ -45585,15 +45585,15 @@ │ │ │ │ │ [widget name].btn_sel_next.emit(”clicked”) │ │ │ │ │ [widget name].btn_get_selected.emit(”clicked”) │ │ │ │ │ [widget name].btn_dir_up.emit(”clicked”) │ │ │ │ │ [widget name].btn_exit.emit(”clicked”) │ │ │ │ │ │ │ │ │ │ The widget will emit the following signals: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1010 / 1279 │ │ │ │ │ │ │ │ │ │ • selected │ │ │ │ │ This signal is emitted when the user selects an icon. │ │ │ │ │ It will return a string containing a file path if a file has been selected, or None if a directory has been │ │ │ │ │ selected. │ │ │ │ │ @@ -45608,15 +45608,15 @@ │ │ │ │ │ – state is a boolean and will be True or False. │ │ │ │ │ • exit │ │ │ │ │ This signal is emitted when the exit button has been pressed to close the IconView. │ │ │ │ │ Mostly needed if the application is started as stand alone. │ │ │ │ │ │ │ │ │ │ Figure 12.46: Iconview Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1011 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6.24 Calculator widget │ │ │ │ │ This is a simple calculator widget, that can be used for numerical input. │ │ │ │ │ You can preset the display and retrieve the result or that preset value. │ │ │ │ │ calculator has the following properties: │ │ │ │ │ @@ -45649,15 +45649,15 @@ │ │ │ │ │ │ │ │ │ │ tooleditor has the following properties: │ │ │ │ │ Hidden Columns │ │ │ │ │ This will hide the given columns. │ │ │ │ │ The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q. │ │ │ │ │ You can hide any number of columns including the select and comments. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1012 / 1279 │ │ │ │ │ │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ [widget name].set_properties(’hide_columns’,’uvwijq’) │ │ │ │ │ │ │ │ │ │ @@ -45696,15 +45696,15 @@ │ │ │ │ │ Convenience method to hide buttons. │ │ │ │ │ You must call this after show_all(). │ │ │ │ │ • [widget name].get_selected_tool() │ │ │ │ │ Return the user selected (highlighted) tool number. │ │ │ │ │ • [widget name].set_selected_tool(toolnumber) │ │ │ │ │ Selects (highlights) the requested tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1013 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.47: Tooleditor Example │ │ │ │ │ │ │ │ │ │ 12.3.6.26 Offsetpage │ │ │ │ │ The Offsetpage widget is used to display/edit the offsets of all the axes. │ │ │ │ │ @@ -45729,15 +45729,15 @@ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1014 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”highlight_color”,gdk.Color(’blue’)) │ │ │ │ │ [widget name].set_property(”foreground_color”,gdk.Color(’black’)) │ │ │ │ │ [widget name].set_property(”hide_columns”,”xyzabcuvwt”) │ │ │ │ │ [widget name].set_property(”hide_rows”,”123456789abc”) │ │ │ │ │ @@ -45763,15 +45763,15 @@ │ │ │ │ │ This is a list of a list of offset-name/user-name pairs. │ │ │ │ │ The default text is the same as the offset name. │ │ │ │ │ • [widget name].get_names() │ │ │ │ │ This returns a list of a list of row-keyword/user-name pairs. │ │ │ │ │ The user name column is editable, so saving this list is user friendly. │ │ │ │ │ See set_names above. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1015 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.48: Offsetpage Example │ │ │ │ │ │ │ │ │ │ 12.3.6.27 HAL_sourceview widget │ │ │ │ │ │ │ │ │ │ @@ -45792,15 +45792,15 @@ │ │ │ │ │ Sets the line to highlight. │ │ │ │ │ Uses the sourceview line numbers. │ │ │ │ │ • [widget name].get_line_number() │ │ │ │ │ Returns the currently highlighted line. │ │ │ │ │ • [widget name].line_up() │ │ │ │ │ Moves the highlighted line up one line. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1016 / 1279 │ │ │ │ │ │ │ │ │ │ • [widget name].line_down() │ │ │ │ │ Moves the highlighted line down one line. │ │ │ │ │ • [widget name].load_file(’filename’) │ │ │ │ │ Loads a file. │ │ │ │ │ @@ -45822,15 +45822,15 @@ │ │ │ │ │ use_double_click │ │ │ │ │ Boolean, True enables the mouse double click feature and a double click on an entry will submit │ │ │ │ │ that command. │ │ │ │ │ It is not recommended to use this feature on real machines, as a double click on a wrong entry │ │ │ │ │ may cause dangerous situations │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1017 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”font_size_tree”,10) │ │ │ │ │ [widget name].set_property(”font_size_entry”,20) │ │ │ │ │ [widget name].set_property(”use_double_click”,False) │ │ │ │ │ │ │ │ │ │ @@ -45843,15 +45843,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.50: HAL widgets in a bitmap Example │ │ │ │ │ │ │ │ │ │ 12.3.7 Action Widgets Reference │ │ │ │ │ GladeVCP includes a collection of ”canned actions” called VCP Action Widgets for the Glade user │ │ │ │ │ interface editor. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1018 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the │ │ │ │ │ G-code interpreter. │ │ │ │ │ │ │ │ │ │ @@ -45875,15 +45875,15 @@ │ │ │ │ │ The command string may use special keywords to access important functions. │ │ │ │ │ • ACTION for access to the ACTION command library. │ │ │ │ │ • GSTAT for access to the Gstat status message library. │ │ │ │ │ • INFO for access to collected data from the INI file. │ │ │ │ │ • HAL for access to the HAL linuxcnc Python module │ │ │ │ │ • STAT for access to LinuxCNC’s raw status via the LinuxCNC Python module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1019 / 1279 │ │ │ │ │ │ │ │ │ │ • CMD for access to LinuxCNC’s commands via the LinuxCNC Python module. │ │ │ │ │ • EXT for access to the handler file functions if available. │ │ │ │ │ • linuxcnc for access to the LinuxCNC Python module. │ │ │ │ │ • self for access to the widget instance. │ │ │ │ │ @@ -45917,15 +45917,15 @@ │ │ │ │ │ that the requested operation is running: │ │ │ │ │ • The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is │ │ │ │ │ idle again. │ │ │ │ │ • The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then │ │ │ │ │ allows user to send AUTO_ABORT command. │ │ │ │ │ • The MDI toggle sends given MDI command and waits for its completion in pressed inactive state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1020 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.7.4 The Action_MDI Toggle and Action_MDI widgets │ │ │ │ │ These widgets provide a means to execute arbitrary MDI commands. │ │ │ │ │ The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which │ │ │ │ │ remains disabled until command complete. │ │ │ │ │ @@ -45944,15 +45944,15 @@ │ │ │ │ │ 12.3.7.6 Parameter passing with Action_MDI and ToggleAction_MDI widgets │ │ │ │ │ Optionally, MDI command strings may have parameters substituted before they are passed to the interpreter. Parameters currently may be names of HAL pins in the GladeVCP component. This is how it │ │ │ │ │ works: │ │ │ │ │ • assume you have a HAL SpinBox named speed, and you want to pass it’s current value as a parameter in an MDI command. │ │ │ │ │ • The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description). │ │ │ │ │ • To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name} │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1021 / 1279 │ │ │ │ │ │ │ │ │ │ • for the above HAL SpinBox, we could use (MSG, ”The speed is: ${speed-f}”) just to show what’s │ │ │ │ │ happening. │ │ │ │ │ The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here’s what you │ │ │ │ │ get when running it: │ │ │ │ │ @@ -45968,15 +45968,15 @@ │ │ │ │ │ Figure 12.54: Action_MDI Advanced Example │ │ │ │ │ │ │ │ │ │ 12.3.7.8 Preparing for an MDI Action, and cleaning up afterwards │ │ │ │ │ The LinuxCNC G-code interpreter has a single global set of variables, like feed, spindle speed, relative/absolute mode and others. If you use G-code commands or O-word subs, some of these variables │ │ │ │ │ might get changed by the command or subroutine - for example, a probing subroutine will very likely │ │ │ │ │ set the feed value quite low. With no further precautions, your previous feed setting will be overwritten by the probing subroutine’s value. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1022 / 1279 │ │ │ │ │ │ │ │ │ │ To deal with this surprising and undesirable side effect of a given O-word subroutine or G-code statement executed with an LinuxCNC ToggleAction_MDI, you might associate pre-MDI and post-MDI handlers with a given LinuxCNC ToggleAction_MDI. These handlers are optional and provide a way to save │ │ │ │ │ any state before executing the MDI Action, and to restore it to previous values afterwards. The signal │ │ │ │ │ names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade like │ │ │ │ │ any other handler. │ │ │ │ │ @@ -46013,15 +46013,15 @@ │ │ │ │ │ • mode-related: │ │ │ │ │ – mode-manual: emitted when LinuxCNC enters manual mode, │ │ │ │ │ – mode-mdi: emitted when LinuxCNC enters MDI mode, │ │ │ │ │ – mode-auto: emitted when LinuxCNC enters automatic mode, │ │ │ │ │ • interpreter-related: emitted when the G-code interpreter changes into that mode │ │ │ │ │ – interp-run │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1023 / 1279 │ │ │ │ │ │ │ │ │ │ – interp-idle │ │ │ │ │ – interp-paused │ │ │ │ │ – interp-reading │ │ │ │ │ – interp-waiting │ │ │ │ │ @@ -46060,15 +46060,15 @@ │ │ │ │ │ print(INFO.MACHINE_IS_METRIC) │ │ │ │ │ ACTION.SET_ERROR_MESSAGE(’Something went wrong’) │ │ │ │ │ │ │ │ │ │ More information can be found here: GladeVCP Libraries modules There is a sample configuration │ │ │ │ │ that demonstrates using the core library with GladeVCP’s action Python widgets and with a Python │ │ │ │ │ handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1024 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.8.3 An example: adding custom user callbacks in Python │ │ │ │ │ This is just a minimal example to convey the idea - details are laid out in the rest of this section. │ │ │ │ │ GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in │ │ │ │ │ Python. This could be used, among others, to execute MDI commands. Here’s how you do it: │ │ │ │ │ @@ -46103,15 +46103,15 @@ │ │ │ │ │ The overall approach is as follows: │ │ │ │ │ • Design your UI with Glade, and set signal handlers where you want actions associated with a widget. │ │ │ │ │ • Write a Python module which contains callable objects (see handler models below). │ │ │ │ │ • Pass your module’s path name to GladeVCP with the -u option. │ │ │ │ │ • GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree. │ │ │ │ │ • The main event loop is run. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1025 / 1279 │ │ │ │ │ │ │ │ │ │ For simple tasks it’s sufficient to define functions named after the Glade signal handlers. These will be │ │ │ │ │ called when the corresponding event happens in the widget tree. Here’s a trivial example - it assumes │ │ │ │ │ that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press: │ │ │ │ │ nhits = 0 │ │ │ │ │ @@ -46157,15 +46157,15 @@ │ │ │ │ │ self.active = False │ │ │ │ │ # connect to client-events from the host GUI │ │ │ │ │ def on_map_event(self, widget, data=None): │ │ │ │ │ top = widget.get_toplevel() │ │ │ │ │ print(”map event”) │ │ │ │ │ top.connect(’client-event’, self.event) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1026 / 1279 │ │ │ │ │ │ │ │ │ │ If during module inspection GladeVCP finds a function get_handlers, it calls it as follows: │ │ │ │ │ get_handlers(halcomp,builder,useropts) │ │ │ │ │ │ │ │ │ │ The arguments are: │ │ │ │ │ @@ -46200,15 +46200,15 @@ │ │ │ │ │ screen). And the HAL component isn’t ready as well, so its unsafe to access pins values in your │ │ │ │ │ __init__() method. │ │ │ │ │ If you want to have a callback to execute at program start after it is safe to access HAL pins, then a │ │ │ │ │ connect a handler to the realize signal of the top level window1 (which might be its only real purpose). │ │ │ │ │ At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about │ │ │ │ │ to enter the Gtk main loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1027 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.8.7 Multiple callbacks with the same name │ │ │ │ │ Within a class, method names must be unique. However, it is OK to have multiple class instances │ │ │ │ │ passed to GladeVCP by get_handlers() with identically named methods. When the corresponding │ │ │ │ │ signal occurs, these methods will be called in definition order - module by module, and within a module, │ │ │ │ │ @@ -46248,15 +46248,15 @@ │ │ │ │ │ are saved and to be restored. In the case of signature mismatch, a new INI file with default settings │ │ │ │ │ is generated. │ │ │ │ │ 12.3.8.10 Using persistent variables │ │ │ │ │ If you want any of Gtk widget state, HAL widgets output pin’s values and/or class attributes of your │ │ │ │ │ handler class to be retained across invocations, proceed as follows: │ │ │ │ │ • Import the gladevcp.persistence module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1028 / 1279 │ │ │ │ │ │ │ │ │ │ • Decide which instance attributes, and their default values you want to have retained, if any. │ │ │ │ │ • Decide which widgets should have their state retained. │ │ │ │ │ • Describe these decisions in your handler class’ \__init()__ method through a nested dictionary │ │ │ │ │ as follows: │ │ │ │ │ @@ -46297,15 +46297,15 @@ │ │ │ │ │ ini.restore_state(obj) │ │ │ │ │ Restore HAL out pins and obj’s attributes as saved/initialized to default as above. │ │ │ │ │ 12.3.8.11 Saving the state on GladeVCP shutdown │ │ │ │ │ To save the widget and/or variable state on exit, proceed as follows: │ │ │ │ │ • Select some interior widget (type is not important, for instance a table). │ │ │ │ │ • In the Signals tab, select GtkObject. It should show a destroy signal in the first column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1029 / 1279 │ │ │ │ │ │ │ │ │ │ • Add the handler name, e.g. on_destroy to the second column. │ │ │ │ │ • Add a Python handler like below: │ │ │ │ │ import gtk │ │ │ │ │ ... │ │ │ │ │ @@ -46344,15 +46344,15 @@ │ │ │ │ │ 12.3.8.14 Adding HAL pins │ │ │ │ │ If you need HAL pins which are not associated with a specific HAL widget, add them as follows: │ │ │ │ │ import hal_glib │ │ │ │ │ ... │ │ │ │ │ # in your handler class __init__(): │ │ │ │ │ self.example_trigger = hal_glib.GPin(halcomp.newpin(’example-trigger’, hal.HAL_BIT, hal. ←HAL_IN)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1030 / 1279 │ │ │ │ │ │ │ │ │ │ To get a callback when this pin’s value changes, associate a value-change callback with this pin, add: │ │ │ │ │ self.example_trigger.connect(’value-changed’, self._on_example_trigger_change) │ │ │ │ │ │ │ │ │ │ and define a callback method (or function, in this case leave out the self parameter): │ │ │ │ │ @@ -46394,15 +46394,15 @@ │ │ │ │ │ self.max_value = hal_glib.GPin(halcomp.newpin(’max-value’, hal.HAL_FLOAT, hal. ←HAL_IN)) │ │ │ │ │ self.max_value.connect(’value-changed’, self._on_max_value_change) │ │ │ │ │ inifile = linuxcnc.ini(os.getenv(”INI_FILE_NAME”)) │ │ │ │ │ mmin = float(inifile.find(”METER”, ”MIN”) or 0.0) │ │ │ │ │ self.meter = self.builder.get_object(’meter’) │ │ │ │ │ self.meter.min = mmin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1031 / 1279 │ │ │ │ │ │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,builder,useropts)] │ │ │ │ │ │ │ │ │ │ 12.3.8.17 Examples, and rolling your own GladeVCP application │ │ │ │ │ @@ -46438,15 +46438,15 @@ │ │ │ │ │ that works fine. It doesn’t work for window1. │ │ │ │ │ 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value │ │ │ │ │ See the example in configs/apps/gladevcp/colored-label. Setting the background color of a GtkLabel widget (and HAL_Label is derived from GtkLabel) is a bit tricky. The GtkLabel widget has │ │ │ │ │ no window object of its own for performance reasons, and only window objects can have a background color. The solution is to enclose the Label in an EventBox container, which has a window │ │ │ │ │ but is otherwise invisible - see the coloredlabel.ui file. │ │ │ │ │ 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero? │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1032 / 1279 │ │ │ │ │ │ │ │ │ │ This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely │ │ │ │ │ to be the case for all widgets using adjustment. The workaround mentioned for instance in │ │ │ │ │ http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin │ │ │ │ │ value, it is better to set it explicitly in an on_realize signal handler during widget creation. See │ │ │ │ │ @@ -46487,15 +46487,15 @@ │ │ │ │ │ Support is provided for independently installed GladeVCP applications that conform to system directory placements as defined by the LINUXCNC_AUX_GLADEVCP and LINUXCNC_AUX_EXAMPLES │ │ │ │ │ items reported by the script linuxcnc_var: │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_GLADEVCP │ │ │ │ │ /usr/share/linuxcnc/aux_gladevcp │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_EXAMPLES │ │ │ │ │ /usr/share/linuxcnc/aux_examples │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1033 / 1279 │ │ │ │ │ │ │ │ │ │ The system directory defined by LINUXCNC_AUX_GLADEVCP (/usr/share/linuxcnc/aux_gladevcp) specifies the location for a GladeVCP-compatible Python file(s) and related subdirectories. The Python file │ │ │ │ │ is imported at GladeVCP startup and made available to subsequent GladeVCP applications including │ │ │ │ │ embedded usage in supporting GUIs. │ │ │ │ │ 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 │ │ │ │ │ @@ -46533,15 +46533,15 @@ │ │ │ │ │ MACRO_PATH_LIST = [] │ │ │ │ │ INI_MACROS = self.INI.findall(”DISPLAY”, ”MACRO”) │ │ │ │ │ IMAGE_PATH = IMAGEDIR │ │ │ │ │ LIB_PATH = os.path.join(HOME, ”share”,”qtvcp”) │ │ │ │ │ PROGRAM_FILTERS = None │ │ │ │ │ PARAMETER_FILE = None │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ MACHINE_IS_LATHE = False │ │ │ │ │ MACHINE_IS_METRIC = False │ │ │ │ │ MACHINE_UNIT_CONVERSION = 1 │ │ │ │ │ MACHINE_UNIT_CONVERSION_9 = [1]*9 │ │ │ │ │ TRAJ_COORDINATES = │ │ │ │ │ JOINT_COUNT = int(self.INI.find(”KINS”,”JOINTS”)or 0) │ │ │ │ │ @@ -46594,15 +46594,15 @@ │ │ │ │ │ (heading: [EMCIO], title:TOOL_TABLE) │ │ │ │ │ (heading: [HAL], title: POSTGUI_HALFILE) │ │ │ │ │ │ │ │ │ │ There are some helper functions - mostly used for widget support │ │ │ │ │ │ │ │ │ │ 1034 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1035 / 1279 │ │ │ │ │ │ │ │ │ │ get_error_safe_setting(self, heading, detail, default=None) │ │ │ │ │ convert_metric_to_machine(data) │ │ │ │ │ convert_imperial_to_machine(data) │ │ │ │ │ convert_9_metric_to_machine(data) │ │ │ │ │ @@ -46645,15 +46645,15 @@ │ │ │ │ │ ACTION = Action() │ │ │ │ │ │ │ │ │ │ To access Action commands use general syntax such as these: │ │ │ │ │ ACTION.SET_ESTOP_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_HOMING(joint) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SET_MACHINE_UNHOMED(joint) │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.SET_MDI_MODE() │ │ │ │ │ ACTION.SET_MANUAL_MODE() │ │ │ │ │ ACTION.SET_AUTO_MODE() │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ @@ -46694,15 +46694,15 @@ │ │ │ │ │ ACTION.SET_FLOOD_OFF() │ │ │ │ │ ACTION.TOGGLE_MIST() │ │ │ │ │ ACTION.SET_MIST_ON() │ │ │ │ │ ACTION.SET_MIST_OFF() │ │ │ │ │ │ │ │ │ │ 1036 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1037 / 1279 │ │ │ │ │ │ │ │ │ │ ACTION.RELOAD_TOOLTABLE() │ │ │ │ │ ACTION.UPDATE_VAR_FILE() │ │ │ │ │ ACTION.TOGGLE_OPTIONAL_STOP() │ │ │ │ │ ACTION.SET_OPTIONAL_STOP_ON() │ │ │ │ │ @@ -46728,60 +46728,60 @@ │ │ │ │ │ to create a GUI screen for running a CNC machine. │ │ │ │ │ QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python │ │ │ │ │ code for even finer grain customization. │ │ │ │ │ │ │ │ │ │ 12.5.1 Showcase │ │ │ │ │ Few examples of QtVCP built screens and virtual control panels: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.55: QtDragon - 3/4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1038 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.56: QtDefault - 3-Axis Sample │ │ │ │ │ │ │ │ │ │ 1039 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.57: QtAxis - Self Adjusting Axis Sample │ │ │ │ │ │ │ │ │ │ 1040 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.58: Blender - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1041 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.59: X1mill - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1042 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.60: cam_align - Camera Alignment VCP │ │ │ │ │ │ │ │ │ │ 1043 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.61: test_panel - Test Panel VCP │ │ │ │ │ │ │ │ │ │ 12.5.2 Overview │ │ │ │ │ Two files are used, individually or in combination, to add customizations: │ │ │ │ │ │ │ │ │ │ 1044 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1045 / 1279 │ │ │ │ │ │ │ │ │ │ • A UI file that is a XML file made with Qt Designer graphical editor. │ │ │ │ │ • A handler file which is a Python code text file. │ │ │ │ │ Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and │ │ │ │ │ handler files. │ │ │ │ │ @@ -46814,15 +46814,15 @@ │ │ │ │ │ │ │ │ │ │ Options │ │ │ │ │ • -d Debugging on. │ │ │ │ │ • -i Enable info output. │ │ │ │ │ • -v Enable verbose debug output. │ │ │ │ │ • -q Enable only error debug output. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1046 / 1279 │ │ │ │ │ │ │ │ │ │ • -a Set window always on top. │ │ │ │ │ • -c NAME HAL component name. Default is to use the UI file name. │ │ │ │ │ • -g GEOMETRY Set geometry WIDTHxHEIGHT+XOFFSET+YOFFSET. Values are in pixel units, XOFFSET/YOFFSET is referenced from top left of screen. Use -g WIDTHxHEIGHT for just setting size or │ │ │ │ │ -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100 │ │ │ │ │ @@ -46858,15 +46858,15 @@ │ │ │ │ │ 12.5.2.4 Handler Files │ │ │ │ │ A handler file is a file containing Python code, which adds to QtVCP default routines. │ │ │ │ │ A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify │ │ │ │ │ QtVCP’s core code. In this way you can have custom behaviors. │ │ │ │ │ If present a handler file will be loaded. │ │ │ │ │ Only one file is allowed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1047 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.2.5 Libraries Modules │ │ │ │ │ QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt │ │ │ │ │ behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install). │ │ │ │ │ Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what │ │ │ │ │ @@ -46896,15 +46896,15 @@ │ │ │ │ │ QtVCP will look for a folder named (in the launched configuration folder that holds │ │ │ │ │ the INI file). │ │ │ │ │ In that folder, QtVCP will load any of the available following files: │ │ │ │ │ • .ui, │ │ │ │ │ • _handler.py, and │ │ │ │ │ • .qss. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1048 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.2.8 Modifying Stock Screens │ │ │ │ │ There are three ways to customize a screen/panel. │ │ │ │ │ Minor StyleSheet Changes Stylesheets can be used to set Qt properties. │ │ │ │ │ If a widget uses properties they usually can be modified by stylesheets. │ │ │ │ │ @@ -46944,46 +46944,46 @@ │ │ │ │ │ basename in the edit box. │ │ │ │ │ • Validate to copy all the files │ │ │ │ │ • Delete the files you don’t wish to modifyso that the original files will be used. │ │ │ │ │ │ │ │ │ │ 12.5.3 VCP Panels │ │ │ │ │ QtVCP can be used to create control panels that interface with HAL. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1049 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.3.1 Builtin Panels │ │ │ │ │ There are several builtin HAL panels available. │ │ │ │ │ In a terminal type qtvcp to see a list: │ │ │ │ │ test_panel │ │ │ │ │ Collection of useful widgets for testing HAL components, including speech of LED state. │ │ │ │ │ │ │ │ │ │ Figure 12.62: QtVCP HAL Test Builtin Panel │ │ │ │ │ cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.63: cam_align - Camera Alignment VCP │ │ │ │ │ sim_panel │ │ │ │ │ A small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations. │ │ │ │ │ │ │ │ │ │ 1050 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.64: QtVCP Sim Builtin Panel │ │ │ │ │ vismach_mill_xyz │ │ │ │ │ 3D openGL view of a 3-Axis milling machine. │ │ │ │ │ │ │ │ │ │ 1051 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1052 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.65: QtVismach - 3-Axis Mill Builtin Panel │ │ │ │ │ You can load these from the terminal or from a HAL file with this basic command: │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ @@ -46992,15 +46992,15 @@ │ │ │ │ │ │ │ │ │ │ In this way HAL will wait till the HAL pins are made before continuing on. │ │ │ │ │ 12.5.3.2 Custom Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load │ │ │ │ │ this from a terminal with: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1053 / 1279 │ │ │ │ │ │ │ │ │ │ halrun -I -f my_panel.hal │ │ │ │ │ │ │ │ │ │ Example HAL file loading a QtVCP panel │ │ │ │ │ # load realtime components │ │ │ │ │ @@ -47049,15 +47049,15 @@ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing │ │ │ │ │ to run the next HAL command. │ │ │ │ │ This is to ensure that the panel created HAL pins are actually done in case they are used in the │ │ │ │ │ rest of the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1054 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.4 Build A Simple Clean-sheet Custom Screen │ │ │ │ │ │ │ │ │ │ Figure 12.66: QtVCP Ugly custom screen │ │ │ │ │ 12.5.4.1 Overview │ │ │ │ │ @@ -47073,15 +47073,15 @@ │ │ │ │ │ │ │ │ │ │ Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the │ │ │ │ │ qtvcp_plugin.py in one of the folders that Qt Designer will search into. │ │ │ │ │ In a RIP version of LinuxCNC qtvcp_plugin.py will be: │ │ │ │ │ ’~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ For a Package installed version it should be: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1055 / 1279 │ │ │ │ │ │ │ │ │ │ ’usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py’ or │ │ │ │ │ ’usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ Make a symbolic link to the above file and move it to one of the places Qt Designer searches in. │ │ │ │ │ Qt Designer searches in these two place for links (pick one): │ │ │ │ │ @@ -47117,15 +47117,15 @@ │ │ │ │ │ │ │ │ │ │ We are going to make this window a specific non resizeable size: │ │ │ │ │ Set MainWindow Minimum and Maximum Size │ │ │ │ │ • Grab the corner of the window and resize to an appropriate size, say 1000x600. │ │ │ │ │ • Right click on the window and click set minimum size. │ │ │ │ │ • Do it again and set maximum size. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1056 / 1279 │ │ │ │ │ │ │ │ │ │ Our sample widget will now not be resizable. │ │ │ │ │ Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main │ │ │ │ │ window. │ │ │ │ │ This widget doesn’t add anything visually but sets up some common options. │ │ │ │ │ @@ -47159,28 +47159,28 @@ │ │ │ │ │ • Click the machine_on action checkbox you will see in the list of properties and values. │ │ │ │ │ The button will now control machine on/off. │ │ │ │ │ Do the same for all the other button with the addition of: │ │ │ │ │ • With the Home button we must also change the joint_number property to -1. │ │ │ │ │ This tells the controller to home all the axes rather then a specific axis. │ │ │ │ │ • With the Pause button: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ – Under the Indicated_PushButton heading check the indicator_option. │ │ │ │ │ – Under the QAbstactButton heading check checkable. │ │ │ │ │ │ │ │ │ │ 1057 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.67: Qt Designer: Selecting Pause Button’s Properties │ │ │ │ │ │ │ │ │ │ 1058 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1059 / 1279 │ │ │ │ │ │ │ │ │ │ Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder. │ │ │ │ │ We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler │ │ │ │ │ file to display it. │ │ │ │ │ 12.5.4.4 Handler file │ │ │ │ │ @@ -47213,15 +47213,15 @@ │ │ │ │ │ • after the screen is built, │ │ │ │ │ • after all the POSTGUI_HALFILEs are run. │ │ │ │ │ In our example there are no HAL pins to connect. │ │ │ │ │ │ │ │ │ │ 12.5.5 Handler File In Detail │ │ │ │ │ Handler files are used to create custom controls using Python. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.5.5.1 Overview │ │ │ │ │ Here is a sample handler file. │ │ │ │ │ It’s broken up in sections for ease of discussion. │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ @@ -47268,15 +47268,15 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ pass │ │ │ │ │ def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl): │ │ │ │ │ # when typing in MDI, we don’t want keybinding to call functions │ │ │ │ │ │ │ │ │ │ 1060 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1061 / 1279 │ │ │ │ │ │ │ │ │ │ # so we catch and process the events directly. │ │ │ │ │ # We do want ESC, F1 and F2 to call keybinding functions though │ │ │ │ │ if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2, │ │ │ │ │ QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5): │ │ │ │ │ @@ -47327,15 +47327,15 @@ │ │ │ │ │ ####################### │ │ │ │ │ # CALLBACKS FROM FORM # │ │ │ │ │ ####################### │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ # keyboard jogging from key binding calls │ │ │ │ │ # double the rate if fast is true │ │ │ │ │ def kb_jog(self, state, joint, direction, fast = False, linear = True): │ │ │ │ │ if not STATUS.is_man_mode() or not STATUS.machine_is_on(): │ │ │ │ │ return │ │ │ │ │ if linear: │ │ │ │ │ @@ -47384,15 +47384,15 @@ │ │ │ │ │ def on_keycall_ZPOS(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, 1, shift) │ │ │ │ │ def on_keycall_ZNEG(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, -1, shift) │ │ │ │ │ │ │ │ │ │ 1062 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1063 / 1279 │ │ │ │ │ │ │ │ │ │ def on_keycall_APOS(self,event,state,shift,cntrl): │ │ │ │ │ pass │ │ │ │ │ #self.kb_jog(state, 3, 1, shift, False) │ │ │ │ │ def on_keycall_ANEG(self,event,state,shift,cntrl): │ │ │ │ │ @@ -47427,15 +47427,15 @@ │ │ │ │ │ 12.5.5.5 INITIALIZE Section │ │ │ │ │ Like all Python libraries the +__init__+ function is called when the library is first instantiated. │ │ │ │ │ This is where you would set up defaults, as well as reference variables and global variables. │ │ │ │ │ The widget references are not available at this point. │ │ │ │ │ The variables halcomp, widgets and paths give access to QtVCP’s HAL component, widgets, and path │ │ │ │ │ info respectively. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1064 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.5.6 SPECIAL FUNCTIONS Section │ │ │ │ │ There are several special functions that QtVCP looks for in the handler file. │ │ │ │ │ If QtVCP finds these it will call them, if not it will silently ignore them. │ │ │ │ │ initialized__(self): │ │ │ │ │ @@ -47469,15 +47469,15 @@ │ │ │ │ │ The Linux system will not shutdown if using this function, you will have to do that yourself. │ │ │ │ │ QtVCP/LinuxCNC will terminate without a prompt once this function returns. │ │ │ │ │ closing_cleanup__(self): │ │ │ │ │ This function is called just before the screen closes. It can be used to do cleanup before closing. │ │ │ │ │ 12.5.5.7 STATUS CALLBACKS Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from STATUS definitions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1065 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.5.8 CALLBACKS FROM FORM Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from the widgets connected │ │ │ │ │ to the MainWindow in the Qt Designer editor. │ │ │ │ │ 12.5.5.9 GENERAL FUNCTIONS Section │ │ │ │ │ @@ -47508,15 +47508,15 @@ │ │ │ │ │ 12.5.6.1 Overview │ │ │ │ │ In the Qt Designer editor: │ │ │ │ │ • You create user function slots │ │ │ │ │ • You connect the slots to widgets using signals. │ │ │ │ │ In the handler file: │ │ │ │ │ • You create the slot’s functions defined in Qt Designer. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1066 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.6.2 Using Qt Designer to add Slots │ │ │ │ │ When you have loaded your screen into Qt Designer, add a plain PushButton to the screen. │ │ │ │ │ You could change the name of the button to something interesting like test_button. │ │ │ │ │ There are two ways to edit connections - This is the graphical way. │ │ │ │ │ @@ -47532,15 +47532,15 @@ │ │ │ │ │ • You can now edit a new slot name. │ │ │ │ │ • Erase the default name slot() and change it to test_button() │ │ │ │ │ • Press the OK button. │ │ │ │ │ • You’ll be back to the Configure Connections dialog. │ │ │ │ │ • Now you can select your new slot in the slot list. │ │ │ │ │ • Then press OK and save the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1067 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.68: Qt Designer Signal/Slot Selection │ │ │ │ │ │ │ │ │ │ 12.5.6.3 Python Handler Changes │ │ │ │ │ Now you must add the function to the handler file. │ │ │ │ │ @@ -47557,15 +47557,15 @@ │ │ │ │ │ │ │ │ │ │ In fact it doesn’t matter where in the handler class you put the commands but by convention this is │ │ │ │ │ where to put it. │ │ │ │ │ Save the handler file. │ │ │ │ │ Now when you load your screen and press the button it should print the name of the button in the │ │ │ │ │ terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1068 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.7 More Information │ │ │ │ │ QtVCP Builtin Virtual Control Panels │ │ │ │ │ QtVCP Widgets │ │ │ │ │ QtVCP Libraries │ │ │ │ │ @@ -47582,28 +47582,28 @@ │ │ │ │ │ In a terminal type qtvcp list to see a list. │ │ │ │ │ 12.6.1.1 copy │ │ │ │ │ Used for copying QtVCP’s builtin Screens/VCP Panels/QtVismach code to a folder so one can │ │ │ │ │ customize it. │ │ │ │ │ In a terminal run: │ │ │ │ │ qtvcp copy │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1069 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.2 test_dial │ │ │ │ │ • This panel has a dial that adjusts S32 and Float HAL output pins. │ │ │ │ │ • The dial’s range can be adjusted from a drop down menu. │ │ │ │ │ • The output can be scaled with the spinbox. │ │ │ │ │ • A combobox can be used to automatically select and connect to a signal. │ │ │ │ │ loadusr qtvcp test_dial │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.70: QtVCP test_dial Panel - Test Dial VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.3 test_button │ │ │ │ │ • This panel has a button that will set a HAL pin. │ │ │ │ │ • The button can be selected as a momentary or a toggle button. │ │ │ │ │ • The button’s indicator color can be adjusted from a drop down menu. │ │ │ │ │ @@ -47618,15 +47618,15 @@ │ │ │ │ │ The -o switch sets how many buttons the panel starts with. │ │ │ │ │ If loading directly from a terminal omit the loadusr. │ │ │ │ │ │ │ │ │ │ Figure 12.71: QtVCP test_button - Test Button VCP │ │ │ │ │ │ │ │ │ │ 1070 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1071 / 1279 │ │ │ │ │ │ │ │ │ │ 12.6.1.4 test_led │ │ │ │ │ • This panel has an LED that can selected to watch HAL bit pins/signals. │ │ │ │ │ • The LED’s color can be adjusted from a drop down menu. │ │ │ │ │ • The text box and state can be output as speech if sound is selected. │ │ │ │ │ @@ -47642,24 +47642,24 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.72: QtVCP test_dial Panel - Test LED VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.5 test_panel │ │ │ │ │ Collection of useful widgets for testing HAL component, including speech of LED state. │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.73: QtVCP test_panel - HAL Component Testing Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.6 cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ 1072 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1073 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel │ │ │ │ │ Usage Add these lines to the INI file: │ │ │ │ │ [DISPLAY] │ │ │ │ │ EMBED_TAB_NAME = cam_align │ │ │ │ │ @@ -47673,15 +47673,15 @@ │ │ │ │ │ You can add window width and height size, rotation increment, and camera number from the INI with │ │ │ │ │ -o options. │ │ │ │ │ EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size ←=400,400 -o rotincr=.2 -o camnumber=0 cam_align │ │ │ │ │ │ │ │ │ │ Mouse controls: │ │ │ │ │ • left mouse single click - increase cross hair rotation one increment │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1074 / 1279 │ │ │ │ │ │ │ │ │ │ • right mouse single click - decrease cross hair rotation one increment │ │ │ │ │ • middle mouse single click - cycle through rotation increments │ │ │ │ │ • left mouse hold and scroll - scroll camera zoom │ │ │ │ │ • right mouse hold and scroll - scroll cross hair rotation angle │ │ │ │ │ @@ -47699,83 +47699,83 @@ │ │ │ │ │ Note the comma and text after is optional - it will override the default button text. │ │ │ │ │ These buttons are QtVCP action buttons and follow those rules. │ │ │ │ │ 12.6.1.7 sim_panel │ │ │ │ │ Small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations │ │ │ │ │ loadusr qtvcp sim_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1075 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing. │ │ │ │ │ │ │ │ │ │ 12.6.1.8 tool_dialog │ │ │ │ │ Manual tool change dialog that gives tool description. │ │ │ │ │ loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ • -o notify_on - use desktop notify dialogs instead of QtVCP native ones. │ │ │ │ │ • -o audio_on - play sound on tool change │ │ │ │ │ • -o speak_on - speak announcement of tool change │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.76: QtVCP tool_dialog - Manual Tool Change Dialog │ │ │ │ │ │ │ │ │ │ 12.6.2 vismach 3D Simulation Panels │ │ │ │ │ These panels are prebuilt simulation of common machine types. │ │ │ │ │ These are also embed-able in other screens such as AXIS or GMOCCAPY. │ │ │ │ │ 12.6.2.1 QtVCP vismach_mill_xyz │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_xyz │ │ │ │ │ │ │ │ │ │ 1076 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.2 QtVCP vismach_scara │ │ │ │ │ 3D OpenGL view of a SCARA based milling machine. │ │ │ │ │ loadusr qtvcp vismach_scara │ │ │ │ │ │ │ │ │ │ 1077 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.3 QtVCP vismach_millturn │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle. │ │ │ │ │ loadusr qtvcp vismach_millturn │ │ │ │ │ │ │ │ │ │ 1078 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.4 QtVCP vismach_mill_5axis_gantry │ │ │ │ │ 3D OpenGL view of a 5-Axis gantry type milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_5axis_gantry │ │ │ │ │ │ │ │ │ │ 1079 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1080 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.5 QtVCP vismach_fanuc_200f │ │ │ │ │ 3D openGL view of a 6 joint robotic arm. │ │ │ │ │ loadusr qtvcp vismach_fanuc_200f │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1081 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm │ │ │ │ │ │ │ │ │ │ 12.6.3 Custom Virtual Control Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ @@ -47803,15 +47803,15 @@ │ │ │ │ │ # connect pins │ │ │ │ │ net bit-input1 │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_1 │ │ │ │ │ │ │ │ │ │ classicladder.0.in-00 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ net bit-hide │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_4 │ │ │ │ │ │ │ │ │ │ classicladder.0.hide_gui │ │ │ │ │ │ │ │ │ │ @@ -47861,15 +47861,15 @@ │ │ │ │ │ Allows one to embed a program into the widget. │ │ │ │ │ Only programs that utilize the xembed protocol will work such as: │ │ │ │ │ • GladeVCP virtual control panels │ │ │ │ │ • Onboard virtual keyboard │ │ │ │ │ • QtVCP virtual control panels │ │ │ │ │ • mplayer video player │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1083 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.1.2 Slider - HAL Pin Value Adjusting Widget │ │ │ │ │ Allows one to adjust a HAL pin value using a sliding pointer. │ │ │ │ │ 12.7.1.3 LED - Indicator Widget │ │ │ │ │ │ │ │ │ │ @@ -47899,15 +47899,15 @@ │ │ │ │ │ qproperty-flashRate: 150; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ 12.7.1.4 CheckBox Widget │ │ │ │ │ This widget allows the user to check a box to set a HAL pin true or false. │ │ │ │ │ It is based on PyQt’s QCheckButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1084 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.1.5 RadioButton Widget │ │ │ │ │ This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group │ │ │ │ │ can be true at a time. │ │ │ │ │ It is based on PyQt’s QRadioButton. │ │ │ │ │ @@ -47928,15 +47928,15 @@ │ │ │ │ │ In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings │ │ │ │ │ on the gauge face. │ │ │ │ │ It should be set to a number that ensures the text readings around the gauge face are readable. │ │ │ │ │ The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to │ │ │ │ │ the threshold point. │ │ │ │ │ It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1085 / 1279 │ │ │ │ │ │ │ │ │ │ minimum reading, which is 0. │ │ │ │ │ It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge. │ │ │ │ │ threshold:: The threshold is the transition point between the zones. │ │ │ │ │ It should be set to a value between 0 and the maximum value. │ │ │ │ │ @@ -47954,15 +47954,15 @@ │ │ │ │ │ to a value between 0 and the maximum value. │ │ │ │ │ 12.7.1.7 HALPad - HAL Buttons Joypad │ │ │ │ │ │ │ │ │ │ Figure 12.84: QtVCP HALPad: HAL Buttons Joypad │ │ │ │ │ This widget looks and acts like a 5 buttons D-pad, with an LED ring. │ │ │ │ │ Each button has an selectable type (Bit, S32 or Float) output HAL pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1086 / 1279 │ │ │ │ │ │ │ │ │ │ The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin. │ │ │ │ │ HALPad ENUMS There are enumerated constants used: │ │ │ │ │ • To reference indicator positions: │ │ │ │ │ – NONE │ │ │ │ │ @@ -48000,15 +48000,15 @@ │ │ │ │ │ left_text , right_text , center_text , top_text , bottom_text │ │ │ │ │ A text string to be displayed in the described button location. │ │ │ │ │ If left blank an image can be designated to be displayed. │ │ │ │ │ true_color , false_color │ │ │ │ │ Color selection for the center LED ring to be displayed when the .light.center HAL │ │ │ │ │ pin is True or False. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1087 / 1279 │ │ │ │ │ │ │ │ │ │ text_color │ │ │ │ │ Color selection for the button text. │ │ │ │ │ text_font │ │ │ │ │ Font selection for the button text. │ │ │ │ │ @@ -48023,15 +48023,15 @@ │ │ │ │ │ As an option it can be a toggle button. │ │ │ │ │ For a LED Indicator Option, see Section 12.7.5.1[IndicatedPushButton] below for more info. │ │ │ │ │ It also has other options. │ │ │ │ │ It is based on PyQt’s QPushButton. │ │ │ │ │ 12.7.1.9 focusOverlay - Focus Overlay Widget │ │ │ │ │ This widget places a colored overlay over the screen, usually while a dialog is showing. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.85: Focus overlay example for confirm close prompt │ │ │ │ │ Used to create a focused feel and to draw attention to critical information. │ │ │ │ │ It can also show a translucent image. │ │ │ │ │ It can also display message text and buttons. │ │ │ │ │ This widget can be controlled with STATUS messages. │ │ │ │ │ 12.7.1.10 gridLayout - Grid Layout Widget │ │ │ │ │ @@ -48039,15 +48039,15 @@ │ │ │ │ │ Disabled widgets typically have a different color and do not respond to actions. │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ 12.7.1.11 hal_label - HAL Label Widget │ │ │ │ │ This widget displays values sent to it. │ │ │ │ │ │ │ │ │ │ 1088 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1089 / 1279 │ │ │ │ │ │ │ │ │ │ Values can be sent from: │ │ │ │ │ • HAL pins │ │ │ │ │ The input pin can be selected as Bit, S32, Float or no pin selected │ │ │ │ │ • Programmatically │ │ │ │ │ @@ -48082,15 +48082,15 @@ │ │ │ │ │ When using floats you can set a formatting string. │ │ │ │ │ You must set the digitCount property to an appropriate setting to display the largest number. │ │ │ │ │ Properties │ │ │ │ │ pin_name │ │ │ │ │ Option string to be used as the HAL pin name. │ │ │ │ │ If set to an empty string the widget name will be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1090 / 1279 │ │ │ │ │ │ │ │ │ │ bit_pin_type │ │ │ │ │ Selects the input pin as type BIT. │ │ │ │ │ s32_pin_type │ │ │ │ │ Selects the input pin as type S32. │ │ │ │ │ @@ -48121,15 +48121,15 @@ │ │ │ │ │ a large view of a widget and a smaller multi widget view. │ │ │ │ │ It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it │ │ │ │ │ in its page with a different layout than it originally had. │ │ │ │ │ The original widget must be in a layout for switcher to put it back. │ │ │ │ │ In Qt Designer you will: │ │ │ │ │ • Add the WidgetSwitcher widget on screen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1091 / 1279 │ │ │ │ │ │ │ │ │ │ • Right click the WidgetSwitcher and add a page. │ │ │ │ │ • Populate it with the widgets/layouts you wish to see in a default form. │ │ │ │ │ • Add as many pages as there are views to switch to. │ │ │ │ │ • On each page, add a layout widget. │ │ │ │ │ @@ -48162,15 +48162,15 @@ │ │ │ │ │ Estop , Machine On , Auto , mdi , manual , run , run_from_line status │ │ │ │ │ Gets line number from STATUS message gcode-line-selected. │ │ │ │ │ run_from_line slot │ │ │ │ │ Gets line number from Qt Designer int/str slot setRunFromLine. │ │ │ │ │ abort , pause , load dialog │ │ │ │ │ Requires a dialog widget present. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1092 / 1279 │ │ │ │ │ │ │ │ │ │ Camview dialog │ │ │ │ │ Requires camview dialog widget present. │ │ │ │ │ origin offset dialog │ │ │ │ │ Requires origin offset dialog widget present. │ │ │ │ │ @@ -48211,15 +48211,15 @@ │ │ │ │ │ spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change │ │ │ │ │ Set view_type_string. │ │ │ │ │ limits override , flood , mist , block delete , optional stop , mdi command │ │ │ │ │ Set command_string, i.e.,calls a hard coded MDI command │ │ │ │ │ INI mdi number │ │ │ │ │ Set ini_mdi_number, i.e., calls an INI based MDI command │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1093 / 1279 │ │ │ │ │ │ │ │ │ │ dro absolute , dro relative , dro dtg , exit screen │ │ │ │ │ Closes down LinuxCNC │ │ │ │ │ Override limits │ │ │ │ │ Temporarily override hard limits │ │ │ │ │ @@ -48258,15 +48258,15 @@ │ │ │ │ │ Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines. │ │ │ │ │ The commands are separated by the ;. │ │ │ │ │ The label is set after the comma, and \n symbol adds a line break. │ │ │ │ │ [MDI_COMMAND_LIST] │ │ │ │ │ MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero │ │ │ │ │ MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\nMachn\nZero │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1094 / 1279 │ │ │ │ │ │ │ │ │ │ Action buttons are subclassed from Section 12.7.5.1[IndicatedPushButton]. See the following sections for more information about: │ │ │ │ │ • LED Indicator option │ │ │ │ │ • Enabled on State │ │ │ │ │ • Text Changes On State │ │ │ │ │ @@ -48299,15 +48299,15 @@ │ │ │ │ │ • Divide the axis by 2 │ │ │ │ │ • Set the axis arbitrarily │ │ │ │ │ • Reset the axis to the last number recorded │ │ │ │ │ You select the axis by setting the joint number. │ │ │ │ │ You can select a halpin option that is set true when the axis is selected. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1095 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.5 CamView - Workpiece Alignment and Origin Setting Widget │ │ │ │ │ This widget displays a image from a web camera. │ │ │ │ │ It overlays an adjustable circular and cross hair target over the image. │ │ │ │ │ CamView was built with precise visual positioning in mind. │ │ │ │ │ @@ -48347,15 +48347,15 @@ │ │ │ │ │ Here is how you specify a particular widget by its objectName in Qt Designer: │ │ │ │ │ DROLabel #dr0_x_axis [isHomed=false] { │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1096 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.7 GcodeDisplay - G-code Text Display Widget │ │ │ │ │ This displays G-code in text form, highlighting the currently running line. │ │ │ │ │ This can also display: │ │ │ │ │ • MDI history when LinuxCNC is in MDI mode. │ │ │ │ │ @@ -48397,15 +48397,15 @@ │ │ │ │ │ • styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including │ │ │ │ │ () or anything after ; (when used outside of parenthesis) with the exception of the note below) │ │ │ │ │ • styleColor2 = G-code: G and the digits after │ │ │ │ │ • styleColor3 = M-code: M and the digits after │ │ │ │ │ • styleColor4 = Axis: XYZABCUVW │ │ │ │ │ • styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1097 / 1279 │ │ │ │ │ │ │ │ │ │ • styleColor6 = AxisValue: Values following XYZABCUVW │ │ │ │ │ • styleColor7 = OtherValue: Values following EFHIJKDQLRPST$ │ │ │ │ │ Note │ │ │ │ │ For comments, the ”OtherValue” color (Color 5) can be used to highlight ”print,” ”debug,” ”msg,” │ │ │ │ │ @@ -48418,15 +48418,15 @@ │ │ │ │ │ ”style name, size, -1, 0, bold setting (0-99), italics (0-1), │ │ │ │ │ underline (0-1),0,0,0” │ │ │ │ │ It is based on PyQt’s QsciScintilla. │ │ │ │ │ 12.7.2.8 GcodeEditor - G-code Program Editor Widget │ │ │ │ │ This is an extension of the GcodeDisplay widget that adds editing convenience. │ │ │ │ │ It is based on PyQt’s QWidget which incorporates GcodeDisplay widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1098 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget │ │ │ │ │ │ │ │ │ │ Figure 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget │ │ │ │ │ This displays the current G-code in a graphical form. │ │ │ │ │ @@ -48442,15 +48442,15 @@ │ │ │ │ │ +_dro+ (bool) │ │ │ │ │ Determines whether or not to show the DRO. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dro: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ +_dtg+ (bool) │ │ │ │ │ Determine whether or not to show the Distance To Go. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dtg: False; │ │ │ │ │ } │ │ │ │ │ @@ -48499,15 +48499,15 @@ │ │ │ │ │ │ │ │ │ │ +_use_gradient_background+ (bool) │ │ │ │ │ Determines whether or not use a gradient background by default. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ │ │ │ │ │ 1099 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1100 / 1279 │ │ │ │ │ │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_use_gradient_background: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ @@ -48578,15 +48578,15 @@ │ │ │ │ │ Middle │ │ │ │ │ Middle │ │ │ │ │ Left │ │ │ │ │ │ │ │ │ │ Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some │ │ │ │ │ lathes and have no rotate button assigned. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Mode │ │ │ │ │ 6 │ │ │ │ │ 7 │ │ │ │ │ 8 │ │ │ │ │ 9 │ │ │ │ │ 10 │ │ │ │ │ @@ -48643,15 +48643,15 @@ │ │ │ │ │ • inhibit-selection-off │ │ │ │ │ • dimensions-on │ │ │ │ │ • dimensions-off │ │ │ │ │ • grid-size │ │ │ │ │ • record-view │ │ │ │ │ • set-recorded-view │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ • P │ │ │ │ │ • X │ │ │ │ │ • Y │ │ │ │ │ • Y2 │ │ │ │ │ • Z │ │ │ │ │ • Z2 │ │ │ │ │ @@ -48681,15 +48681,15 @@ │ │ │ │ │ This will be the text set when the option is False. │ │ │ │ │ You can use Qt rich text code for different fonts/colors etc. │ │ │ │ │ Typical template for metric mode in false state, might be: Imperial Mode. │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ 1102 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1103 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.11 StatusLabel - Controller Variables State Label Display Widget │ │ │ │ │ This will display a label based on selectable status of the machine controller. │ │ │ │ │ You can change how the status will be displayed by substituting python formatting code in the text │ │ │ │ │ template. You can also use rich text for different fonts/colors etc. │ │ │ │ │ @@ -48728,15 +48728,15 @@ │ │ │ │ │ jograte_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog Rate. │ │ │ │ │ jogincr_status │ │ │ │ │ Shows the current QtVCP based Jog increment. │ │ │ │ │ jogincr_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1104 / 1279 │ │ │ │ │ │ │ │ │ │ machine_state_status │ │ │ │ │ Shows the current machine interpreter state using the text described from the machine_state_list. │ │ │ │ │ The interpreter states are: │ │ │ │ │ • Estopped │ │ │ │ │ @@ -48775,15 +48775,15 @@ │ │ │ │ │ tool_number_status │ │ │ │ │ Returns the tool number of the current loaded tool. │ │ │ │ │ tool_offset_status │ │ │ │ │ Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.). │ │ │ │ │ user_system_status │ │ │ │ │ Shows the active user coordinate system (G5x setting). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1105 / 1279 │ │ │ │ │ │ │ │ │ │ Other Properties │ │ │ │ │ index_number │ │ │ │ │ Integer that specifies the tool status index to display. │ │ │ │ │ state_label_list │ │ │ │ │ @@ -48812,15 +48812,15 @@ │ │ │ │ │ Toggles between 2 images: axis not homed, axis homed. │ │ │ │ │ *watch_all_homed │ │ │ │ │ Would toggle between 2 images: not all homed, all homed. │ │ │ │ │ *watch_hard_limits │ │ │ │ │ Would toggle between 2 images or one per joint. │ │ │ │ │ Here is an example of using it to display an icon of Z axis homing state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1106 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher │ │ │ │ │ In the properties section notice that: │ │ │ │ │ • watch_axis_homed is checked │ │ │ │ │ • axis_letter is set to Z │ │ │ │ │ @@ -48833,15 +48833,15 @@ │ │ │ │ │ │ │ │ │ │ • Right click the image name and you should see Copy path. │ │ │ │ │ • Click Copy path. │ │ │ │ │ • Now double click the image list property so the dialog shows. │ │ │ │ │ • Click the New button. │ │ │ │ │ • Paste the image path in the entry box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1107 / 1279 │ │ │ │ │ │ │ │ │ │ Do that again for the next image. │ │ │ │ │ Use a clear image to represent a hidden icon. │ │ │ │ │ You can test the images display from the image list by changing the image number. In this case 0 is │ │ │ │ │ unhomed and 1 would be homed. │ │ │ │ │ @@ -48875,15 +48875,15 @@ │ │ │ │ │ notify_option │ │ │ │ │ Hooking into the desktop notification bubbles for error and messages. │ │ │ │ │ notify_max_messages │ │ │ │ │ Number of messages shown on screen at one time. │ │ │ │ │ catch_close_option │ │ │ │ │ Catching the close event to pop up a ’are you sure’ prompt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1108 / 1279 │ │ │ │ │ │ │ │ │ │ close_overlay_color │ │ │ │ │ Color of transparent layer shown when quitting. │ │ │ │ │ catch_error_option │ │ │ │ │ Monitoring of the LinuxCNC error channel. │ │ │ │ │ @@ -48925,15 +48925,15 @@ │ │ │ │ │ tool_overlay_color │ │ │ │ │ Color of transparent layer shown when the tool dialog is shown. │ │ │ │ │ ToolUseDesktopNotify │ │ │ │ │ Option to use desktop notify dialogs for manual tool change dialog. │ │ │ │ │ ToolFrameless │ │ │ │ │ Frameless dialogs can not be easily moved by users. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1109 / 1279 │ │ │ │ │ │ │ │ │ │ fileDialog_option │ │ │ │ │ Sets up the file choosing dialog. │ │ │ │ │ file_overlay_color │ │ │ │ │ Color of transparent layer shown when the file dialog is shown. │ │ │ │ │ @@ -48971,15 +48971,15 @@ │ │ │ │ │ Color of transparent layer shown when the machineLog dialog is shown. │ │ │ │ │ runFromLineDialog_option │ │ │ │ │ Sets up a dialog to display starting options when starting machine execution from a arbitrary │ │ │ │ │ line. │ │ │ │ │ runFromLine_overlay_color │ │ │ │ │ Color of transparent layer shown when the runFromLine dialog is shown. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1110 / 1279 │ │ │ │ │ │ │ │ │ │ Setting Properties Programmatically The screen designer chooses the default settings of the │ │ │ │ │ screenOptions widget. │ │ │ │ │ Once chosen, most won’t ever need to be changed. But if needed, some can be changed in the handler │ │ │ │ │ file or in stylesheets. │ │ │ │ │ @@ -49022,15 +49022,15 @@ │ │ │ │ │ Turns all sounds on or off. │ │ │ │ │ [MCH_MSG_OPTIONS] │ │ │ │ │ mchnMsg_play_sound (bool) │ │ │ │ │ To play alert sound when dialog pops. │ │ │ │ │ mchnMsg_speak_errors (bool) │ │ │ │ │ To use Espeak to speak error messages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1111 / 1279 │ │ │ │ │ │ │ │ │ │ mchnMsg_speak_text (bool) │ │ │ │ │ To use Espeak to speak all other messages. │ │ │ │ │ mchnMsg_sound_type (str) │ │ │ │ │ Sound to play when messages displayed. See notes below. │ │ │ │ │ @@ -49070,15 +49070,15 @@ │ │ │ │ │ – DONE │ │ │ │ │ – ATTENTION │ │ │ │ │ – RING │ │ │ │ │ – LOGIN │ │ │ │ │ – LOGOUT │ │ │ │ │ – BELL │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1112 / 1279 │ │ │ │ │ │ │ │ │ │ These Sound options require python3-gst1.0 installed. │ │ │ │ │ • Audio Files │ │ │ │ │ You can also specify a file path to an arbitrary audio file. │ │ │ │ │ You can use ~ in path to substitute for the user home file path. │ │ │ │ │ @@ -49112,15 +49112,15 @@ │ │ │ │ │ jograte_angular_rate │ │ │ │ │ Selects a angular jograte slider. │ │ │ │ │ max_velocity_rate │ │ │ │ │ Selects a maximum velocity rate slider. │ │ │ │ │ alertState │ │ │ │ │ String to define style change: read-only, under, over and normal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1113 / 1279 │ │ │ │ │ │ │ │ │ │ alertUnder │ │ │ │ │ Sets the float value that signals the stylesheet for under warning. │ │ │ │ │ alertOver │ │ │ │ │ Sets the float value that signals the stylesheet for over warning. │ │ │ │ │ @@ -49156,15 +49156,15 @@ │ │ │ │ │ diameter │ │ │ │ │ Diameter of the LED. │ │ │ │ │ color │ │ │ │ │ Color of the LED when on. │ │ │ │ │ off_color │ │ │ │ │ Color of the LED when off. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1114 / 1279 │ │ │ │ │ │ │ │ │ │ alignment │ │ │ │ │ Qt Alignment hint. │ │ │ │ │ state │ │ │ │ │ Current state of LED (for testing in Qt Designer). │ │ │ │ │ @@ -49201,15 +49201,15 @@ │ │ │ │ │ • Rapid override rate │ │ │ │ │ It is based on PyQt’s QProgressBar. │ │ │ │ │ 12.7.2.19 SystemToolButton - User System Selection Widget │ │ │ │ │ This widget allows you to manually select a G5x user system by pressing and holding. │ │ │ │ │ If you don’t set the button text it will automatically update to the current system. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1115 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.20 MacroTab - Special Macros Widget │ │ │ │ │ │ │ │ │ │ Figure 12.88: QtVCP MacroTab: Special Macros Widget │ │ │ │ │ This widget allows a user to select and adjust special macro programs for doing small jobs. │ │ │ │ │ @@ -49227,15 +49227,15 @@ │ │ │ │ │ ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros │ │ │ │ │ │ │ │ │ │ MACROCOMMAND This is the first line in the O-word file. │ │ │ │ │ It is a comma separated list of text to display above an entry. │ │ │ │ │ There will be one for every variable required in the O-word function. │ │ │ │ │ If the macro does not require variables, leave it empty: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1116 / 1279 │ │ │ │ │ │ │ │ │ │ ; MACROCOMMAND= │ │ │ │ │ │ │ │ │ │ MACRODEFAULTS This must be the second line in the O-word file. │ │ │ │ │ It is a comma separated list of the default values for each variable in the O-word function. │ │ │ │ │ @@ -49272,15 +49272,15 @@ │ │ │ │ │ MACROOPTIONS This optional line must be the fourth line in the O-word file. │ │ │ │ │ It is a comma separated list of keyword and data: │ │ │ │ │ LOAD:yes │ │ │ │ │ Shows a load button. │ │ │ │ │ SAVE:yes │ │ │ │ │ Shows a save button. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1117 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.21 MDILine - MDI Commands Line Entry Widget │ │ │ │ │ One can enter MDI commands here. │ │ │ │ │ A popup keyboard is available. │ │ │ │ │ Embedded Commands There are also embedded commands available from this widget. │ │ │ │ │ @@ -49317,15 +49317,15 @@ │ │ │ │ │ Disconnects a pin from a signal. │ │ │ │ │ An error will result if the pin does not exist. │ │ │ │ │ Running LinuxCNC from terminal may help determine the root cause as error messages from │ │ │ │ │ hal_lib.c will be displayed there. │ │ │ │ │ • Syntax: unlinkp │ │ │ │ │ • Example: unlinkp motion.jog-stop │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1118 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The MDILine function spindle_inhibit can be used by a GUI’s handler file to inhibit M3, M4, and M5 │ │ │ │ │ spindle commands if necessary. │ │ │ │ │ │ │ │ │ │ @@ -49337,15 +49337,15 @@ │ │ │ │ │ default): │ │ │ │ │ MDI_HISTORY_FILE = ’~/.axis_mdi_history’ │ │ │ │ │ │ │ │ │ │ 12.7.2.23 MDITouchy - Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ Figure 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1119 / 1279 │ │ │ │ │ │ │ │ │ │ This widget displays buttons and entry lines to use for entering MDI commands. │ │ │ │ │ Based on LinuxCNC’s Touchy screen’s MDI entry process, its large buttons are most useful for touch │ │ │ │ │ screens. │ │ │ │ │ To use MDITouchy: │ │ │ │ │ @@ -49384,15 +49384,15 @@ │ │ │ │ │ G90 │ │ │ │ │ O endsub │ │ │ │ │ │ │ │ │ │ Notice the name of the sub matches the file name and macro name exactly, including case. │ │ │ │ │ When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc │ │ │ │ │ and yinc in our example). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1120 / 1279 │ │ │ │ │ │ │ │ │ │ These are passed to the macro as positional parameters: #1, #2… #N respectively. │ │ │ │ │ Parameters you leave empty are passed as value 0. │ │ │ │ │ If there are several different macros, press the Macro button repeatedly to cycle through them. │ │ │ │ │ In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0 │ │ │ │ │ @@ -49405,15 +49405,15 @@ │ │ │ │ │ Figure 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget │ │ │ │ │ This widget allows one to visualize and modify User System Origin offsets directly. │ │ │ │ │ It will update LinuxCNC’s Parameter file for changes made or found. │ │ │ │ │ The settings can only be changed in LinuxCNC after homing and when the motion controller is idle. │ │ │ │ │ The display and entry will change between metric and imperial, based on LinuxCNC’s current G20 / │ │ │ │ │ G21 setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1121 / 1279 │ │ │ │ │ │ │ │ │ │ The current in-use user system will be highlighted. │ │ │ │ │ Extra actions can be integrated to manipulate settings. │ │ │ │ │ These actions depend on extra code added either to a combined widget, like originoffsetview dialog, │ │ │ │ │ or the screens handler code. │ │ │ │ │ @@ -49452,15 +49452,15 @@ │ │ │ │ │ It can selectably react to: │ │ │ │ │ • Machine on │ │ │ │ │ • Interpreter idle │ │ │ │ │ • E-stop off │ │ │ │ │ • All-homed │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.26 MachineLog - Machine Events Journal Display Widget │ │ │ │ │ FIXME MachineLog documentation │ │ │ │ │ 12.7.2.27 JointEnableWidget - FIXME │ │ │ │ │ FIXME JointEnableWidget documentation │ │ │ │ │ 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget │ │ │ │ │ This widget will display images based on LinuxCNC status. │ │ │ │ │ @@ -49469,15 +49469,15 @@ │ │ │ │ │ • the state of all homed, │ │ │ │ │ • the state of a certain axis homed, │ │ │ │ │ • the state of hard limits. │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ │ │ │ │ │ 1122 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1123 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.29 FileManager - File Loading Selector Widget │ │ │ │ │ │ │ │ │ │ Figure 12.91: QtVCP FileManager: File Loading Selector Widget │ │ │ │ │ This widget is used to select files to load. │ │ │ │ │ @@ -49490,15 +49490,15 @@ │ │ │ │ │ if temp[1]: │ │ │ │ │ print(’Is a file’) │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ 12.7.2.30 RadioAxisSelector - FIXME │ │ │ │ │ FIXME RadioAxisSelector documentation │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1124 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget │ │ │ │ │ │ │ │ │ │ Figure 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget │ │ │ │ │ This widget displays and allows one to modify tools offsets. │ │ │ │ │ @@ -49522,15 +49522,15 @@ │ │ │ │ │ Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or │ │ │ │ │ (if appropriate) in stylesheets: │ │ │ │ │ dialog_code_string │ │ │ │ │ Sets which dialog will pop up with numerical entry. │ │ │ │ │ test_dialog_code_string │ │ │ │ │ Sets which dialog will pop up with text entry. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1125 / 1279 │ │ │ │ │ │ │ │ │ │ metric_template │ │ │ │ │ Metric numerical data format. │ │ │ │ │ imperial_template │ │ │ │ │ Imperial numerical data format. │ │ │ │ │ @@ -49559,24 +49559,24 @@ │ │ │ │ │ Uncheck all selected tools. │ │ │ │ │ Example for handler file executing aforementioned functions. │ │ │ │ │ self.w.tooloffsetview.add_tool() │ │ │ │ │ self.w.tooloffsetview.delete_tools() │ │ │ │ │ toolList = self.w.tooloffsetview.get_checked_list() │ │ │ │ │ self.w.tooloffsetview.set_all_unchecked() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.32 BasicProbe - Simple Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.93: QtVCP BasicProbe: Simple Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ │ │ │ │ │ 1126 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1127 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.33 VersaProbe - Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.94: QtVCP VersaProbe: Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ @@ -49594,15 +49594,15 @@ │ │ │ │ │ │ │ │ │ │ • Add a function to call a dialog: │ │ │ │ │ This function must build a message dict to send to the dialog. │ │ │ │ │ This message will be passed back in the general message with the addition of the return variable. │ │ │ │ │ It is possible to add extra user information to the message. The dialog will ignore these and pass │ │ │ │ │ them back. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1128 / 1279 │ │ │ │ │ │ │ │ │ │ NAME │ │ │ │ │ Launches code name of dialog to show. │ │ │ │ │ ID │ │ │ │ │ A unique id so we process only a dialog that we requested. │ │ │ │ │ @@ -49643,15 +49643,15 @@ │ │ │ │ │ TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME │ │ │ │ │ Not implemented yet. │ │ │ │ │ FOCUSTEXT (overlay text|None) │ │ │ │ │ Text to display if focus overlay is used. Use None for no text. │ │ │ │ │ FOCUSCOLOR (QColor(_R, G, B, A_)) │ │ │ │ │ Color to use if focus overlay is used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1129 / 1279 │ │ │ │ │ │ │ │ │ │ PLAYALERT │ │ │ │ │ Sound to play if sound is available, i.e., SPEAK . │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is MESSAGE. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ @@ -49661,15 +49661,15 @@ │ │ │ │ │ This is used as a manual tool change prompt. │ │ │ │ │ It has HAL pins to connect to the machine controller. The pins are named the same as the original │ │ │ │ │ AXIS manual tool prompt and works the same. │ │ │ │ │ The tool change dialog can only be launched by HAL pins. │ │ │ │ │ If there is a Focus Overlay widget present, it will signal it to display. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1130 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.96: QtVCP FileDialog: Load and Save File Chooser Widget │ │ │ │ │ This is used to load G-code files. │ │ │ │ │ @@ -49685,15 +49685,15 @@ │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ } │ │ │ │ │ ACTION.CALL_DIALOG(mess) │ │ │ │ │ │ │ │ │ │ And for a save dialog │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1131 / 1279 │ │ │ │ │ │ │ │ │ │ mess = {’NAME’:’SAVE’,’ID’:’_MY_DIALOG_’, │ │ │ │ │ ’TITLE’:’Save Some text File’, │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ @@ -49705,15 +49705,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget │ │ │ │ │ This widget allows one to modify User System origin offsets directly in a dialog form. │ │ │ │ │ If there is an Focus Overlay widget present, it will signal it to display. │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is ORIGINOFFSET. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1132 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget │ │ │ │ │ This widget allows one to modify Tool offsets directly in a dialog form. │ │ │ │ │ @@ -49733,61 +49733,61 @@ │ │ │ │ │ 12.7.3.8 EntryDialog - Edit Line Dialog Widget │ │ │ │ │ This is a dialog to display an edit line for information entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is ENTRY. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1133 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.9 CalculatorDialog - Calculator Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget │ │ │ │ │ This is a dialog to display a calculator for numeric entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is CALCULATOR. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget │ │ │ │ │ Dialog to preset spindle settings before running a program from a specific line. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 1134 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1135 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget │ │ │ │ │ This is a dialog to display a part probing screen based on Verser Probe v2. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1136 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget │ │ │ │ │ This is a dialog to display the machine log and QtVCP’s debugging log. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 12.7.4 Other Widgets │ │ │ │ │ Other available widgets: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1137 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.4.1 NurbsEditor - NURBS Editing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.103: QtVCP NurbsEditor: NURBS Editing Widget │ │ │ │ │ The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert │ │ │ │ │ @@ -49796,15 +49796,15 @@ │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ 12.7.4.2 JoyPad - 5 button D-pad Widget │ │ │ │ │ It is the base class for the HALPad widget. │ │ │ │ │ This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring. │ │ │ │ │ You can put text or icons in each of the button positions. │ │ │ │ │ You can connect to output signals when the buttons are pressed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1138 / 1279 │ │ │ │ │ │ │ │ │ │ There are also input slots to change the color of the indicator(s). │ │ │ │ │ ENUMS There are enumerated constants used to reference indicator positions. │ │ │ │ │ They are used in Qt Designer editor’s property editor or in Python code. │ │ │ │ │ NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A │ │ │ │ │ @@ -49841,15 +49841,15 @@ │ │ │ │ │ The set_highlight() function must be used prior to set the indicator to use. │ │ │ │ │ Signals These signals will be sent when buttons are pressed. │ │ │ │ │ They can be connected to in Qt Designer editor or Python code. │ │ │ │ │ The first two output a string that indicates the button pressed: │ │ │ │ │ │ │ │ │ │ joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1139 / 1279 │ │ │ │ │ │ │ │ │ │ They are based on PyQt’s Signal (QtCore.pyqtSignal()) │ │ │ │ │ Slots Slots can be connected to in Qt Designer editor or Python code: │ │ │ │ │ set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_) │ │ │ │ │ │ │ │ │ │ @@ -49885,15 +49885,15 @@ │ │ │ │ │ self.w.joypadename.setProperty(’true_color’,’green’) │ │ │ │ │ self.w.joypadename.setProperty(’false_color’,’red’) │ │ │ │ │ │ │ │ │ │ 12.7.5 BaseClass/Mixin Widgets │ │ │ │ │ These widgets are used combine different properties and behaviours into other widgets. │ │ │ │ │ You will see them as a collapsible header in the Qt Designer properties column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1140 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.5.1 IndicatedPushButtons │ │ │ │ │ This class modifies QPushButton behaviour. │ │ │ │ │ indicator_option puts a LED on the top of the button. │ │ │ │ │ │ │ │ │ │ @@ -49923,15 +49923,15 @@ │ │ │ │ │ │ │ │ │ │ Options IndicatedPushButton have exclusive options: │ │ │ │ │ indicator_HAL_pin_option │ │ │ │ │ Adds a halpin, named -led that controls the button indicator state. │ │ │ │ │ indicator_status_option │ │ │ │ │ Makes the LED indicate the state of these selectable LinuxCNC status: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1141 / 1279 │ │ │ │ │ │ │ │ │ │ • Is Estopped │ │ │ │ │ • Is On │ │ │ │ │ • All Homed │ │ │ │ │ • Is Joint Homed │ │ │ │ │ @@ -49973,15 +49973,15 @@ │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ Often, having the button disabled and enabled based on the state of LinuxCNC’s motion controller is │ │ │ │ │ necessary. │ │ │ │ │ There are several properties that can be selected to aid with this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1142 / 1279 │ │ │ │ │ │ │ │ │ │ isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen │ │ │ │ │ You can select multiple properties for combined requirements. │ │ │ │ │ Choosing the checked_state_text_option allows a checkable button to change the text based on it’s │ │ │ │ │ checked state. │ │ │ │ │ @@ -50017,15 +50017,15 @@ │ │ │ │ │ │ │ │ │ │ 12.7.6 Import-Only Widgets │ │ │ │ │ These widgets are usually the base class widget for other QtVCP widgets. │ │ │ │ │ They are not available directly from the Qt Designer editor but could be imported and manually │ │ │ │ │ inserted. │ │ │ │ │ They could also be subclassed to make a similar widget with new features. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1143 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.6.1 Auto Height │ │ │ │ │ Widget for measuring two heights with a probe. │ │ │ │ │ For setup. │ │ │ │ │ 12.7.6.2 G-code Utility │ │ │ │ │ @@ -50048,15 +50048,15 @@ │ │ │ │ │ 12.8.1 Status │ │ │ │ │ Status is a library that sends GObject messages based on LinuxCNC’s current state. It is an │ │ │ │ │ extension of GladeVCP’s GStat object. │ │ │ │ │ It also has some functions to report status on such things as internal jog rate. │ │ │ │ │ You connect a function call to the STATUS message you are interested in, and QtVCP will call this │ │ │ │ │ function when the message is sent from STATUS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1144 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.1.1 Usage │ │ │ │ │ • Import Status modules │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -50090,15 +50090,15 @@ │ │ │ │ │ print(’LinuxCNC machine is on’) │ │ │ │ │ def on_state_off(self): │ │ │ │ │ print(’LinuxCNC machine is off’) │ │ │ │ │ │ │ │ │ │ 12.8.2 Info │ │ │ │ │ Info is a library to collect and filter data from the INI file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.2.1 Available data and defaults │ │ │ │ │ LINUXCNC_IS_RUNNING │ │ │ │ │ LINUXCNC_VERSION │ │ │ │ │ INIPATH │ │ │ │ │ INI = linuxcnc.ini(INIPATH) │ │ │ │ │ MDI_HISTORY_PATH = ’~/.axis_mdi_history’ │ │ │ │ │ @@ -50146,15 +50146,15 @@ │ │ │ │ │ MAX_SPINDLE_0_OVERRIDE = 100 │ │ │ │ │ MIN_SPINDLE_0_OVERRIDE = 50 │ │ │ │ │ MAX_FEED_OVERRIDE = 1.5 │ │ │ │ │ MAX_TRAJ_VELOCITY │ │ │ │ │ │ │ │ │ │ 1145 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1146 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.2.2 User message dialog info │ │ │ │ │ USRMESS_BOLDTEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_BOLDTEXT”) │ │ │ │ │ USRMESS_TEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_TEXT”) │ │ │ │ │ USRMESS_TYPE = self.INI.findall(”DISPLAY”, ”MESSAGE_TYPE”) │ │ │ │ │ @@ -50198,15 +50198,15 @@ │ │ │ │ │ INFO = Info() │ │ │ │ │ │ │ │ │ │ • Access INFO data Use this general syntax: │ │ │ │ │ home_state = INFO.NO_HOME_REQUIRED │ │ │ │ │ if INFO.MACHINE_IS_METRIC is True: │ │ │ │ │ print(’Metric based’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1147 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.3 Action │ │ │ │ │ Action library is used to command LinuxCNC’s motion controller. │ │ │ │ │ It tries to hide incidental details and add convenience methods for developers. │ │ │ │ │ 12.8.3.1 Helpers │ │ │ │ │ @@ -50242,15 +50242,15 @@ │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.CALL_MDI(code) │ │ │ │ │ ACTION.CALL_MDI_WAIT(code) │ │ │ │ │ ACTION.CALL_INI_MDI(number) │ │ │ │ │ ACTION.CALL_OWORD() │ │ │ │ │ ACTION.OPEN_PROGRAM(filename) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SAVE_PROGRAM(text_source, fname): │ │ │ │ │ ACTION.SET_AXIS_ORIGIN(axis,value) │ │ │ │ │ ACTION.SET_TOOL_OFFSET(axis,value,fixture = False) │ │ │ │ │ ACTION.RUN() │ │ │ │ │ ACTION.ABORT() │ │ │ │ │ ACTION.PAUSE() │ │ │ │ │ @@ -50291,15 +50291,15 @@ │ │ │ │ │ ACTION.SET_BLOCK_DELETE_OFF() │ │ │ │ │ ACTION.RELOAD_DISPLAY() │ │ │ │ │ ACTION.SET_GRAPHICS_VIEW(view) │ │ │ │ │ ACTION.UPDATE_MACHINE_LOG(text, option=None): │ │ │ │ │ │ │ │ │ │ 1148 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1149 / 1279 │ │ │ │ │ │ │ │ │ │ ACTION.CALL_DIALOG(command): │ │ │ │ │ ACTION.HIDE_POINTER(state): │ │ │ │ │ ACTION.PLAY_SOUND(path): │ │ │ │ │ ACTION.PLAY_ERROR(): │ │ │ │ │ @@ -50334,15 +50334,15 @@ │ │ │ │ │ • [0] will be real tools information │ │ │ │ │ • [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear) │ │ │ │ │ By default, adds a blank tool entry with tool number -99. │ │ │ │ │ You can preload the newtool array with tool information. │ │ │ │ │ DELETE_TOOLS(_toolnumber_) │ │ │ │ │ Delete the numbered tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1150 / 1279 │ │ │ │ │ │ │ │ │ │ SAVE_TOOLFILE(_toolarray_) │ │ │ │ │ This will parse the toolarray and save it to the tool file specified in the INI file as the tool │ │ │ │ │ path. │ │ │ │ │ This tool array must contain all the available tools information. │ │ │ │ │ @@ -50378,15 +50378,15 @@ │ │ │ │ │ PATH.RIPCONFIGDIR │ │ │ │ │ The Run-in-place config folder for QtVCP screens. │ │ │ │ │ PATH.BASEDIR │ │ │ │ │ Base folder for LinuxCNC. │ │ │ │ │ PATH.BASENAME │ │ │ │ │ The Qt Designer files name (no ending). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ PATH.IMAGEDIR │ │ │ │ │ The QtVCP image folder. │ │ │ │ │ PATH.SCREENDIR │ │ │ │ │ The QtVCP builtin Screen folder. │ │ │ │ │ PATH.PANELDIR │ │ │ │ │ The QtVCP builtin VCP folder. │ │ │ │ │ @@ -50419,15 +50419,15 @@ │ │ │ │ │ There are some helper functions available: │ │ │ │ │ file_list = PATH.find_vismach_files() │ │ │ │ │ directory_list = PATH.find_screen_dirs() │ │ │ │ │ directory_list = PATH.find_panel_dirs() │ │ │ │ │ │ │ │ │ │ 1151 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1152 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.5.3 Usage │ │ │ │ │ • Import Path module │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -50459,15 +50459,15 @@ │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ ########################################### │ │ │ │ │ WIDGETS = VCPWindow() │ │ │ │ │ │ │ │ │ │ 12.8.7 Aux_program_loader │ │ │ │ │ Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.7.1 Helpers │ │ │ │ │ │ │ │ │ │ load_halmeter() │ │ │ │ │ Halmeter is used to display one HAL pin data. │ │ │ │ │ Load a halmeter with: │ │ │ │ │ AUX_PRGM.load_halmeter() │ │ │ │ │ @@ -50506,15 +50506,15 @@ │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from qtvcp.lib.aux_program_loader import Aux_program_loader │ │ │ │ │ │ │ │ │ │ 1153 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1154 / 1279 │ │ │ │ │ │ │ │ │ │ • Instantiate Aux_program_loader module │ │ │ │ │ Add this Python code to your instantiate section: │ │ │ │ │ ########################################### │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ @@ -50553,15 +50553,15 @@ │ │ │ │ │ # the widgets are instantiated. │ │ │ │ │ # the HAL pins are built but HAL is not set ready │ │ │ │ │ def initialized__(self): │ │ │ │ │ KEYBIND.add_call(’Key_F10’,’on_keycall_F10’,None) │ │ │ │ │ KEYBIND.add_call(’Key_F11’,’on_keycall_override’,10) │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_override’,20) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1155 / 1279 │ │ │ │ │ │ │ │ │ │ And then we need to add the functions that get called. │ │ │ │ │ In the handler file, under the KEY BINDING CALLS section, add this: │ │ │ │ │ ##################### │ │ │ │ │ # KEY BINDING CALLS # │ │ │ │ │ @@ -50599,15 +50599,15 @@ │ │ │ │ │ • Yes/No message - requiring the user to select yes or no buttons to close the dialog. │ │ │ │ │ Yes/No messages have three HAL pins: │ │ │ │ │ – One to show the dialog, │ │ │ │ │ – One for waiting, and │ │ │ │ │ – one for the answer. │ │ │ │ │ By default it will send STATUS messages for focus_overlay and alert sound. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1156 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.9.2 Examples │ │ │ │ │ Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading: │ │ │ │ │ • Status bar and desktop notify pop up message: │ │ │ │ │ MESSAGE_BOLDTEXT = NONE │ │ │ │ │ @@ -50647,15 +50647,15 @@ │ │ │ │ │ Typically STATUS messages are used to sent notify messages. │ │ │ │ │ │ │ │ │ │ 12.8.10.1 Properties │ │ │ │ │ You can set the: │ │ │ │ │ title │ │ │ │ │ Notification message title text. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1157 / 1279 │ │ │ │ │ │ │ │ │ │ message │ │ │ │ │ Notification message content text. │ │ │ │ │ icon │ │ │ │ │ Notification message icon. │ │ │ │ │ @@ -50688,15 +50688,15 @@ │ │ │ │ │ • READY │ │ │ │ │ • ATTENTION │ │ │ │ │ • RING │ │ │ │ │ • DONE │ │ │ │ │ • LOGIN │ │ │ │ │ • LOGOUT │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1158 / 1279 │ │ │ │ │ │ │ │ │ │ Beeps There are three beeps: │ │ │ │ │ • BEEP_RING │ │ │ │ │ • BEEP_START │ │ │ │ │ • BEEP │ │ │ │ │ @@ -50731,15 +50731,15 @@ │ │ │ │ │ │ │ │ │ │ 12.8.14 Toolbar Actions │ │ │ │ │ This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons. │ │ │ │ │ Toolbuttons, menu and toolbar menus are: │ │ │ │ │ • built in Qt Designer, and │ │ │ │ │ • assigned actions/submenus in the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1159 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.14.1 Actions │ │ │ │ │ │ │ │ │ │ estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop │ │ │ │ │ Toggles dimensions display. │ │ │ │ │ @@ -50779,15 +50779,15 @@ │ │ │ │ │ • Add a custom toolbar function: │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ def my_function(self, widget, state): │ │ │ │ │ print(’My function State = ()’.format(state)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1160 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.15 Qt Vismach Machine Graphics library │ │ │ │ │ Qt_vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach: │ │ │ │ │ • displays the model in a 3D viewport │ │ │ │ │ @@ -50817,15 +50817,15 @@ │ │ │ │ │ to. │ │ │ │ │ Translate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ Scale │ │ │ │ │ This object will perform an OpenGL scale function on a collection object. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1161 / 1279 │ │ │ │ │ │ │ │ │ │ HalTranslate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object, offset by │ │ │ │ │ the HAL pin value. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ @@ -50866,15 +50866,15 @@ │ │ │ │ │ ArcX │ │ │ │ │ Build an arc by specifying │ │ │ │ │ Box │ │ │ │ │ Build a box specified by the 6 vertex coordinates. │ │ │ │ │ BoxCentered │ │ │ │ │ Build a box centered on origin by specifying the width in X and Y, and the height in Z. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1162 / 1279 │ │ │ │ │ │ │ │ │ │ BoxCenteredXY │ │ │ │ │ Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y, │ │ │ │ │ and running up or down to the specified height in Z. │ │ │ │ │ Capture │ │ │ │ │ @@ -50915,30 +50915,30 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ machine = MILL.Window() │ │ │ │ │ self.w.mainLayout.addWidget(machine) │ │ │ │ │ │ │ │ │ │ 12.8.15.4 More Information │ │ │ │ │ More information on how to build a custom machine simulation in the Qt Vismach chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1163 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9 QtVismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ . │ │ │ │ │ │ │ │ │ │ 12.9.1 Introduction │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ Figure 12.105: QtVismach 3D Viewport │ │ │ │ │ The Vismach 3D viewport view can be manipulated as follows: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1164 / 1279 │ │ │ │ │ │ │ │ │ │ • zoom by scroll wheel │ │ │ │ │ • pan by middle button drag │ │ │ │ │ • rotate by right-button drag │ │ │ │ │ • tilt by left button drag │ │ │ │ │ @@ -50999,15 +50999,15 @@ │ │ │ │ │ | │ │ │ │ │ |---zassembly │ │ │ │ │ | │ │ │ │ │ |---zframe │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1165 / 1279 │ │ │ │ │ │ │ │ │ │ | │ │ │ │ │ |---zbody │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ @@ -51050,15 +51050,15 @@ │ │ │ │ │ c.ready() │ │ │ │ │ │ │ │ │ │ 12.9.5 Creating Parts │ │ │ │ │ 12.9.5.1 Import STL or OBJ Files │ │ │ │ │ It is probably easiest to: │ │ │ │ │ • create geometry in a CAD package │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1166 / 1279 │ │ │ │ │ │ │ │ │ │ • import into the model script using the AsciiSTL() or AsciiOBJ() functions. │ │ │ │ │ Both functions can take one of two named arguments, either a filename or data: │ │ │ │ │ part = AsciiSTL(filename=”path/to/file.stl”) │ │ │ │ │ part = AsciiSTL(data=”solid part1 facet normal ...”) │ │ │ │ │ @@ -51093,15 +51093,15 @@ │ │ │ │ │ Creates a box ground on WY plane of width xw / yw and height z. │ │ │ │ │ Composite parts may be created by assembling these primitives either at creation time or subsequently: │ │ │ │ │ part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)]) │ │ │ │ │ part2 = Box(50,40,75,100,75,100) │ │ │ │ │ part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)]) │ │ │ │ │ part4 = Collection([part1, part2]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1167 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.6 Moving Model Parts │ │ │ │ │ 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. They │ │ │ │ │ may also need to be moved to create the animation as the animation rotation axis is created at the │ │ │ │ │ @@ -51135,15 +51135,15 @@ │ │ │ │ │ The HAL component is the next argument. │ │ │ │ │ In QtVCP if you are reading system pins directly then the component argument is set to None. │ │ │ │ │ hal_pin │ │ │ │ │ The name of the HAL pin that will animate the motion. │ │ │ │ │ This needs to match an existing HAL pin that describes the joint position such as: │ │ │ │ │ ”joint.2.pos-fb” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1168 / 1279 │ │ │ │ │ │ │ │ │ │ Otherwise the component instance would be specified and the pin name of that component │ │ │ │ │ would be specified. xs, ys, zs;; The X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in │ │ │ │ │ the positive X direction. │ │ │ │ │ @@ -51178,15 +51178,15 @@ │ │ │ │ │ Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded │ │ │ │ │ tool. │ │ │ │ │ tool = HalToolTriangle() │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[tool]) │ │ │ │ │ # or more compact: │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[HalToolTriangle()]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1169 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.8 Assembling the model │ │ │ │ │ In order for parts to move together they need to be assembled with the Collection() command. │ │ │ │ │ It is important to assemble the parts and define their motions in the correct sequence. │ │ │ │ │ For example to create a moving head milling machine with a rotating spindle and an animated draw │ │ │ │ │ @@ -51228,15 +51228,15 @@ │ │ │ │ │ Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final │ │ │ │ │ model is created by: │ │ │ │ │ model = Collection([link0, floor, table]) │ │ │ │ │ │ │ │ │ │ Whereas a VMC model with separate parts moving on the base might have │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1170 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.9 Other functions │ │ │ │ │ part = Color([_colorspec_], [_part_]) │ │ │ │ │ Sets the display color of the part. │ │ │ │ │ Note that unlike the other functions, the part definition comes second in this case. │ │ │ │ │ @@ -51278,15 +51278,15 @@ │ │ │ │ │ │ │ │ │ │ Add it to the Window class Collection so it is never moved from the origin. │ │ │ │ │ v.model = Collection([origin, model, world]) │ │ │ │ │ │ │ │ │ │ Start from the cutting tip and work your way back. Add each collection to the model at the origin and │ │ │ │ │ run the script to confirm the location, then rotate/translate and run the script to confirm again. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.9.11 Basic structure of a QtVismach script │ │ │ │ │ # imports │ │ │ │ │ import hal │ │ │ │ │ from qtvcp.lib.qt_vismach.qt_vismach import * │ │ │ │ │ # create HAL pins here if needed │ │ │ │ │ #c = hal.component(”samplegui”) │ │ │ │ │ @@ -51329,15 +51329,15 @@ │ │ │ │ │ # if you call this file directly from python3, it will display a PyQt5 window │ │ │ │ │ # good for confirming the parts of the assembly. │ │ │ │ │ if __name__ == ’__main__’: │ │ │ │ │ main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1171 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1172 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.12 Builtin Vismach Sample Panels │ │ │ │ │ QtVCP builtin Vismach Panels │ │ │ │ │ │ │ │ │ │ 12.10 QtVCP: Building Custom Widgets │ │ │ │ │ @@ -51365,15 +51365,15 @@ │ │ │ │ │ • Injecting important variables, │ │ │ │ │ • Calling an extra setup function │ │ │ │ │ • Calling a closing cleanup function at shutdown. │ │ │ │ │ These functions are not called when the Qt Designer editor displays the widgets. │ │ │ │ │ When QtVCP builds a screen from the .ui file: │ │ │ │ │ 1. It searches for all the HAL-ified widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1173 / 1279 │ │ │ │ │ │ │ │ │ │ 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets │ │ │ │ │ 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function. │ │ │ │ │ hal_init() is defined in the base class and it: │ │ │ │ │ a. Adds variables such as the preference file to every HAL-ified widget. │ │ │ │ │ @@ -51426,15 +51426,15 @@ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ 2 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 3y │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1174 / 1279 │ │ │ │ │ │ │ │ │ │ In this case we need access to: │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ PyQt’s QtWidgets library, │ │ │ │ │ @@ -51506,15 +51506,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ ############################### │ │ │ │ │ # Imports │ │ │ │ │ ############################### │ │ │ │ │ from PyQt5.QtCore import pyqtProperty │ │ │ │ │ from qtvcp.widgets.led_widget import LED │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ from qtvcp.core import Status │ │ │ │ │ ########################################### │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ ########################################### │ │ │ │ │ STATUS = Status() │ │ │ │ │ ########################################## │ │ │ │ │ @@ -51564,15 +51564,15 @@ │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ │ │ │ │ │ 1175 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1176 / 1279 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, ←reset_is_estopped) │ │ │ │ │ is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on) │ │ │ │ │ @@ -51642,15 +51642,15 @@ │ │ │ │ │ self.setState(False) │ │ │ │ │ self.is_estopped = False │ │ │ │ │ self.is_on = False │ │ │ │ │ self.invert_state = False │ │ │ │ │ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Defines the name of our custom widget and what other class it inherits from. │ │ │ │ │ In this case we inherit LED - a QtVCP widget that represents a status light. │ │ │ │ │ @@ -51711,15 +51711,15 @@ │ │ │ │ │ self.PREFS_ │ │ │ │ │ the instance of an optional preference file │ │ │ │ │ self.SETTINGS_ │ │ │ │ │ the Qsettings object │ │ │ │ │ We could use this information to create HAL pins or look up image paths etc. │ │ │ │ │ STATUS.connect(’state-estop’, lambda w:self._flip_state(True)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1178 / 1279 │ │ │ │ │ │ │ │ │ │ Lets look at this line more closely: │ │ │ │ │ • STATUS is very common theme is widget building. │ │ │ │ │ STATUS uses GObject message system to send messages to widgets that register to it. │ │ │ │ │ This line is the registering process. │ │ │ │ │ @@ -51766,15 +51766,15 @@ │ │ │ │ │ return self.is_on │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ │ │ │ │ │ This is how Qt Designer sets the attributes of the widget. │ │ │ │ │ This can also be called directly in the widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1179 / 1279 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ @@ -51814,15 +51814,15 @@ │ │ │ │ │ self._last = 0 │ │ │ │ │ self._block_signal = False │ │ │ │ │ self._auto_label_flag = True │ │ │ │ │ SettingMenu = QMenu() │ │ │ │ │ for system in(’G54’, ’G55’, ’G56’, ’G57’, ’G58’, ’G59’, ’G59.1’, ’G59.2’, ’G59.3’): │ │ │ │ │ Button = QAction(QIcon(’exit24.png’), system, self) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1180 / 1279 │ │ │ │ │ │ │ │ │ │ Button.triggered.connect(self[system.replace(’.’,’_’)]) │ │ │ │ │ SettingMenu.addAction(Button) │ │ │ │ │ self.setMenu(SettingMenu) │ │ │ │ │ self.dialog = EntryDialog() │ │ │ │ │ @@ -51865,15 +51865,15 @@ │ │ │ │ │ def ChangeState(self, joint): │ │ │ │ │ if int(joint) != self._joint: │ │ │ │ │ self._block_signal = True │ │ │ │ │ self.setChecked(False) │ │ │ │ │ self._block_signal = False │ │ │ │ │ self.hal_pin.set(False) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1181 / 1279 │ │ │ │ │ │ │ │ │ │ ############################## │ │ │ │ │ # required class boiler code # │ │ │ │ │ ############################## │ │ │ │ │ def __getitem__(self, item): │ │ │ │ │ @@ -51920,15 +51920,15 @@ │ │ │ │ │ HomeLabel[homed=true] { │ │ │ │ │ color: green; │ │ │ │ │ } │ │ │ │ │ HomeLabel[homed=false] { │ │ │ │ │ color: red; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.10.6 Use Stylesheets To Change Custom Widget Properties │ │ │ │ │ class Label(QLabel): │ │ │ │ │ def __init__(self, parent=None): │ │ │ │ │ super(Label, self).__init__(parent) │ │ │ │ │ alternateFont0 = self.font │ │ │ │ │ # Qproperty getter and setter │ │ │ │ │ @@ -51973,15 +51973,15 @@ │ │ │ │ │ return Lcnc_GridLayout(parent) │ │ │ │ │ def name(self): │ │ │ │ │ return ”Lcnc_GridLayout” │ │ │ │ │ def group(self): │ │ │ │ │ │ │ │ │ │ 1182 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ return ”LinuxCNC - HAL” │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’lcnc_gridlayout’))) │ │ │ │ │ def toolTip(self): │ │ │ │ │ return ”HAL enable/disable GridLayout widget” │ │ │ │ │ def whatsThis(self): │ │ │ │ │ @@ -52030,15 +52030,15 @@ │ │ │ │ │ def domXml(self): │ │ │ │ │ return ’\n’ │ │ │ │ │ def includeFile(self): │ │ │ │ │ return ”qtvcp.widgets.system_tool_button” │ │ │ │ │ │ │ │ │ │ 1183 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1184 / 1279 │ │ │ │ │ │ │ │ │ │ 12.10.7.3 Making a plugin with a MenuEntry dialog box │ │ │ │ │ It possible to add an entry to the dialog that pops up when you right click the widget in the layout. │ │ │ │ │ This can do things such as selecting options in a more convenient way. │ │ │ │ │ This is the plugin used for action buttons. │ │ │ │ │ @@ -52084,15 +52084,15 @@ │ │ │ │ │ def createWidget(self, parent): │ │ │ │ │ return ActionButton(parent) │ │ │ │ │ # This method returns the name of the custom widget class │ │ │ │ │ def name(self): │ │ │ │ │ return ”ActionButton” │ │ │ │ │ # Returns the name of the group in Qt Designer’s widget box │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ def group(self): │ │ │ │ │ return ”LinuxCNC - Controller” │ │ │ │ │ # Returns the icon │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’actionbutton’))) │ │ │ │ │ # Returns a tool tip short description │ │ │ │ │ @@ -52133,15 +52133,15 @@ │ │ │ │ │ self.setWindowTitle(self.tr(”Set Options”)) │ │ │ │ │ def updateWidget(self): │ │ │ │ │ formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget) │ │ │ │ │ if formWindow: │ │ │ │ │ │ │ │ │ │ 1185 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1186 / 1279 │ │ │ │ │ │ │ │ │ │ formWindow.cursor().setProperty(”estop_action”, │ │ │ │ │ QtCore.QVariant(self.c_estop.isChecked())) │ │ │ │ │ self.accept() │ │ │ │ │ class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension): │ │ │ │ │ @@ -52180,15 +52180,15 @@ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, default value, type, section name) │ │ │ │ │ self.int_value = self.w.PREFS_.getpref(’Integer_value’, 75, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.string_value = self.w.PREFS_.getpref(’String_value’, ’on’, str, ’ ←CUSTOM_FORM_ENTRIES’) │ │ │ │ │ │ │ │ │ │ Writing preferences at close time In the closing_cleanup__() function, add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1187 / 1279 │ │ │ │ │ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, variable name, type, section name) │ │ │ │ │ self.w.PREFS_.putpref(’Integer_value’, self.integer_value, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.w.PREFS_.putpref(’String_value’, self.string_value, str, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ @@ -52223,15 +52223,15 @@ │ │ │ │ │ Being able to edit a style on a running screen is convenient. │ │ │ │ │ Import StyleSheetEditor module in the IMPORT SECTION: │ │ │ │ │ from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE │ │ │ │ │ │ │ │ │ │ Instantiate StyleSheetEditor module in the INSTANTIATE SECTION: │ │ │ │ │ STYLEEDITOR = SSE() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1188 / 1279 │ │ │ │ │ │ │ │ │ │ Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets, │ │ │ │ │ paths):+ function add: │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_F12’) │ │ │ │ │ │ │ │ │ │ @@ -52275,15 +52275,15 @@ │ │ │ │ │ def return_value(self, w, message): │ │ │ │ │ num = message.get(’RETURN’) │ │ │ │ │ id_code = bool(message.get(’ID’) == ’FORM__NUMBER’) │ │ │ │ │ name = bool(message.get(’NAME’) == ’ENTRY’) │ │ │ │ │ if id_code and name and num is not None: │ │ │ │ │ print(’The {} number from {} was: {}’.format(name, id_code, num)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1189 / 1279 │ │ │ │ │ │ │ │ │ │ This catches all general messages so it must check the dialog type and id code to confirm it’s our │ │ │ │ │ dialog. │ │ │ │ │ In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know │ │ │ │ │ the message is for us. │ │ │ │ │ @@ -52318,15 +52318,15 @@ │ │ │ │ │ The objectName of the toolbar button is used to identify the button when configuring it - descriptive │ │ │ │ │ names help. │ │ │ │ │ Using the action editor menu, right click and select edit. │ │ │ │ │ Edit the object name, text, and button type for an appropriate action. │ │ │ │ │ In this example the: │ │ │ │ │ • submenu name must be menuRecent, │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1190 / 1279 │ │ │ │ │ │ │ │ │ │ • actions names must be actionAbout, actionQuit, actionMyFunction │ │ │ │ │ Loads the toolbar_actions library in the IMPORT SECTION │ │ │ │ │ from qtvcp.lib.toolbar_actions import ToolBarActions │ │ │ │ │ │ │ │ │ │ @@ -52370,15 +52370,15 @@ │ │ │ │ │ Define the function called by pin state change in the GENERAL FUNCTIONS SECTION │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def cycleStart(self, state): │ │ │ │ │ if state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1191 / 1279 │ │ │ │ │ │ │ │ │ │ tab = self.w.mainTab.currentWidget() │ │ │ │ │ if tab in( self.w.tab_auto, self.w.tab_graphics): │ │ │ │ │ ACTION.RUN(line=0) │ │ │ │ │ elif tab == self.w.tab_files: │ │ │ │ │ @@ -52420,15 +52420,15 @@ │ │ │ │ │ jog increment after. │ │ │ │ │ We will build a button that toggles between continuous jog and whatever increment that was already │ │ │ │ │ selected. │ │ │ │ │ In Qt Designer: │ │ │ │ │ • Add an ActionButton with no action │ │ │ │ │ • Call it btn_toggle_continuous. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1192 / 1279 │ │ │ │ │ │ │ │ │ │ • Set the AbstractButton property checkable to True. │ │ │ │ │ • Set the ActionButton properties incr_imperial_number and incr_mm_number to 0. │ │ │ │ │ • Use Qt Designer’s slot editor to use the button signal clicked(bool) to call form’s handler function │ │ │ │ │ toggle_continuous_clicked(). │ │ │ │ │ @@ -52474,15 +52474,15 @@ │ │ │ │ │ Class patching (monkey patching) is a little like black magic - so use it only if needed. │ │ │ │ │ │ │ │ │ │ The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want │ │ │ │ │ to print the file name first. │ │ │ │ │ We can ”class patch” the library to redirect the function call. │ │ │ │ │ In the IMPORT SECTION add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1193 / 1279 │ │ │ │ │ │ │ │ │ │ from qtvcp.widgets.file_manager import FileManager as FM │ │ │ │ │ │ │ │ │ │ Here we are going to: │ │ │ │ │ 1. Keep a reference to the original function (1) so we can still call it │ │ │ │ │ @@ -52514,15 +52514,15 @@ │ │ │ │ │ def our_load(self,fname): │ │ │ │ │ print(fname) │ │ │ │ │ self.old_load(self.w.filemanager,fname) │ │ │ │ │ │ │ │ │ │ Now our custom function will print the file path to the terminal before loading the file. │ │ │ │ │ Obviously boring but shows the principle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1194 / 1279 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ There is another slightly different way to do this that can have advantages: you can store the reference to the original function in the original class. │ │ │ │ │ The trick here is to make sure the function name you use to store it is not already used in the class. │ │ │ │ │ super__ added to the function name would be a good choice. │ │ │ │ │ @@ -52560,15 +52560,15 @@ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from PyQt5 import QtWidgets │ │ │ │ │ from PyQt5.QtGui import QColor │ │ │ │ │ from qtvcp.widgets.state_led import StateLED as LED │ │ │ │ │ from qtvcp.core import Status, Info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1195 / 1279 │ │ │ │ │ │ │ │ │ │ Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so │ │ │ │ │ as to be global references (no self. in front): │ │ │ │ │ ########################################## │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ @@ -52619,15 +52619,15 @@ │ │ │ │ │ # │ │ │ │ │ self.w.led.setProperty(’is_spindle_at_speed_status’,True) # │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 2y │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1196 / 1279 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 4y │ │ │ │ │ │ │ │ │ │ self.w.led.setProperty(’color’,QColor(0,255,0,255)) │ │ │ │ │ @@ -52740,15 +52740,15 @@ │ │ │ │ │ │ │ │ │ │ 7 │ │ │ │ │ │ │ │ │ │ We create a QWidget │ │ │ │ │ Since you can only add one widget to the tab corner and we want two there, we must add both │ │ │ │ │ into a container. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ 1197 / 1279 │ │ │ │ │ │ │ │ │ │ @@ -52828,15 +52828,15 @@ │ │ │ │ │ self.w = widgets │ │ │ │ │ self.PATHS = paths │ │ │ │ │ # register a function to be called at CYCLE_TIME period (usually every 100 ms) │ │ │ │ │ STATUS.connect(’periodic’, lambda w: self.update_periodic()) │ │ │ │ │ │ │ │ │ │ Create the custom function to be called periodically │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1198 / 1279 │ │ │ │ │ │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def update_periodic(self): │ │ │ │ │ @@ -52878,15 +52878,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ from time import sleep │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ context = zmq.Context() │ │ │ │ │ socket = context.socket(zmq.PUB) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1199 / 1279 │ │ │ │ │ │ │ │ │ │ socket.bind(”tcp://127.0.0.1:5690”) │ │ │ │ │ topic = b’QtVCP’ │ │ │ │ │ # prebuilt message 1 │ │ │ │ │ # makes a dict of function to call plus any arguments │ │ │ │ │ @@ -52944,15 +52944,15 @@ │ │ │ │ │ def __init__(self, halcomp,widgets,paths): │ │ │ │ │ # directly select ZMQ message sending │ │ │ │ │ self.w.screen_options.setProperty(’use_send_zmq_option’,True) │ │ │ │ │ │ │ │ │ │ This allows sending messages to a separate program. │ │ │ │ │ The message sent will depend on what the external program is expecting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1200 / 1279 │ │ │ │ │ │ │ │ │ │ Create a function to send ZMQ messages Let’s add a specific function for testing. │ │ │ │ │ You will need to run LinuxCNC from a terminal to see the printed text. │ │ │ │ │ Also, something needs to be added to call this function, such as a button click. │ │ │ │ │ ##################### │ │ │ │ │ @@ -52993,15 +52993,15 @@ │ │ │ │ │ You can also use the Status library to send a message to the notify library if it is enabled (usually │ │ │ │ │ set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify │ │ │ │ │ dialog. │ │ │ │ │ The messages are also recorded until the user erases them using controls. The users can recall any │ │ │ │ │ recorded messages. │ │ │ │ │ There are several options: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1201 / 1279 │ │ │ │ │ │ │ │ │ │ STATUS.TEMPORARY_MESSAGE │ │ │ │ │ Show the message for a short time only. │ │ │ │ │ STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT │ │ │ │ │ │ │ │ │ │ @@ -53040,15 +53040,15 @@ │ │ │ │ │ Notice we sometimes compare to widget, sometimes to widget.parent(). │ │ │ │ │ This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get │ │ │ │ │ the focus; so we need to check the parent of those sub-widgets. │ │ │ │ │ Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to │ │ │ │ │ accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent() │ │ │ │ │ would get you the container that holds the G-code widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1202 / 1279 │ │ │ │ │ │ │ │ │ │ 12.12 QtVCP Development │ │ │ │ │ 12.12.1 Overview │ │ │ │ │ The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building │ │ │ │ │ for LinuxCNC. │ │ │ │ │ @@ -53077,15 +53077,15 @@ │ │ │ │ │ 12.12.3 QtVCP Startup To Shutdown │ │ │ │ │ QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree. │ │ │ │ │ 12.12.3.1 QtVCP Startup │ │ │ │ │ When QtVCP first starts: │ │ │ │ │ 1. It must decide if this object is a screen or a panel. │ │ │ │ │ 2. It searches for and collects information about paths of required files and useful folders. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1203 / 1279 │ │ │ │ │ │ │ │ │ │ 3. It then: │ │ │ │ │ a. Builds the HAL component, │ │ │ │ │ b. Loads the window instance, │ │ │ │ │ c. Adds handler extensions, │ │ │ │ │ @@ -53121,15 +53121,15 @@ │ │ │ │ │ LIBDIR │ │ │ │ │ Path of QtVCP’s Python library │ │ │ │ │ HANDLER │ │ │ │ │ Path of handler file │ │ │ │ │ XML │ │ │ │ │ Path of .ui file │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1204 / 1279 │ │ │ │ │ │ │ │ │ │ DOMAIN │ │ │ │ │ Path of translation │ │ │ │ │ IS_SCREEN │ │ │ │ │ Screen/panel switch │ │ │ │ │ @@ -53164,15 +53164,15 @@ │ │ │ │ │ Most importantly widgets that require regular key input and not jogging, should be checked for in the │ │ │ │ │ processed_key_event__ function. │ │ │ │ │ 12.12.5.4 Preference File │ │ │ │ │ Some QtVCP widgets use the preference file to record important information. │ │ │ │ │ This requires the preference file to be set up early in the widget initialization process. │ │ │ │ │ The easiest way to do this is to use the ScreenOptions widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1205 / 1279 │ │ │ │ │ │ │ │ │ │ 12.12.5.5 Widget Special Setup Functions │ │ │ │ │ QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded. │ │ │ │ │ It is not called when using Qt Designer editor. │ │ │ │ │ After this function is called the widget has access to some special variables: │ │ │ │ │ @@ -53199,15 +53199,15 @@ │ │ │ │ │ By default, if there is a preference file, the dialogs will remember their last size/placement. │ │ │ │ │ It is possible to override this so they open in the same location each time. │ │ │ │ │ 12.12.5.7 Styles (Themes) │ │ │ │ │ While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are │ │ │ │ │ all set in a separate .qss file. │ │ │ │ │ The file should be put in the same location as the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1206 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 13 │ │ │ │ │ │ │ │ │ │ User Interface Programming │ │ │ │ │ 13.1 Panelui │ │ │ │ │ @@ -53236,15 +53236,15 @@ │ │ │ │ │ loadrt sampler cfg=u depth=1025 │ │ │ │ │ #uncomment to validate the panelui INI file │ │ │ │ │ #loadusr pyui │ │ │ │ │ # -d = debug, -v = verbose debug │ │ │ │ │ # -d will show you keypress identification and commands called │ │ │ │ │ # -v is for develeper info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1207 / 1279 │ │ │ │ │ │ │ │ │ │ loadusr -W panelui -d │ │ │ │ │ # using simulated buttons instead of the MESA 7I73 card │ │ │ │ │ # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes │ │ │ │ │ loadrt sim_matrix_kb │ │ │ │ │ @@ -53285,15 +53285,15 @@ │ │ │ │ │ This allows one to change the prefix of the HAL pins from panelui to an arbitrary name. │ │ │ │ │ ZMQ Messaging Setup │ │ │ │ │ [ZMQ_SETUP] │ │ │ │ │ TOPIC = ’QTVCP’ │ │ │ │ │ SOCKET = ’tcp://127.0.0.1:5690’ │ │ │ │ │ ENABLE = True │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1208 / 1279 │ │ │ │ │ │ │ │ │ │ This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program. │ │ │ │ │ Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group │ │ │ │ │ has its own output pin, separate from each button in the group. Radio button definitions start with │ │ │ │ │ the text RADIO_BUTTON inside single brackets. │ │ │ │ │ @@ -53347,15 +53347,15 @@ │ │ │ │ │ │ │ │ │ │ Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets. │ │ │ │ │ [TOGGLE_BUTTONS] │ │ │ │ │ # Each button name inside double brackets, must be unique and is case sensitive. │ │ │ │ │ # This button, named ’tool_change’is controller by the row 2 column 5 key. │ │ │ │ │ # It has a BIT output, will output 1 on true state and 0 on false state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1209 / 1279 │ │ │ │ │ │ │ │ │ │ # It also has a status pin which will follow it’s current state. │ │ │ │ │ # DEFAULT sets this to true when first initialized. │ │ │ │ │ # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will │ │ │ │ │ # add the lines regardless │ │ │ │ │ @@ -53399,15 +53399,15 @@ │ │ │ │ │ • required argument: axis number (int) │ │ │ │ │ spindle_forward_adjust │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ • Description: If the spindle is stopped it will start in the forward direction. If it is already running it │ │ │ │ │ will increase or decrease the rpm depending on what direction the spindle is running in. │ │ │ │ │ spindle_forward │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1210 / 1279 │ │ │ │ │ │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse_adjust │ │ │ │ │ @@ -53433,15 +53433,15 @@ │ │ │ │ │ • Description: Move Z axis to the given machine position │ │ │ │ │ feed_hold │ │ │ │ │ • required argument: state (bool 0 or 1) │ │ │ │ │ feed_override │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ rapid_override │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ • required argument: rate (float 0-1) │ │ │ │ │ spindle_override │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ max_velocity │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ optional_stop │ │ │ │ │ @@ -53473,15 +53473,15 @@ │ │ │ │ │ STATUS_PIN = False │ │ │ │ │ DEFAULT = FALSE │ │ │ │ │ TRUE_STATE = 1 │ │ │ │ │ FALSE_STATE = 0 │ │ │ │ │ │ │ │ │ │ 1211 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1212 / 1279 │ │ │ │ │ │ │ │ │ │ Here is a sample program that will receive the message and print it to the terminal. │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ # ZeroMQ Context │ │ │ │ │ @@ -53525,15 +53525,15 @@ │ │ │ │ │ # print the argument(s) │ │ │ │ │ print(wname.metadata) │ │ │ │ │ # Print the calling widgets internal metadata (from config ←file) │ │ │ │ │ # Call a mdi command to print a msg in LinuxCNC. │ │ │ │ │ # This requires LinuxCNC to be homed, but does not check for that. │ │ │ │ │ # parent commands expect a widget_instance - None is substituted │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1213 / 1279 │ │ │ │ │ │ │ │ │ │ self.parent.mdi(None,’(MSG, Hello Linuxcnc World!)’) │ │ │ │ │ # Each call to this function will cycle the mode of LinuxCNC. │ │ │ │ │ def cycle_mode(self, wname, m): │ │ │ │ │ if self.current_mode == 0: │ │ │ │ │ @@ -53574,15 +53574,15 @@ │ │ │ │ │ PROGRAM_EXTENSION = .py Python Script │ │ │ │ │ py = python │ │ │ │ │ │ │ │ │ │ In this way, any Python script can be opened, and its output is treated as G-code. One such example │ │ │ │ │ script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes │ │ │ │ │ along the circumference of a circle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1214 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 13.1: Circular Holes │ │ │ │ │ If the filter program sends lines to stderr of the form: │ │ │ │ │ FILTER_PROGRESS=10 │ │ │ │ │ │ │ │ │ │ @@ -53602,15 +53602,15 @@ │ │ │ │ │ time.sleep(.1) │ │ │ │ │ # output a line of G-code │ │ │ │ │ print(’G0 X1’, file=sys.stdout) │ │ │ │ │ # update progress │ │ │ │ │ print(’FILTER_PROGRESS={}’.format(i), file=sys.stderr) │ │ │ │ │ except: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1215 / 1279 │ │ │ │ │ │ │ │ │ │ # This causes an error message │ │ │ │ │ print(’Error; But this was only a test’, file=sys.stderr) │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ │ │ │ │ │ @@ -53653,15 +53653,15 @@ │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ def process(self): │ │ │ │ │ try: │ │ │ │ │ # get next line of code │ │ │ │ │ codeLine = self.temp[self.line] │ │ │ │ │ # process the line somehow │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1216 / 1279 │ │ │ │ │ │ │ │ │ │ # push out processed code │ │ │ │ │ print(codeLine, file=sys.stdout) │ │ │ │ │ self.line +=1 │ │ │ │ │ # update progress │ │ │ │ │ @@ -53701,15 +53701,15 @@ │ │ │ │ │ Make sure you use the correct path to your INI file. │ │ │ │ │ loadusr halui -ini /path/to/inifile.ini │ │ │ │ │ │ │ │ │ │ 13.3.2 MDI │ │ │ │ │ Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL │ │ │ │ │ pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1217 / 1279 │ │ │ │ │ │ │ │ │ │ [HALUI] │ │ │ │ │ MDI_COMMAND = G0 X0 │ │ │ │ │ MDI_COMMAND = G0 G53 Z0 │ │ │ │ │ MDI_COMMAND = G28 │ │ │ │ │ @@ -53754,15 +53754,15 @@ │ │ │ │ │ 13.3.4.1 Abort │ │ │ │ │ • halui.abort (bit, in) - pin to send an abort message (clears out most errors) │ │ │ │ │ 13.3.4.2 E-Stop │ │ │ │ │ • halui.estop.activate (bit, in) - pin for requesting E-Stop │ │ │ │ │ • halui.estop.is-activated (bit, out) - indicates E-stop reset │ │ │ │ │ • halui.estop.reset (bit, in) - pin for requesting E-Stop reset │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1218 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.3 Feed Override │ │ │ │ │ • halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ • halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder │ │ │ │ │ or direct-value. │ │ │ │ │ @@ -53791,15 +53791,15 @@ │ │ │ │ │ • halui.lube.on (bit, in) - pin for requesting lube on │ │ │ │ │ 13.3.4.8 Machine │ │ │ │ │ • 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 │ │ │ │ │ • halui.machine.is-on (bit, out) - indicates machine on │ │ │ │ │ • halui.machine.off (bit, in) - pin for requesting machine off │ │ │ │ │ • halui.machine.on (bit, in) - pin for requesting machine on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1219 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.9 Max Velocity │ │ │ │ │ The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ] │ │ │ │ │ section of the INI file. │ │ │ │ │ • halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ @@ -53833,15 +53833,15 @@ │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.override-limits (bit out) - status pin telling that joint N’s limits are temporarily overridden │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1220 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.joint.N.unhome (bit in) - pin for unhoming joint N │ │ │ │ │ • halui.joint.selected (u32 out) - selected joint number (0 … num_joints-1) │ │ │ │ │ • halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted │ │ │ │ │ • halui.joint.selected.home (bit in) - pin for homing the selected joint │ │ │ │ │ @@ -53874,15 +53874,15 @@ │ │ │ │ │ • halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when │ │ │ │ │ using increment-plus/minus │ │ │ │ │ • halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in │ │ │ │ │ the negative direction by the increment amount │ │ │ │ │ • halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1221 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the │ │ │ │ │ halui.joint.jog-speed velocity │ │ │ │ │ │ │ │ │ │ • halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity │ │ │ │ │ @@ -53915,15 +53915,15 @@ │ │ │ │ │ • halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ • halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ • halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1222 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.15 Mode │ │ │ │ │ • halui.mode.auto (bit, in) - pin for requesting auto mode │ │ │ │ │ • halui.mode.is-auto (bit, out) - indicates auto mode is on │ │ │ │ │ • halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on │ │ │ │ │ @@ -53953,15 +53953,15 @@ │ │ │ │ │ • halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override │ │ │ │ │ when counts changes. │ │ │ │ │ • halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used │ │ │ │ │ with an encoder or direct-value. │ │ │ │ │ • halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale) │ │ │ │ │ • halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1223 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale) │ │ │ │ │ • halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override │ │ │ │ │ • halui.rapid-override.value (float out) - current Rapid Override value │ │ │ │ │ • halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0) │ │ │ │ │ @@ -53986,15 +53986,15 @@ │ │ │ │ │ • halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction) │ │ │ │ │ • halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion │ │ │ │ │ • halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse │ │ │ │ │ • halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward │ │ │ │ │ • halui.spindle.N.start (bit, in) - starts the spindle │ │ │ │ │ • halui.spindle.N.stop (bit, in) - stops the spindle │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1224 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.20 Tool │ │ │ │ │ • halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis │ │ │ │ │ • halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis │ │ │ │ │ • halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis │ │ │ │ │ @@ -54015,15 +54015,15 @@ │ │ │ │ │ To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the │ │ │ │ │ halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto │ │ │ │ │ pin. You do this with an and2 component. The following figure shows how this is done. When the │ │ │ │ │ Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK │ │ │ │ │ for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component │ │ │ │ │ are on the and2.0.out will be on and this will start the program. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1225 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 13.2: Remote Start Example │ │ │ │ │ The hal commands needed to accomplish the above are: │ │ │ │ │ net program-start-btn halui.mode.auto and2.0.in0 <= │ │ │ │ │ net program-run-ok and2.0.in1 <= halui.mode.is-auto │ │ │ │ │ @@ -54046,15 +54046,15 @@ │ │ │ │ │ Your input and output pins are connected to the pins wired to the other controller. They may be │ │ │ │ │ parallel port pins or any other I/O pins that you have access to. │ │ │ │ │ │ │ │ │ │ This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p │ │ │ │ │ signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC │ │ │ │ │ is paused. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1226 / 1279 │ │ │ │ │ │ │ │ │ │ To resume the LinuxCNC G-code program, when the external controller is ready it will make its output │ │ │ │ │ true. This will signal LinuxCNC that it should resume executing G-code. │ │ │ │ │ Difficulties in timing │ │ │ │ │ • The ”resume” input return signal should not be longer than the time required to get the G-code │ │ │ │ │ @@ -54088,15 +54088,15 @@ │ │ │ │ │ • send the command by using one of the linuxcnc command channel methods │ │ │ │ │ To retrieve messages from the error channel, poll the error channel periodically, and process any │ │ │ │ │ messages retrieved. │ │ │ │ │ • poll the status channel, either periodically or as needed │ │ │ │ │ • print any error message and explore the exception code │ │ │ │ │ linuxcnc also defines the error Python exception type to support error reporting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1227 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.3 Reading LinuxCNC status │ │ │ │ │ Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some │ │ │ │ │ 80+ values (run while linuxcnc is running for typical values): │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ @@ -54138,15 +54138,15 @@ │ │ │ │ │ Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256. │ │ │ │ │ block_delete │ │ │ │ │ (returns boolean) - block delete current status. │ │ │ │ │ call_level │ │ │ │ │ (returns integer) ̀ - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise │ │ │ │ │ specified │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1228 / 1279 │ │ │ │ │ │ │ │ │ │ command │ │ │ │ │ (returns string) - currently executing command. │ │ │ │ │ current_line │ │ │ │ │ (returns integer) - currently executing line. │ │ │ │ │ @@ -54188,15 +54188,15 @@ │ │ │ │ │ file │ │ │ │ │ (returns string) - currently loaded G-code filename with path. │ │ │ │ │ flood │ │ │ │ │ (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON. │ │ │ │ │ g5x_index │ │ │ │ │ (returns integer) - currently active coordinate system, G54=1, G55=2 etc. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1229 / 1279 │ │ │ │ │ │ │ │ │ │ g5x_offset │ │ │ │ │ (returns tuple of floats) - offset of the currently active coordinate system. │ │ │ │ │ g92_offset │ │ │ │ │ (returns tuple of floats) - pose of the current g92 offset. │ │ │ │ │ @@ -54239,15 +54239,15 @@ │ │ │ │ │ • KINEMATICS_FORWARD_ONLY │ │ │ │ │ • KINEMATICS_INVERSE_ONLY │ │ │ │ │ • KINEMATICS_BOTH │ │ │ │ │ limit │ │ │ │ │ (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, │ │ │ │ │ maxSoftLimit=8. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1230 / 1279 │ │ │ │ │ │ │ │ │ │ linear_units │ │ │ │ │ (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value. │ │ │ │ │ lube │ │ │ │ │ (returns integer) - lube on flag. │ │ │ │ │ @@ -54291,15 +54291,15 @@ │ │ │ │ │ position │ │ │ │ │ (returns tuple of floats) - trajectory position. │ │ │ │ │ probe_tripped │ │ │ │ │ (returns boolean) - flag, True if probe has tripped (latch) │ │ │ │ │ probe_val │ │ │ │ │ (returns integer) - reflects value of the motion.probe-input pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1231 / 1279 │ │ │ │ │ │ │ │ │ │ probed_position │ │ │ │ │ (returns tuple of floats) - position where probe tripped. │ │ │ │ │ probing │ │ │ │ │ (returns boolean) - flag, True if a probe operation is in progress. │ │ │ │ │ @@ -54340,15 +54340,15 @@ │ │ │ │ │ tool_offset │ │ │ │ │ (returns tuple of floats) - offset values of the current tool. │ │ │ │ │ tool_table │ │ │ │ │ (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields: │ │ │ │ │ id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, │ │ │ │ │ backangle, orientation. The id and orientation are integers and the rest are floats. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1232 / 1279 │ │ │ │ │ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ s.poll() │ │ │ │ │ @@ -54384,15 +54384,15 @@ │ │ │ │ │ enabled │ │ │ │ │ (returns integer) - non-zero means enabled. │ │ │ │ │ fault │ │ │ │ │ (returns integer) - non-zero means axis amp fault. │ │ │ │ │ ferror_current │ │ │ │ │ (returns float) - current following error. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1233 / 1279 │ │ │ │ │ │ │ │ │ │ ferror_highmark │ │ │ │ │ (returns float) - magnitude of max following error. │ │ │ │ │ homed │ │ │ │ │ (returns integer) - non-zero means has been homed. │ │ │ │ │ @@ -54428,15 +54428,15 @@ │ │ │ │ │ units │ │ │ │ │ (returns float) - joint units per mm, or per degree for angular joints. │ │ │ │ │ (joint units are the same as machine units, unless set otherwise by the configuration parameter │ │ │ │ │ [JOINT_n]UNITS) │ │ │ │ │ velocity │ │ │ │ │ (returns float) - current velocity. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1234 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.4 The spindle dictionary │ │ │ │ │ brake │ │ │ │ │ (returns integer) - value of the spindle brake flag. │ │ │ │ │ direction │ │ │ │ │ @@ -54473,15 +54473,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ c = linuxcnc.command() │ │ │ │ │ def ok_for_mdi(): │ │ │ │ │ s.poll() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1235 / 1279 │ │ │ │ │ │ │ │ │ │ return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state ←== linuxcnc.INTERP_IDLE) │ │ │ │ │ if ok_for_mdi(): │ │ │ │ │ c.mode(linuxcnc.MODE_MDI) │ │ │ │ │ c.wait_complete() # wait until mode switch executed │ │ │ │ │ @@ -54522,15 +54522,15 @@ │ │ │ │ │ c.override_limits() │ │ │ │ │ c.program_open(”foo.ngc”) │ │ │ │ │ c.reset_interpreter() │ │ │ │ │ c.tool_offset(toolno, z_offset, │ │ │ │ │ │ │ │ │ │ x_offset, diameter, frontangle, backangle, orientation) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1236 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.6.1 linuxcnc.command attributes │ │ │ │ │ │ │ │ │ │ serial │ │ │ │ │ the current command serial number │ │ │ │ │ @@ -54571,15 +54571,15 @@ │ │ │ │ │ linuxcnc.JOG_STOP │ │ │ │ │ linuxcnc.JOG_CONTINUOUS │ │ │ │ │ linuxcnc.JOG_INCREMENT │ │ │ │ │ jjogmode │ │ │ │ │ True │ │ │ │ │ request individual joint jog (requires teleop_enable(0)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1237 / 1279 │ │ │ │ │ │ │ │ │ │ False │ │ │ │ │ request axis Cartesian coordinate jog (requires teleop_enable(1)) │ │ │ │ │ joint_num_or_axis_index │ │ │ │ │ For joint jog (jjogmode=1) │ │ │ │ │ @@ -54620,15 +54620,15 @@ │ │ │ │ │ set_block_delete(int) │ │ │ │ │ set block delete flag │ │ │ │ │ set_digital_output(int, int) │ │ │ │ │ set digital output pin to value │ │ │ │ │ set_feed_hold(int) │ │ │ │ │ set feed hold on/off │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1238 / 1279 │ │ │ │ │ │ │ │ │ │ set_feed_override(int) │ │ │ │ │ set feed override on/off │ │ │ │ │ set_max_limit(int, float) │ │ │ │ │ set max position limit for a given axis │ │ │ │ │ @@ -54665,15 +54665,15 @@ │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF) │ │ │ │ │ # Stop spindle 0 explicitly. │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF, 0) │ │ │ │ │ │ │ │ │ │ spindleoverride(float [, int]) │ │ │ │ │ Set spindle override factor. Defaults to spindle 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1239 / 1279 │ │ │ │ │ │ │ │ │ │ state(int) │ │ │ │ │ Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, │ │ │ │ │ or STATE_OFF. │ │ │ │ │ task_plan_sync() │ │ │ │ │ @@ -54713,15 +54713,15 @@ │ │ │ │ │ Here’s an example for reading values from an INI file through the linuxcnc.ini object: │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*# run as: │ │ │ │ │ # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini │ │ │ │ │ import sys │ │ │ │ │ import linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ inifile = linuxcnc.ini(sys.argv[1]) │ │ │ │ │ # inifile.find() returns None if the key wasn’t found - the │ │ │ │ │ # following idiom is useful for setting a default value: │ │ │ │ │ machine_name = inifile.find(”EMC”, ”MACHINE”) or ”unknown” │ │ │ │ │ print(”machine name: ”, machine_name) │ │ │ │ │ # inifile.findall() returns a list of matches, or an empty list │ │ │ │ │ @@ -54756,15 +54756,15 @@ │ │ │ │ │ clear() │ │ │ │ │ clear the position logger │ │ │ │ │ stop() │ │ │ │ │ stop the position logger │ │ │ │ │ │ │ │ │ │ 1240 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1241 / 1279 │ │ │ │ │ │ │ │ │ │ call() │ │ │ │ │ Plot the backplot now. │ │ │ │ │ last([int]) │ │ │ │ │ Return the most recent point on the plot or None │ │ │ │ │ @@ -54798,15 +54798,15 @@ │ │ │ │ │ 13.6.2.1 Sample HAL component code pattern │ │ │ │ │ This program creates two HAL pins that output the status of G20/G21. │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ import gi │ │ │ │ │ gi.require_version(’Gtk’, ’3.0’) │ │ │ │ │ from gi.repository import GObject │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1242 / 1279 │ │ │ │ │ │ │ │ │ │ from gi.repository import GLib │ │ │ │ │ import hal │ │ │ │ │ from hal_glib import GStat │ │ │ │ │ GSTAT = GStat() │ │ │ │ │ @@ -54846,15 +54846,15 @@ │ │ │ │ │ self.builder = builder │ │ │ │ │ GSTAT.connect(”state-estop”,lambda w: self.update_estate_label(’ESTOP’)) │ │ │ │ │ GSTAT.connect(”state-estop-reset”,lambda w: self.update_estate_label(’RESET’)) │ │ │ │ │ GSTAT.connect(”state-on”,lambda w: self.update_state_label(’MACHIBE ON’)) │ │ │ │ │ GSTAT.connect(”state-off”,lambda w: self.update_state_label(’MACHINE OFF’)) │ │ │ │ │ GSTAT.connect(”interp-paused”,lambda w: self.update_interp_label(’Paused’)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1243 / 1279 │ │ │ │ │ │ │ │ │ │ GSTAT.connect(”interp-run”,lambda w: self.update_interp_label(’Run’)) │ │ │ │ │ GSTAT.connect(”interp-idle”,lambda w: self.update_interp_label(’Idle’)) │ │ │ │ │ def update_state_label(self,text): │ │ │ │ │ self.builder.get_object(’state_label’).set_label(”State: %s” % (text)) │ │ │ │ │ @@ -54889,15 +54889,15 @@ │ │ │ │ │ def update_estate_label(self,text): │ │ │ │ │ self.w.e_state_label.setText(”E State: %s” % (text)) │ │ │ │ │ def update_interp_label(self,text): │ │ │ │ │ self.winterp_state_label.setText(”Interpreter State: %s” % (text)) │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,widgets,paths)] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1244 / 1279 │ │ │ │ │ │ │ │ │ │ 13.6.3 Messages │ │ │ │ │ periodic │ │ │ │ │ (returns nothing) - sent every 100 ms. │ │ │ │ │ state-estop │ │ │ │ │ @@ -54936,15 +54936,15 @@ │ │ │ │ │ interp-idle │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is idle. │ │ │ │ │ interp-paused │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is paused. │ │ │ │ │ interp-reading │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is reading. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1245 / 1279 │ │ │ │ │ │ │ │ │ │ interp-waiting │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is waiting. │ │ │ │ │ jograte-changed │ │ │ │ │ (returns float) - Sent when jog rate has changed. │ │ │ │ │ @@ -54988,15 +54988,15 @@ │ │ │ │ │ motion-mode-changed │ │ │ │ │ (returns integer) - Sent when motion’s mode has changed │ │ │ │ │ spindle-control-changed │ │ │ │ │ (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction │ │ │ │ │ & rate, at-speed state) │ │ │ │ │ Sent when spindle direction or running status changes or at-speed changes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1246 / 1279 │ │ │ │ │ │ │ │ │ │ current-feed-rate │ │ │ │ │ (returns float) - Sent when the current feed rate changes. │ │ │ │ │ current-x-rel-position │ │ │ │ │ (returns float) - Sent every 100 ms. │ │ │ │ │ @@ -55039,15 +55039,15 @@ │ │ │ │ │ rpm-mode │ │ │ │ │ (returns bool) - Sent when G97 status changes │ │ │ │ │ (constant RPM mode) │ │ │ │ │ radius-mode │ │ │ │ │ (returns bool) - Sent when G8 status changes │ │ │ │ │ display X in radius mode │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1247 / 1279 │ │ │ │ │ │ │ │ │ │ diameter-mode │ │ │ │ │ (returns bool) - Sent when G7 status changes │ │ │ │ │ display X in Diameter mode │ │ │ │ │ flood-changed │ │ │ │ │ @@ -55089,15 +55089,15 @@ │ │ │ │ │ machine-log-changed │ │ │ │ │ (returns None) - intended to be sent when machine log has changed. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ update-machine-log │ │ │ │ │ (returns string, string) - intended to be sent when updating the machine. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1248 / 1279 │ │ │ │ │ │ │ │ │ │ move-text-lineup │ │ │ │ │ (returns None) - intended to be sent when moving the cursor one line up in G-code display. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ move-text-linedown │ │ │ │ │ @@ -55141,15 +55141,15 @@ │ │ │ │ │ General message should be used a sparsely as reasonable because all object connected to it will │ │ │ │ │ have to parse it. │ │ │ │ │ It uses a Python dict for communication. │ │ │ │ │ The dict should include and be checked for a unique id keyname pair: │ │ │ │ │ • ID: UNIQUE_ID_CODE │ │ │ │ │ The dict usually has more keyname pair - it depends on implementation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1249 / 1279 │ │ │ │ │ │ │ │ │ │ forced-update │ │ │ │ │ (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ progress │ │ │ │ │ @@ -55184,15 +55184,15 @@ │ │ │ │ │ (nothing) - This will return the state of Estop (BOOL) │ │ │ │ │ set_tool_touchoff │ │ │ │ │ (tool,axis,value) - This command will │ │ │ │ │ 1. record the current mode, │ │ │ │ │ 2. switch to MDI mode, │ │ │ │ │ 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE], │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1250 / 1279 │ │ │ │ │ │ │ │ │ │ 4. wait for it to complete, │ │ │ │ │ 5. invoke G43, │ │ │ │ │ 6. wait for it to complete, │ │ │ │ │ 7. switch back to the original mode. │ │ │ │ │ @@ -55230,15 +55230,15 @@ │ │ │ │ │ get_selected_axis │ │ │ │ │ (None) - returns string representing the internal selected axis letter. │ │ │ │ │ is_man_mode │ │ │ │ │ (None) is_mdi_mode │ │ │ │ │ (None) is_auto_mode │ │ │ │ │ (None) - │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1251 / 1279 │ │ │ │ │ │ │ │ │ │ is_on_and_idle │ │ │ │ │ (None) is_auto_running │ │ │ │ │ (None) is_auto_paused │ │ │ │ │ (None) is_file_loaded │ │ │ │ │ @@ -55253,30 +55253,30 @@ │ │ │ │ │ state-tags branch. │ │ │ │ │ │ │ │ │ │ 13.7 Vismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1252 / 1279 │ │ │ │ │ │ │ │ │ │ The Vismach viewport view can be manipulated as follows: │ │ │ │ │ • zoom by scroll wheel or right button drag, │ │ │ │ │ • pan by left button drag, │ │ │ │ │ • rotate by middle-button drag or shift-drag. │ │ │ │ │ A Vismach model takes the form of a Python script and can use standard Python syntax. This means │ │ │ │ │ that there is more than one way to lay out the script, but in the examples given in this document I will │ │ │ │ │ use the simplest and most basic of them. │ │ │ │ │ The basic sequence in creating the Vismach model is │ │ │ │ │ • Create the HAL pins that control the motion. │ │ │ │ │ • Create the parts. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1253 / 1279 │ │ │ │ │ │ │ │ │ │ • Define how they move. │ │ │ │ │ • Assemble into movement groups. │ │ │ │ │ │ │ │ │ │ 13.7.1 Start the script │ │ │ │ │ @@ -55316,15 +55316,15 @@ │ │ │ │ │ • cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder │ │ │ │ │ = CylinderZ(z1, r1, z2, r2) │ │ │ │ │ Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on │ │ │ │ │ the axis. │ │ │ │ │ • sphere = Sphere(x, y, z, r) │ │ │ │ │ Creates a sphere of radius r at (x,y,z) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1254 / 1279 │ │ │ │ │ │ │ │ │ │ • triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1, │ │ │ │ │ x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2) │ │ │ │ │ Creates a triangular plate between planes defined by the last two values parallel to the specified │ │ │ │ │ plane, with vertices given by the three coordinate pairs. │ │ │ │ │ @@ -55362,15 +55362,15 @@ │ │ │ │ │ The function arguments are: │ │ │ │ │ – first a collection/part which can be pre-created earlier in the script, or could be created at this │ │ │ │ │ point if preferred eg part1 = HalTranslate([Box(....)], ...). │ │ │ │ │ – The HAL component is the next argument, ie the object returned by the comp = hal.component(...) │ │ │ │ │ command. After that is the name of the HAL in that will animate the motion, this needs to match │ │ │ │ │ an existing HAL pin that is part of the HAL component created earlier in the script. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1255 / 1279 │ │ │ │ │ │ │ │ │ │ – Then follow the X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the │ │ │ │ │ positive X direction. │ │ │ │ │ However if the STL file happened to be in cm and the machine was in inches, this could be fixed │ │ │ │ │ @@ -55411,15 +55411,15 @@ │ │ │ │ │ head = AsciiSTL(filename=”./head.stl”) │ │ │ │ │ head = Color([0.3,0.3,0.3,1],[head]) │ │ │ │ │ head = Translate([head],0,0,4) │ │ │ │ │ head = Collection([head, tool, dogs, draw]) │ │ │ │ │ head = HalTranslate([head],c,”Z”,0,0,0.1) │ │ │ │ │ # base │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1256 / 1279 │ │ │ │ │ │ │ │ │ │ base = AsciiSTL(filename=”./base.stl”) │ │ │ │ │ base = Color([0.5,0.5,0.5,1],[base]) │ │ │ │ │ # mount head on it │ │ │ │ │ base = Collection([head, base]) │ │ │ │ │ @@ -55460,15 +55460,15 @@ │ │ │ │ │ import hal │ │ │ │ │ #create the HAL component and pins │ │ │ │ │ comp = hal.component(”compname”) │ │ │ │ │ comp.newpin(”pin_name”, hal.HAL_FLOAT, hal.HAL_IN) │ │ │ │ │ ... │ │ │ │ │ #create the floor, tool and work │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ floor = Box(-50, -50, -3, 50, 50, 0) │ │ │ │ │ work = Capture() │ │ │ │ │ tooltip = Capture() │ │ │ │ │ ... │ │ │ │ │ #Build and assemble the model │ │ │ │ │ part1 = Collection([Box(-6,-3,94,6,3,100)]) │ │ │ │ │ @@ -55479,23 +55479,23 @@ │ │ │ │ │ #create a top-level model │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ #Start the visualization │ │ │ │ │ main(model, tooltip, work, 100, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1257 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1258 / 1279 │ │ │ │ │ │ │ │ │ │ Part III │ │ │ │ │ │ │ │ │ │ Glossary, Copyright & History │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1259 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 14 │ │ │ │ │ │ │ │ │ │ Overleaf │ │ │ │ │ │ │ │ │ │ @@ -55515,15 +55515,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1260 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 15 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -55557,15 +55557,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1261 / 1279 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -55610,15 +55610,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1262 / 1279 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -55661,15 +55661,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1263 / 1279 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -55712,15 +55712,15 @@ │ │ │ │ │ Rapid │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum speed of the machine. It is often desirable to limit the rapid rate when testing a G-code │ │ │ │ │ program for the first time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1264 / 1279 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet │ │ │ │ │ these requirements it is necessary to install a realtime kernel such as RTAI and build the software │ │ │ │ │ to run in the special real-time environment. For this reason real-time software runs in kernelspace. │ │ │ │ │ @@ -55761,28 +55761,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1265 / 1279 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1266 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 16 │ │ │ │ │ │ │ │ │ │ Copyright │ │ │ │ │ 16.1 Legal Section │ │ │ │ │ @@ -55810,15 +55810,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1267 / 1279 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any │ │ │ │ │ such manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -55867,15 +55867,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front │ │ │ │ │ cover must present the full title with all words of the title equally prominent and visible. You may add │ │ │ │ │ other material on the covers in addition. Copying with changes limited to the covers, as long as they │ │ │ │ │ preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying │ │ │ │ │ in other respects. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1268 / 1279 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ 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 │ │ │ │ │ @@ -55921,15 +55921,15 @@ │ │ │ │ │ Version. N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any │ │ │ │ │ Invariant Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1269 / 1279 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -55970,15 +55970,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1270 / 1279 │ │ │ │ │ │ │ │ │ │ this 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 version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ @@ -56006,15 +56006,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1271 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 17 │ │ │ │ │ │ │ │ │ │ LinuxCNC History │ │ │ │ │ 17.1 Origin │ │ │ │ │ @@ -56046,15 +56046,15 @@ │ │ │ │ │ interested in improving EMC. Many people requested or coded small improvements to the code. Ray │ │ │ │ │ Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code │ │ │ │ │ in which the user interface was written, a simpler method was sought. Fred Proctor of NIST suggested a scripting language and wrote code to interface the Tcl/Tk scripting language to the internal │ │ │ │ │ NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the │ │ │ │ │ predominant user interface for EMC at the time. │ │ │ │ │ For NIST’s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1272 / 1279 │ │ │ │ │ │ │ │ │ │ By this time interest in EMC as beginning to pick up substantially. As more and more people attempted │ │ │ │ │ installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of │ │ │ │ │ compiling the EMC code became glaringly obvious. Many attempts to document the process and │ │ │ │ │ write scripts were attempted, some with moderate success. The problem of matching the correct │ │ │ │ │ @@ -56089,15 +56089,15 @@ │ │ │ │ │ The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0. │ │ │ │ │ │ │ │ │ │ 17.1.2 Additional Info │ │ │ │ │ NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf . │ │ │ │ │ NIST also published a paper on the history of EMC and its transition to open source. The paper is also │ │ │ │ │ available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1273 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 18 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ _ │ │ │ │ │ @@ -56181,15 +56181,15 @@ │ │ │ │ │ connecting-rs485, 344 │ │ │ │ │ Controlled Point, 64 │ │ │ │ │ coolant, 63 │ │ │ │ │ Cooling, 65 │ │ │ │ │ coordinate measuring machine, 1261 │ │ │ │ │ Coordinate Systems, 819 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Core components, 250 │ │ │ │ │ Creating Userspace Python Components, 302 │ │ │ │ │ Custom sections and variables, 156 │ │ │ │ │ Cutter Radius Compensation, 832 │ │ │ │ │ D │ │ │ │ │ debounce, 282 │ │ │ │ │ @@ -56297,15 +56297,15 @@ │ │ │ │ │ Spindle Stop │ │ │ │ │ Manual Out, 903 │ │ │ │ │ G89 Boring │ │ │ │ │ Dwell │ │ │ │ │ Feed Out, 903 │ │ │ │ │ G90 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G92 Coordinate System Offset, 904 │ │ │ │ │ G92.1 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ @@ -56416,15 +56416,15 @@ │ │ │ │ │ HAL xor2 │ │ │ │ │ xor2, 216 │ │ │ │ │ HAL: Implementation, 203 │ │ │ │ │ HAL: Interconnections Design, 203 │ │ │ │ │ HAL: Testing, 203 │ │ │ │ │ HAL:Function, 206 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ HAL:Thread, 206 │ │ │ │ │ HAL:Velocity example, 247 │ │ │ │ │ Halcmd Tutorial, 220 │ │ │ │ │ Halmeter, 312 │ │ │ │ │ Tutorial Halmeter, 226 │ │ │ │ │ Halui Examples, 1224 │ │ │ │ │ @@ -56531,15 +56531,15 @@ │ │ │ │ │ M48 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M5 Spindle Control, 908 │ │ │ │ │ M50 Feed Override Control, 911 │ │ │ │ │ M51 Spindle Speed Override, 911 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ M52 Adaptive Feed Control, 911 │ │ │ │ │ M53 Feed Stop Control, 911 │ │ │ │ │ M6-Tool-Change, 909 │ │ │ │ │ M60 Pallet Change Pause, 908 │ │ │ │ │ M61 Set Current Tool, 912 │ │ │ │ │ M62 - M65 Digital Output Control, 912 │ │ │ │ │ @@ -56646,15 +56646,15 @@ │ │ │ │ │ real-time, 1264 │ │ │ │ │ refsig-timing-diagram, 337 │ │ │ │ │ Repeat Loop, 924 │ │ │ │ │ Return Values, 925 │ │ │ │ │ RS274NGC, 1264 │ │ │ │ │ RS274NGC STARTUP CODE, 163 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ RTAI, 1264 │ │ │ │ │ RTAPI, 1264 │ │ │ │ │ RTLINUX, 1264 │ │ │ │ │ Running LinuxCNC, 14 │ │ │ │ │ S │ │ │ │ │ s32, 213 │ │ │ │ │ @@ -56762,15 +56762,15 @@ │ │ │ │ │ User Foreword, 43 │ │ │ │ │ User Introduction, 44 │ │ │ │ │ USER M PATH, 164 │ │ │ │ │ V │ │ │ │ │ Variables, 156 │ │ │ │ │ VOLATILE HOME, 186 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ W │ │ │ │ │ weighted_sum, 216 │ │ │ │ │ Words, 840 │ │ │ │ │ world coordinates, 1265 │ │ │ │ │ X │ │ │ │ │ xor2, 216 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Getting Started │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Contents │ │ │ │ │ 1 About LinuxCNC │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -115,15 +115,15 @@ │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ 3.5 Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.6 Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 10 │ │ │ │ │ │ │ │ │ │ @@ -272,15 +272,15 @@ │ │ │ │ │ │ │ │ │ │ 28 │ │ │ │ │ │ │ │ │ │ 5.5.2 INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ @@ -434,15 +434,15 @@ │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ 5.13.4XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 5.13.4.1xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ @@ -581,15 +581,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 49 │ │ │ │ │ 49 │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ The LinuxCNC Team │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ Copyright © 2000-2020 LinuxCNC.org │ │ │ │ │ @@ -607,15 +607,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 1 │ │ │ │ │ │ │ │ │ │ About LinuxCNC │ │ │ │ │ 1.1 The Software │ │ │ │ │ @@ -642,15 +642,15 @@ │ │ │ │ │ • It can simultaneously move up to 9 axes and supports a variety of interfaces. │ │ │ │ │ • The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC │ │ │ │ │ software at the computer, or open loop with step-servos or stepper motors. │ │ │ │ │ • Motion control features include: cutter radius and length compensation, path deviation limited to │ │ │ │ │ a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed │ │ │ │ │ override, and constant velocity control. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 55 │ │ │ │ │ │ │ │ │ │ • Support for non-Cartesian motion systems is provided via custom kinematics modules. Available │ │ │ │ │ architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary │ │ │ │ │ joints to provide motion such as PUMA or SCARA robots. │ │ │ │ │ • LinuxCNC runs on Linux using real time extensions. │ │ │ │ │ @@ -683,15 +683,15 @@ │ │ │ │ │ 1.3.2 Mailing List │ │ │ │ │ An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at │ │ │ │ │ their convenience. You get better exposure to your questions on a mailing list than on the IRC but │ │ │ │ │ answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or │ │ │ │ │ individual replies back depending on how you set up your account. │ │ │ │ │ You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 55 │ │ │ │ │ │ │ │ │ │ 1.3.3 Web Forum │ │ │ │ │ A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the │ │ │ │ │ linuxcnc.org home page. │ │ │ │ │ This is quite active but the demographic is more user-biased than the mailing list. If you want to be │ │ │ │ │ @@ -701,15 +701,15 @@ │ │ │ │ │ A Wiki site is a user maintained web site that anyone can add to or edit. │ │ │ │ │ │ │ │ │ │ The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or │ │ │ │ │ │ │ │ │ │ 1.3.5 Bug Reports │ │ │ │ │ Report bugs to the LinuxCNC github bug tracker. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 2 │ │ │ │ │ │ │ │ │ │ System Requirements │ │ │ │ │ 2.1 Minimum Requirements │ │ │ │ │ @@ -737,15 +737,15 @@ │ │ │ │ │ LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can, │ │ │ │ │ however run on a standard kernel in simulation mode for purposes such as checking G-code, testing │ │ │ │ │ config files and learning the system. To work with these kernel versions there are two versions of │ │ │ │ │ LinuxCNC distributed. The package names are ”linuxcnc” and ”linuxcnc-uspace”. │ │ │ │ │ The realtime kernel options are preempt-rt, RTAI and Xenomai. │ │ │ │ │ You can discover the kernel version of your system with the command: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 55 │ │ │ │ │ │ │ │ │ │ uname -a │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ @@ -781,15 +781,15 @@ │ │ │ │ │ an extended time will give you the info you need to determine suitability. │ │ │ │ │ │ │ │ │ │ 2.3.2 Video Cards │ │ │ │ │ If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize │ │ │ │ │ your video card or monitor. This can sometimes be worked-around by installing drivers or creating / │ │ │ │ │ editing Xorg.conf files. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 3 │ │ │ │ │ │ │ │ │ │ Getting LinuxCNC │ │ │ │ │ This section describes the recommended way to download and make a fresh install of LinuxCNC. │ │ │ │ │ @@ -816,15 +816,15 @@ │ │ │ │ │ │ │ │ │ │ 3.1.1 Normal Download │ │ │ │ │ For x86 PCs Download the Live/Install CD by clicking here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso │ │ │ │ │ For the Raspberry Pi a complete SD card image is available here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 55 │ │ │ │ │ │ │ │ │ │ This can be installed using the normal Pi install process including with the Raspberry Pi Imager app. │ │ │ │ │ This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version │ │ │ │ │ of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both │ │ │ │ │ WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by │ │ │ │ │ @@ -860,15 +860,15 @@ │ │ │ │ │ 2. Then compare to these checksums │ │ │ │ │ md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41 │ │ │ │ │ sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700 │ │ │ │ │ │ │ │ │ │ Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program, │ │ │ │ │ but there are alternatives. More information can be found at: How To MD5SUM │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 55 │ │ │ │ │ │ │ │ │ │ 3.2 Write the image to a bootable device │ │ │ │ │ The Raspberry Pi image is a completes SD card image and should be written to an SD card in the │ │ │ │ │ normal way. │ │ │ │ │ The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB │ │ │ │ │ @@ -903,15 +903,15 @@ │ │ │ │ │ 4. Select the write speed. It is recommended that you write at the lowest possible speed. │ │ │ │ │ 5. Start the burning process. │ │ │ │ │ 6. If a choose a file name for the disc image window pops up, just pick OK. │ │ │ │ │ Writing the image to a DVD in Windows │ │ │ │ │ │ │ │ │ │ 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 55 │ │ │ │ │ │ │ │ │ │ 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up. │ │ │ │ │ 3. Open Infra Recorder, and select the Actions menu, then Burn image. │ │ │ │ │ Writing the image to a DVD in Mac OSX │ │ │ │ │ 1. Download the .iso file │ │ │ │ │ @@ -946,15 +946,15 @@ │ │ │ │ │ line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything │ │ │ │ │ except the operating system when asked to. │ │ │ │ │ │ │ │ │ │ Warning │ │ │ │ │ Do not upgrade the operating system if prompted to do so. You should accept OS updates │ │ │ │ │ however, especially security updates. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 55 │ │ │ │ │ │ │ │ │ │ 3.6 Install Problems │ │ │ │ │ In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot │ │ │ │ │ recognize the hard drive during the boot up. │ │ │ │ │ │ │ │ │ │ @@ -1057,15 +1057,15 @@ │ │ │ │ │ • Debian Wheezy: deb https://linuxcnc.org wheezy base │ │ │ │ │ • Ubuntu Precise: deb https://linuxcnc.org precise base │ │ │ │ │ Note │ │ │ │ │ Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is │ │ │ │ │ strongly advised not to use either for a new install, and to seriously consider upgrading an existing │ │ │ │ │ installation. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 55 │ │ │ │ │ │ │ │ │ │ The Buster / RTAI package is only available on amd64, but there are very few surviving systems that │ │ │ │ │ can not run a 64-bit OS. │ │ │ │ │ Warning │ │ │ │ │ There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The │ │ │ │ │ @@ -1103,15 +1103,15 @@ │ │ │ │ │ 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right │ │ │ │ │ click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the │ │ │ │ │ system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels │ │ │ │ │ need not be deleted, but grub boot configuration changes will be needed beyond the scope of │ │ │ │ │ this document. │ │ │ │ │ 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ │ │ │ │ │ 6. Add the apt repository: │ │ │ │ │ @@ -1147,15 +1147,15 @@ │ │ │ │ │ sudo apt-get update │ │ │ │ │ │ │ │ │ │ 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc │ │ │ │ │ sudo apt-get install linux-image-4.19.195-rtai-amd64 │ │ │ │ │ │ │ │ │ │ 6. Install the RTAI application layer │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-get install rtai-modules-4.19.195 │ │ │ │ │ │ │ │ │ │ 7. Install LinuxCNC (may be necessary to reboot before installing) │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ @@ -1192,15 +1192,15 @@ │ │ │ │ │ │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ # Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ │ │ │ │ │ 4. Add a new apt source │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 55 │ │ │ │ │ │ │ │ │ │ sudo add-apt-repository ”deb https://linuxcnc.org/ precise base 2.8-rt” │ │ │ │ │ │ │ │ │ │ 5. Fetch the package list from linuxcnc.org. │ │ │ │ │ sudo apt-get update │ │ │ │ │ @@ -1214,15 +1214,15 @@ │ │ │ │ │ 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name │ │ │ │ │ is 3.4-9-rtai-686-pae. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Run │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 4 │ │ │ │ │ │ │ │ │ │ Running LinuxCNC │ │ │ │ │ 4.1 Invoking LinuxCNC │ │ │ │ │ @@ -1249,15 +1249,15 @@ │ │ │ │ │ applications like PyVCP or GladeVCP. │ │ │ │ │ – attic - Obsolete or historical configurations. │ │ │ │ │ The sim configurations are often the most useful starting point for new users and are organized around │ │ │ │ │ supported GUIs: │ │ │ │ │ • axis - Keyboard and Mouse GUI │ │ │ │ │ • gmoccapy - Touch Screen GUI │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 55 │ │ │ │ │ │ │ │ │ │ • gscreen - Touch Screen GUI │ │ │ │ │ • low_graphics - Keyboard GUI │ │ │ │ │ • pyvcp_demo - Paneles de Control Virtuales Python │ │ │ │ │ • qtvcp_screens - Guis diseñadas con Qt5 y Python │ │ │ │ │ @@ -1288,15 +1288,15 @@ │ │ │ │ │ applications that can be used with linuxcnc: │ │ │ │ │ • info - creates a file with system information that may be useful for problem diagnosis. │ │ │ │ │ • gladevcp - Example GladeVCP applications. │ │ │ │ │ • halrun - Starts halrun in an terminal. │ │ │ │ │ • latency - Applications to investigate latency │ │ │ │ │ – latency-test - standard test │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 55 │ │ │ │ │ │ │ │ │ │ – latency-plot - stripchart │ │ │ │ │ – latency-histogram - histogram │ │ │ │ │ • parport - Applications to test parport. │ │ │ │ │ • pyvcp - Example pyvcp applications. │ │ │ │ │ @@ -1308,15 +1308,15 @@ │ │ │ │ │ Figure 4.1: LinuxCNC Configuration Selector │ │ │ │ │ Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration. │ │ │ │ │ Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly │ │ │ │ │ launch this configuration without showing the Configuration Selector screen. │ │ │ │ │ When you select a configuration from the Sample Configurations section, it will automatically place a │ │ │ │ │ copy of that config in the ~/linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 55 │ │ │ │ │ │ │ │ │ │ 4.3 Next steps in configuration │ │ │ │ │ After finding the sample configuration that uses the same interface hardware as your machine (or a │ │ │ │ │ simulator configuration), and saving a copy to your home directory, you can customize it according to │ │ │ │ │ the details of your machine. Refer to the Integrator Manual for topics on configuration. │ │ │ │ │ @@ -1343,15 +1343,15 @@ │ │ │ │ │ HAL files, local modifications will then prevail. │ │ │ │ │ The Configuration selector makes a symbolic link in the user configuration directory (named hallib) │ │ │ │ │ that points to the system HAL file library. This link simplifies copying a library file. For example, to │ │ │ │ │ copy the library core_sim.hal file in order to make local modifications: │ │ │ │ │ cd ~/linuxcnc/configs/name_of_configuration │ │ │ │ │ cp hallib/core_sim.hal core_sim.hal │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 5 │ │ │ │ │ │ │ │ │ │ Updating LinuxCNC │ │ │ │ │ Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example │ │ │ │ │ @@ -1383,15 +1383,15 @@ │ │ │ │ │ │ │ │ │ │ You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also │ │ │ │ │ available for Debian Jessie or Debian Buster if you happen to already be running one of those. │ │ │ │ │ You will also need to check which realtime kernel is being used: │ │ │ │ │ uname -r │ │ │ │ │ 4.19.0-9-rt-amd64 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 55 │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC │ │ │ │ │ version to install. │ │ │ │ │ @@ -1436,15 +1436,15 @@ │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rt │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 55 │ │ │ │ │ │ │ │ │ │ • Click Add Source, then Close in the Software Sources window. If it pops up a window informing │ │ │ │ │ you that the information about available software is out-of-date, click the Reload button. │ │ │ │ │ │ │ │ │ │ 5.1.2 Upgrading to the new version │ │ │ │ │ @@ -1464,15 +1464,15 @@ │ │ │ │ │ │ │ │ │ │ 5.1.3 Ubuntu Precise │ │ │ │ │ • Click on the Dash Home icon in the top left. │ │ │ │ │ • In the Search field, type ”update”, then click on the Update Manager icon. │ │ │ │ │ • Click the Check button to fetch the list of packages available. │ │ │ │ │ • Click the Install Updates button to install the new versions of all packages. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 55 │ │ │ │ │ │ │ │ │ │ 5.2 Updating without Network │ │ │ │ │ To update without a network connection you need to download the .deb then install it with dpkg. The │ │ │ │ │ .debs can be found in https://linuxcnc.org/dists/ . │ │ │ │ │ You have to drill down from the above link to find the correct deb for your installation. Open a terminal │ │ │ │ │ @@ -1509,15 +1509,15 @@ │ │ │ │ │ /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting │ │ │ │ │ correspondingly needs to change from libcanterp.so to canterp.so. │ │ │ │ │ │ │ │ │ │ 5.4 Updating Configuration Files (for 2.8.x) │ │ │ │ │ The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your │ │ │ │ │ machine configuration. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 55 │ │ │ │ │ │ │ │ │ │ The main difference is that LinuxCNC no longer makes any assumptions about which joint controls │ │ │ │ │ which axis. This change is generally termed ”joints-axes” after the name of the development branch │ │ │ │ │ where the changes started. This change has been in development since at least 2010, and has finally │ │ │ │ │ been merged. │ │ │ │ │ @@ -1557,15 +1557,15 @@ │ │ │ │ │ spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for │ │ │ │ │ the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a │ │ │ │ │ HAL file loadrt entry for motmod). │ │ │ │ │ The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match. │ │ │ │ │ The spindle control pin names have been changed to make spindles look more like axes and joints. │ │ │ │ │ motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 55 │ │ │ │ │ │ │ │ │ │ take care of these changes. To control extra spindles the G and M-codes which control spindle speed │ │ │ │ │ now accept an additional ”$” argument, for example M3 $2 to start the third spindle. ”$” was chosen │ │ │ │ │ to avoid clashes with any existing code letters. It should be possible to create custom G-codes to │ │ │ │ │ match any other multi-spindle controller. See the G-code and M-code manuals for code changes, and │ │ │ │ │ @@ -1613,15 +1613,15 @@ │ │ │ │ │ │ │ │ │ │ HAL file: │ │ │ │ │ │ │ │ │ │ loadrt [KINS]KINEMATICS │ │ │ │ │ │ │ │ │ │ haltcl file: loadrt $::KINS(KINEMATICS) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.6 Lathe Configurations │ │ │ │ │ Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation │ │ │ │ │ configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for │ │ │ │ │ homing the unused Y coordinate. These arrangements are no longer required or recommended. │ │ │ │ │ @@ -1661,15 +1661,15 @@ │ │ │ │ │ │ │ │ │ │ Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters: │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XZ │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 2 │ │ │ │ │ [TRAJ]COORDINATES = XZ │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 55 │ │ │ │ │ │ │ │ │ │ Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint │ │ │ │ │ positioning (for homing): │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ @@ -1717,15 +1717,15 @@ │ │ │ │ │ [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer │ │ │ │ │ │ │ │ │ │ Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe │ │ │ │ │ [JOINT_N]LOCKING_INDEXER = 1 │ │ │ │ │ │ │ │ │ │ HAL pins can be created to coordinate use of a locking indicator joint: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 55 │ │ │ │ │ │ │ │ │ │ joint.N.unlock │ │ │ │ │ (BIT output from HAL) │ │ │ │ │ joint.N.is-unlocked (BIT input to │ │ │ │ │ HAL) │ │ │ │ │ @@ -1767,15 +1767,15 @@ │ │ │ │ │ For example, lines like this will no longer be accepted: │ │ │ │ │ MAX_VELOCITY = 7.5 # This is the max velocity of the axis. │ │ │ │ │ │ │ │ │ │ They could be transformed into pairs of lines like this: │ │ │ │ │ # This is the max velocity of the axis. │ │ │ │ │ MAX_VELOCITY = 7.5 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.11 [TRAJ] settings │ │ │ │ │ In 2.7.x versions, trajectory planning ([TRAJ]) settings included: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_ACCELERATION │ │ │ │ │ @@ -1843,15 +1843,15 @@ │ │ │ │ │ axis.L.jog-vel-mode │ │ │ │ │ │ │ │ │ │ where N is a joint number and L is an axis letter. │ │ │ │ │ To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint │ │ │ │ │ number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example, │ │ │ │ │ if joint 1 corresponds exactly to axis letter y: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 55 │ │ │ │ │ │ │ │ │ │ net jora_1_y_enable │ │ │ │ │ => joint.1.jog-enable => axis.y.jog-enable │ │ │ │ │ net jora_1_y_scale │ │ │ │ │ => joint.1.jog-scale => axis.y.jog-scale │ │ │ │ │ @@ -1911,15 +1911,15 @@ │ │ │ │ │ 5.6.1 halcompile │ │ │ │ │ The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt) │ │ │ │ │ the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names= │ │ │ │ │ items for userspace (loadusr) components. │ │ │ │ │ For components using personality, the maximum number is now settable by a command line option │ │ │ │ │ -P|--personalities. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 55 │ │ │ │ │ │ │ │ │ │ 5.6.2 Parameter to Pin changes │ │ │ │ │ The following HAL output pins were changed from parameters to pins so that they can be connected │ │ │ │ │ to signals: │ │ │ │ │ motion.servo.last-period │ │ │ │ │ @@ -1953,15 +1953,15 @@ │ │ │ │ │ homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode │ │ │ │ │ and axis jogging (coordinate letter X,Y,…) is used. This is appropriate for all G-code moves requested │ │ │ │ │ by MDI commands or by G-code programs. │ │ │ │ │ Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide │ │ │ │ │ a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that │ │ │ │ │ use non-IDENTITY kinematics. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 55 │ │ │ │ │ │ │ │ │ │ In many common situations, joint jogging is never needed since homing is accomplished using home │ │ │ │ │ switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine, │ │ │ │ │ issues the Home-All command, the machine homes and changes to world mode automatically. See │ │ │ │ │ Homing Configuration. │ │ │ │ │ @@ -2008,15 +2008,15 @@ │ │ │ │ │ was: halui.jog.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ is: halui.joint.N.plus │ │ │ │ │ is: halui.joint.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 55 │ │ │ │ │ │ │ │ │ │ where N is a joint number (0 … num_noints-1) or selected for the joint selected by the halui.joint.N.select │ │ │ │ │ pins. │ │ │ │ │ 5.8.2.3 Additional pin renames │ │ │ │ │ The HAL pins for selected joints were renamed for consistency with related pins. │ │ │ │ │ @@ -2049,15 +2049,15 @@ │ │ │ │ │ 2. Preview Tab display of joints or axes according to joint or teleop mode │ │ │ │ │ 3. Preview Tab display of Home and Limit icons in joint mode │ │ │ │ │ 4. Preview Tab display of All-homed and Any-limit icons in teleop mode │ │ │ │ │ 5. DRO Tab display of joint or axes according to joint or teleop mode │ │ │ │ │ 6. Jogging is supported in both joint and teleop motion modes. │ │ │ │ │ 7. External changes to the joint/teleop motion mode are detected. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 55 │ │ │ │ │ │ │ │ │ │ 5.8.3.4 Home icons │ │ │ │ │ For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a │ │ │ │ │ joint is homed. │ │ │ │ │ For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint │ │ │ │ │ @@ -2092,15 +2092,15 @@ │ │ │ │ │ commands have been simplified to use an argument that is just the coordinate letter. │ │ │ │ │ Commands now using a coordinate letter argument are: │ │ │ │ │ 1. emc_pos_offset │ │ │ │ │ 2. emc_abs_cmd_pos │ │ │ │ │ 3. emc_abs_act_pos │ │ │ │ │ 4. emc_rel_cmd_pos │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 55 │ │ │ │ │ │ │ │ │ │ 5. emc_rel_act_pos │ │ │ │ │ 6. emc_tool_offset │ │ │ │ │ 7. emc_probed_pos │ │ │ │ │ │ │ │ │ │ @@ -2139,15 +2139,15 @@ │ │ │ │ │ is: set jog_stop joint_number|axis_letter │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Test for teleop mode using command: get teleop_enable │ │ │ │ │ If TELEOP_ENABLE=YES, use axis_letter; │ │ │ │ │ Else use joint_number │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 55 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234 │ │ │ │ │ in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided │ │ │ │ │ the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding │ │ │ │ │ @@ -2177,15 +2177,15 @@ │ │ │ │ │ │ │ │ │ │ 5.12 Simulator configurations (updates for joints axes 2.8.x) │ │ │ │ │ 5.12.1 Pre-joints_axes │ │ │ │ │ Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common │ │ │ │ │ milling machine — a Cartesian system with trivial kinematics and three axes named X Y Z. Typical │ │ │ │ │ HAL file entries: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 55 │ │ │ │ │ │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = core_sim.hal │ │ │ │ │ HALFILE = sim_spindle_encoder.hal │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ @@ -2225,15 +2225,15 @@ │ │ │ │ │ Omitting one or more of the core functions allows testing without without the function or addition of │ │ │ │ │ new HALFILEs to implement or expand on the functionality. │ │ │ │ │ 5.12.2.1 Equivalent HAL commands file │ │ │ │ │ When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to │ │ │ │ │ show the halcmd commands issued. The file name is based on the name of the INI file with _cmds │ │ │ │ │ appended to the basename and a conventional .hal file extension. Example: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 55 │ │ │ │ │ │ │ │ │ │ inifilename: │ │ │ │ │ example.ini │ │ │ │ │ equivalent_halfilename: example_cmds.hal │ │ │ │ │ │ │ │ │ │ @@ -2265,15 +2265,15 @@ │ │ │ │ │ Commits to unreleased branches may make changes that affect testers and early-adopters of the │ │ │ │ │ unreleased software. │ │ │ │ │ │ │ │ │ │ 5.13.1 Motion pins │ │ │ │ │ New pins (see the motion man page for more info): │ │ │ │ │ --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction --- │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.2 HAL pins │ │ │ │ │ Name changes: │ │ │ │ │ was: axis.L.vel-cmd │ │ │ │ │ is: axis.l.teleop-vel-cmd │ │ │ │ │ @@ -2304,15 +2304,15 @@ │ │ │ │ │ 5.13.6 bldc3_hall │ │ │ │ │ The bldc_hall3 component has been removed. The bldc component is more flexible and better tested. │ │ │ │ │ │ │ │ │ │ 5.13.7 [JOINT_n]HOME_SEQUENCE Starting values │ │ │ │ │ Starting sequence values may be 0, 1 (or -1) only. See the ”Homing Configuration” documentation for │ │ │ │ │ more information. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.8 [JOINT_n]HOME_SEQUENCE Negative values │ │ │ │ │ Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent │ │ │ │ │ misalignment (racking) in common gantry configurations. As always, machines with any kinematics │ │ │ │ │ type must be homed prior to enabling conventional world mode jogging. │ │ │ │ │ @@ -2345,15 +2345,15 @@ │ │ │ │ │ │ │ │ │ │ 5.14.4 Configuration Updates │ │ │ │ │ 5.14.4.1 INI file Settings │ │ │ │ │ New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET — support encoder with index that does not │ │ │ │ │ reset upon receipt of index pulse following assertion of index_enable. │ │ │ │ │ axis.py default for [DISPLAY]GEOMETRY was:”XYZBCUVW”,is:”XYZABCUVW” │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5 Code Updates │ │ │ │ │ Management of the internal storage of tool data and the communication of same between EMCIO and │ │ │ │ │ TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata │ │ │ │ │ is deprecated and may be removed before a new release. │ │ │ │ │ @@ -2381,15 +2381,15 @@ │ │ │ │ │ A homing api is provided by src/emc/motion/homing.h to support users’ custom homing code that │ │ │ │ │ replaces src/emc/motion/homing.c with a user-customized homing.c file. │ │ │ │ │ 5.14.5.5 Motion │ │ │ │ │ The motion module supports kinematics modules that define new functions kinematicsSwitchable() │ │ │ │ │ and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided for use of such kinematics modules. │ │ │ │ │ Provided kinematics modules that implement kinematics switching use the switchkins.o object to supply the required rtapi_main() and related functions. Kinematics modules that do not support kinematics switching use the macro ”KINS_NOT_SWITCHABLE” provided by kinematics.h. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5.6 Switchkins Kinematics Modules │ │ │ │ │ Several kinematics modules are now switchable between their eponymous kinematics and an alternate │ │ │ │ │ identity kinematics mode. │ │ │ │ │ Kinematic modules supporting switchkins: │ │ │ │ │ @@ -2418,15 +2418,15 @@ │ │ │ │ │ lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified. │ │ │ │ │ lib/python/vismach.py: new HAL pin vismach.plotclear │ │ │ │ │ │ │ │ │ │ 5.14.6 HAL │ │ │ │ │ 5.14.6.1 Components │ │ │ │ │ sim_home_switch: added I/O pin for index-enable │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.6.2 Motion module pins │ │ │ │ │ motion.feed-upm — current feed in units per minute │ │ │ │ │ │ │ │ │ │ 5.14.7 Configs │ │ │ │ │ @@ -2436,15 +2436,15 @@ │ │ │ │ │ 5.14.7.2 Simulation Configs │ │ │ │ │ sim/configs/axis/axis_9axis: demonstrate simulated encoder index │ │ │ │ │ │ │ │ │ │ 5.15 Changes after 2.8.x │ │ │ │ │ Future versions of this document will take into account changes made to the development branch │ │ │ │ │ after the latest 2.8.x release. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 6 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -2478,15 +2478,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 55 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -2531,15 +2531,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 55 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -2582,15 +2582,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 55 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -2633,15 +2633,15 @@ │ │ │ │ │ Rapid │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum speed of the machine. It is often desirable to limit the rapid rate when testing a G-code │ │ │ │ │ program for the first time. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 55 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet │ │ │ │ │ these requirements it is necessary to install a realtime kernel such as RTAI and build the software │ │ │ │ │ to run in the special real-time environment. For this reason real-time software runs in kernelspace. │ │ │ │ │ @@ -2682,28 +2682,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 55 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 7 │ │ │ │ │ │ │ │ │ │ Legal Section │ │ │ │ │ Translations of this file provided in the source tree are not legally binding. │ │ │ │ │ @@ -2730,15 +2730,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 55 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any │ │ │ │ │ such manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -2787,15 +2787,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front │ │ │ │ │ cover must present the full title with all words of the title equally prominent and visible. You may add │ │ │ │ │ other material on the covers in addition. Copying with changes limited to the covers, as long as they │ │ │ │ │ preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying │ │ │ │ │ in other respects. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 55 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ 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 │ │ │ │ │ @@ -2841,15 +2841,15 @@ │ │ │ │ │ Version. N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any │ │ │ │ │ Invariant Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 55 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -2890,15 +2890,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 55 │ │ │ │ │ │ │ │ │ │ this 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 version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ @@ -2926,15 +2926,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 8 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ A │ │ │ │ │ @@ -3012,15 +3012,15 @@ │ │ │ │ │ RTAI, 47 │ │ │ │ │ RTAPI, 47 │ │ │ │ │ RTLINUX, 47 │ │ │ │ │ Running LinuxCNC, 15 │ │ │ │ │ S │ │ │ │ │ servo motor, 47 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Signed Integer, 47 │ │ │ │ │ spindle, 47 │ │ │ │ │ stepper motor, 47 │ │ │ │ │ System Requirements, 4 │ │ │ │ │ T │ │ │ │ │ TASK, 47 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Integrator Information │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Contents │ │ │ │ │ 1 Stepper Information │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ │ │ │ │ │ │ 18 │ │ │ │ │ │ │ │ │ │ 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 18 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 1 │ │ │ │ │ │ │ │ │ │ Stepper Information │ │ │ │ │ 1.1 Stepper Motor Operation │ │ │ │ │ @@ -154,15 +154,15 @@ │ │ │ │ │ the time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing │ │ │ │ │ the overall torque. This relationship between speed and torque is largely inversely proportional. │ │ │ │ │ In the below example, the charging time for three coils is shown when the applied voltage is stepped │ │ │ │ │ from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time │ │ │ │ │ taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full │ │ │ │ │ current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again: │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 18 │ │ │ │ │ │ │ │ │ │ If the rate at which step changes are applied to the coils is significantly shorter than the rise time, │ │ │ │ │ it’s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus │ │ │ │ │ maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before │ │ │ │ │ the step voltage is removed, but the 4 mH and 8 mH coils cannot: │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several │ │ │ │ │ orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor │ │ │ │ │ may have a rating of only a handful of volts, yet the power supply and driver could be operating at │ │ │ │ │ 48 VDC or more. │ │ │ │ │ Nearly all modern stepper motor drivers on the market today are constant-current types. That is, │ │ │ │ │ the current being applied to each winding is fixed irrespective of how much voltage is being applied. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 18 │ │ │ │ │ │ │ │ │ │ Most drivers accomplish this by monitoring the current being drawn through the motor windings and │ │ │ │ │ rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending │ │ │ │ │ on the drivers being used, it may even be possible to hear this high frequency whistling in the motors │ │ │ │ │ themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding │ │ │ │ │ @@ -234,15 +234,15 @@ │ │ │ │ │ introduced. │ │ │ │ │ Several methods exist to help control the effects of resonance, all with varying degrees of complexity, │ │ │ │ │ effectiveness and side effects: │ │ │ │ │ • Microstepping can help reduce resonance by using smaller step changes in current between each │ │ │ │ │ step. These smaller step changes cause less ringing in the motor and windings and thus cause less │ │ │ │ │ excitation at the point of resonance. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 18 │ │ │ │ │ │ │ │ │ │ • Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic │ │ │ │ │ method of reducing resonance, always accelerating or decelerating through the resonant peak. │ │ │ │ │ • 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. │ │ │ │ │ @@ -281,15 +281,15 @@ │ │ │ │ │ in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper │ │ │ │ │ motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely │ │ │ │ │ meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with │ │ │ │ │ leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees │ │ │ │ │ of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain │ │ │ │ │ the necessary resolution and torque gains. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 18 │ │ │ │ │ │ │ │ │ │ 1.5 Open and Closed Loop │ │ │ │ │ In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver │ │ │ │ │ receives no feedback from the motor that it has achieved the desired outcome when commanded to │ │ │ │ │ begin stepping. The assumption by the software, driver and end user is that the motor operated │ │ │ │ │ @@ -309,15 +309,15 @@ │ │ │ │ │ to the downstream driver as it would normally when running in open loop. In these situations the │ │ │ │ │ drivers usually include an alarm output which signals the software to halt when the load placed on │ │ │ │ │ the stepper becomes too great for the driver to compensate without losing steps. │ │ │ │ │ More advanced implementations of closed loop operation bring the encoder signal all the way back │ │ │ │ │ to the host computer, but require that a much higher hardware and software overhead be installed to │ │ │ │ │ manage the encoder feedback and calculation and delivery of drive compensation. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 2 │ │ │ │ │ │ │ │ │ │ Stepper Timing │ │ │ │ │ This page is for step and direction timing of stepper drives. │ │ │ │ │ @@ -380,15 +380,15 @@ │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ │ │ │ │ │ 1000 │ │ │ │ │ │ │ │ │ │ Falling │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 202 │ │ │ │ │ │ │ │ │ │ @@ -480,15 +480,15 @@ │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g212rev15.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g213vrev7.html │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 320 │ │ │ │ │ │ │ │ │ │ @@ -625,15 +625,15 @@ │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_manual.pdf │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.piclist.com/techref/io/stepper/linistep/index.htm │ │ │ │ │ http://www.piclist.com/techref/io/stepper/THB6064/index.htm │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ *Motion │ │ │ │ │ Control │ │ │ │ │ │ │ │ │ │ MSD542 │ │ │ │ │ @@ -857,15 +857,15 @@ │ │ │ │ │ http://www.kelinginc.net/kL6852.pdf │ │ │ │ │ https://www.sherline.com/- │ │ │ │ │ │ │ │ │ │ http://www.lewetz.de/download/ibstep3se.pdf │ │ │ │ │ http://www.compumotor.com │ │ │ │ │ manuals/ZETA/ZETA_Rev_A_Entire.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ www.cncdrive.com │ │ │ │ │ Dugong │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ @@ -1104,15 +1104,15 @@ │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM503d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM705d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM806d_P.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M415Bm.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M542V2m.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M752m.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ Time │ │ │ │ │ 1500 │ │ │ │ │ @@ -1291,15 +1291,15 @@ │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ Rising │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ http://cnc4you.co.uk/resources/CW5045.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 3 │ │ │ │ │ │ │ │ │ │ Best Wiring Practices │ │ │ │ │ 3.1 Electrical Noise │ │ │ │ │ @@ -1328,15 +1328,15 @@ │ │ │ │ │ this discussion the terms earth and common must be made distinct from each other to avoid confusion. │ │ │ │ │ │ │ │ │ │ 3.3 Wire Selection and Use │ │ │ │ │ Wire comes in many types, sizes and configurations. Wading through all the wire available is a monumental task of its own, but for the purposes of this article it is only necessary to consider the types of │ │ │ │ │ wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have │ │ │ │ │ some effect on the overall system. What follows are some tips that may prove helpful. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 18 │ │ │ │ │ │ │ │ │ │ 3.3.1 Single Conductor Wire │ │ │ │ │ Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than │ │ │ │ │ stranded, but more likely to break if used in applications where repeated bending is expected. Fortunately, the prevalence of stranded wire on the market means that its use should be encouraged │ │ │ │ │ wherever possible. │ │ │ │ │ @@ -1377,15 +1377,15 @@ │ │ │ │ │ is more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded │ │ │ │ │ types. Coverage is typically 70% to 95% depending on how tight the braid has been constructed. │ │ │ │ │ Despite the lower coverage of braided shield, the effectiveness is greater than foil shielding due to │ │ │ │ │ the increased bulk of the braid, and copper being a better conductor than aluminum. │ │ │ │ │ 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 │ │ │ │ │ jacket. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 18 │ │ │ │ │ │ │ │ │ │ 3.4 AC Line Voltage │ │ │ │ │ The incoming mains AC that powers the CNC system can pick up and carry noise into the power │ │ │ │ │ supplies and other equipment. For example, if the incoming supply is also used to feed large motors, │ │ │ │ │ electrical noise may be generated on the line feeding the CNC components. Although most modern │ │ │ │ │ @@ -1423,15 +1423,15 @@ │ │ │ │ │ supply may have optically-isolated signal input lines which provide complete electrical separation of │ │ │ │ │ the driver’s input and output circuitry for safety and noise immunity purposes. Tying the stepper │ │ │ │ │ motor and logic control supply commons together in this case may have a detrimental impact on the │ │ │ │ │ operation of the system. │ │ │ │ │ In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system │ │ │ │ │ separate from each other, and separate from the AC mains earth unless there is a specific requirement │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 18 │ │ │ │ │ │ │ │ │ │ to tie them together. In most cases the common points of the heavy-duty power sections of the CNC │ │ │ │ │ system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common │ │ │ │ │ points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool │ │ │ │ │ probe circuitry etc) to prevent cross-contamination of the two systems. │ │ │ │ │ @@ -1471,15 +1471,15 @@ │ │ │ │ │ electrically hostile environments. When grounding the shield in the cable, terminate to the mains │ │ │ │ │ earth. │ │ │ │ │ If the controller and interfacing devices can withstand higher control signals, consider altering the │ │ │ │ │ wiring and power supply requirements to use a bigger voltage for signaling (eg, 12V or 24V). The │ │ │ │ │ same 2V EMI noise spike that could corrupt a 3.3V limit switch signal will be far less likely to cause │ │ │ │ │ issues with a limit switch operating with a 24V signal. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 18 │ │ │ │ │ │ │ │ │ │ 3.8 Stepper or Servo Motor Drivers │ │ │ │ │ The metal housing of the driver should be connected to the local mains earth in the CNC system. │ │ │ │ │ Some driver enclosures will indicate a specific terminal as being the earthing point, in which case this │ │ │ │ │ point must be connected to earth via a dedicated wire. │ │ │ │ │ @@ -1514,15 +1514,15 @@ │ │ │ │ │ each other has the tendency to exacerbate EMI interference. Separate conductors by as much distance as possible. If two conductors must cross over each other make the crossing as close to a 90 │ │ │ │ │ degree angle as possible. │ │ │ │ │ Avoid long loops of excess wire at any peripheral devices - they are great antennas for receiving or │ │ │ │ │ transmitting noise. Where possible, run wires in close proximity to large earthed structures. If the │ │ │ │ │ controller enclosure features a large metallic back plate that is earthed, secure all control wiring │ │ │ │ │ against this surface as much as possible while wiring between two points. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 18 │ │ │ │ │ │ │ │ │ │ 3.11 Mechanical Noise │ │ │ │ │ Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly │ │ │ │ │ when operated. More often than not the switch contacts will physically bounce against each other │ │ │ │ │ several times within a very short space of time when operated. This may be interpreted by the machine │ │ │ │ │ @@ -1556,15 +1556,15 @@ │ │ │ │ │ │ │ │ │ │ 3.12.1 Hardware Documentation │ │ │ │ │ At a minimum, make sure to save any documentation associated with the installed hardware in a safe │ │ │ │ │ place. Stepper controllers, break out boards, power supplies, VFDs, interfaces and controllers, servo │ │ │ │ │ and stepper drivers and any associated device settings are all critical components of the system and │ │ │ │ │ their documentation should be kept at hand for easy reference. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 18 │ │ │ │ │ │ │ │ │ │ 3.12.2 Wiring Schematics │ │ │ │ │ As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The │ │ │ │ │ schematic does not have to be all that neat, but it should be understandable in such a way that it │ │ │ │ │ could be easily interpreted at a later date, ideally by anyone who may need to service the equipment. │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Manual_Pages.pdf │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -5855,15 +5855,15 @@ │ │ │ │ │ Modbus slave address │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPLv2 or greater │ │ │ │ │ │ │ │ │ │ 122 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ pmx485-test(1) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ @@ -7515,15 +7515,15 @@ │ │ │ │ │ Computed resistance of the thermistor. │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 161 │ │ │ │ │ │ │ │ │ │ TOOLEDIT(1) │ │ │ │ │ │ │ │ │ │ The Enhanced Machine Controller │ │ │ │ │ │ │ │ │ │ @@ -8073,15 +8073,15 @@ │ │ │ │ │ Modbus slave address │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPLv2 or greater │ │ │ │ │ │ │ │ │ │ 172 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ XHC-HB04-ACCELS(1) │ │ │ │ │ │ │ │ │ │ The Enhanced Machine Controller │ │ │ │ │ │ │ │ │ │ @@ -12442,15 +12442,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 265 │ │ │ │ │ │ │ │ │ │ ABS_S32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12481,15 +12481,15 @@ │ │ │ │ │ Sebastian Kuzminsky │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 266 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ AND2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12521,15 +12521,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 267 │ │ │ │ │ │ │ │ │ │ ANGLEJOG(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12573,15 +12573,15 @@ │ │ │ │ │ anglejog.N.max-vel float in │ │ │ │ │ vector max velocity magnitude │ │ │ │ │ anglejog.N.max-accel float in │ │ │ │ │ vector max acceleration magnitude │ │ │ │ │ │ │ │ │ │ 268 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ ANGLEJOG(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12616,15 +12616,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 269 │ │ │ │ │ │ │ │ │ │ AT_PID(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12692,15 +12692,15 @@ │ │ │ │ │ Chris S. Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 271 │ │ │ │ │ │ │ │ │ │ BIN2GRAY(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12728,15 +12728,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 272 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ BIQUAD(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12790,15 +12790,15 @@ │ │ │ │ │ biquad.N.n1 float rw (default: 0.0) │ │ │ │ │ 1st-delayed numerator coef │ │ │ │ │ biquad.N.n2 float rw (default: 0.0) │ │ │ │ │ 2nd-delayed numerator coef │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 273 │ │ │ │ │ │ │ │ │ │ BIQUAD(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12808,15 +12808,15 @@ │ │ │ │ │ Peter G. Vavaroutsos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 274 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ BITSLICE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12845,15 +12845,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL2+ │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 275 │ │ │ │ │ │ │ │ │ │ BITWISE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12890,15 +12890,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL 2+ │ │ │ │ │ │ │ │ │ │ 276 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12940,15 +12940,15 @@ │ │ │ │ │ H Emulated Hall sensor output. This mode can be used to control a drive which expects 3x Hall signals, or │ │ │ │ │ to convert between a motor with one hall pattern and a drive which expects a different one. │ │ │ │ │ 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. │ │ │ │ │ T Force Trapezoidal mode. │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 277 │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -12996,15 +12996,15 @@ │ │ │ │ │ bldc.N.C8 bit in [if ( personality & 0x10 )] │ │ │ │ │ Fanuc Gray-code bit 3 input │ │ │ │ │ bldc.N.value float in │ │ │ │ │ PWM master amplitude input │ │ │ │ │ │ │ │ │ │ 278 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13051,15 +13051,15 @@ │ │ │ │ │ bldc.N.A-high float out [if ( personality & 0xF00 ) == 0x200] │ │ │ │ │ High-side driver for phase A │ │ │ │ │ bldc.N.B-high float out [if ( personality & 0xF00 ) == 0x200] │ │ │ │ │ High-side driver for phase B │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 279 │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13108,15 +13108,15 @@ │ │ │ │ │ offset such as the 8I20. This value has a range of 0 to 1 and measures electrical revolutions. It will │ │ │ │ │ have two zeros for a 4 pole motor, three for a 6-pole, etc. │ │ │ │ │ bldc.N.out float out │ │ │ │ │ Current output, including the effect of the dir pin and the alignment sequence. │ │ │ │ │ │ │ │ │ │ 280 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13153,15 +13153,15 @@ │ │ │ │ │ Bodine). 22 (240 degree). 25 (60 degree commutation). │ │ │ │ │ Note that a number of incorrect commutations will have non-zero net torque which might look as │ │ │ │ │ if they work, but don’t really. │ │ │ │ │ If your motor lacks documentation it might be worth trying every pattern. │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 281 │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13461,15 +13461,15 @@ │ │ │ │ │ 001 │ │ │ │ │ 101 │ │ │ │ │ 011 │ │ │ │ │ 001 │ │ │ │ │ 000 │ │ │ │ │ 100 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ BLDC(9) │ │ │ │ │ │ │ │ │ │ B-C │ │ │ │ │ 100 │ │ │ │ │ 101 │ │ │ │ │ 100 │ │ │ │ │ @@ -13531,15 +13531,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 283 │ │ │ │ │ │ │ │ │ │ BLEND(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13573,15 +13573,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 284 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CAROUSEL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13625,15 +13625,15 @@ │ │ │ │ │ and ’edge’ mode this is when both the index and pulse inputs are true. In ’counts’ mode only the index input needs to be set to set home. Additionally in ’counts’ mode the usual index-enable logic of the encoder │ │ │ │ │ counters is supported. │ │ │ │ │ With some carousel designs the carousel will not stop immediately. To allow for this set the lign-dc pin to a │ │ │ │ │ low velocity to be used for a final latching move, and set thedecel-time to a suitable value. Once the decel- │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 285 │ │ │ │ │ │ │ │ │ │ CAROUSEL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13679,15 +13679,15 @@ │ │ │ │ │ The duration in seconds for which a ratchet changer (Boxford, Emco) should pulse the reverse pin │ │ │ │ │ to lock the holder │ │ │ │ │ carousel.N.fwd-dc float in │ │ │ │ │ Velocity or duty cycle when forwards rotation is desired │ │ │ │ │ │ │ │ │ │ 286 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CAROUSEL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13737,15 +13737,15 @@ │ │ │ │ │ carousel.N.homing bit r (default: 0) │ │ │ │ │ Shows that homing is in progress. Only used for index mode │ │ │ │ │ carousel.N.timer float r │ │ │ │ │ Shows the value of the internal timer │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 287 │ │ │ │ │ │ │ │ │ │ CAROUSEL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13760,15 +13760,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 288 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CHARGE_PUMP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13804,15 +13804,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 289 │ │ │ │ │ │ │ │ │ │ CLARKE2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13850,15 +13850,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 290 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CLARKE3(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13897,15 +13897,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 291 │ │ │ │ │ │ │ │ │ │ CLARKEINV(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -13943,15 +13943,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 292 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CLASSICLADDER(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14067,15 +14067,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 295 │ │ │ │ │ │ │ │ │ │ CONSTANT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14100,15 +14100,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 296 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_BIT_FLOAT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14132,15 +14132,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 297 │ │ │ │ │ │ │ │ │ │ CONV_BIT_S32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14164,15 +14164,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 298 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_BIT_U32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14196,15 +14196,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 299 │ │ │ │ │ │ │ │ │ │ CONV_FLOAT_S32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14234,15 +14234,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 300 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_FLOAT_U32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14272,15 +14272,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 301 │ │ │ │ │ │ │ │ │ │ CONV_S32_BIT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14310,15 +14310,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 302 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_S32_FLOAT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14342,15 +14342,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 303 │ │ │ │ │ │ │ │ │ │ CONV_S32_U32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14380,15 +14380,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 304 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_U32_BIT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14418,15 +14418,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 305 │ │ │ │ │ │ │ │ │ │ CONV_U32_FLOAT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14450,15 +14450,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 306 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ CONV_U32_S32(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14488,15 +14488,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 307 │ │ │ │ │ │ │ │ │ │ COREXY_BY_HAL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14540,15 +14540,15 @@ │ │ │ │ │ corexy-by-hal.N.alpha-cmd float out │ │ │ │ │ typ: command to alpha motor │ │ │ │ │ corexy-by-hal.N.beta-cmd float out │ │ │ │ │ typ: command to beta ts motor │ │ │ │ │ │ │ │ │ │ 308 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ COREXY_BY_HAL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14558,15 +14558,15 @@ │ │ │ │ │ Dewey Garrett based on forum post from nbremond │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 309 │ │ │ │ │ │ │ │ │ │ COUNTER(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14647,15 +14647,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 311 │ │ │ │ │ │ │ │ │ │ DDT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14687,15 +14687,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 312 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ DEADZONE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14725,15 +14725,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 313 │ │ │ │ │ │ │ │ │ │ DEBOUNCE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14815,15 +14815,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL 2+ │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 315 │ │ │ │ │ │ │ │ │ │ DIFFERENTIAL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14860,15 +14860,15 @@ │ │ │ │ │ Sebastian Kuzminsky │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 316 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ DIV2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14907,15 +14907,15 @@ │ │ │ │ │ Noel Rodes │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 317 │ │ │ │ │ │ │ │ │ │ EDGE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -14953,15 +14953,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 318 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ ENCODER(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15214,15 +15214,15 @@ │ │ │ │ │ eoffset-per-angle.N.rfraction float in (default: 0.1) │ │ │ │ │ Offset amplitude (+/- fraction of radius_ref) │ │ │ │ │ eoffset-per-angle.N.fmult float in (default: 6) │ │ │ │ │ Offset frequency multiplier │ │ │ │ │ │ │ │ │ │ 324 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ EOFFSET_PER_ANGLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15259,15 +15259,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 325 │ │ │ │ │ │ │ │ │ │ ESTOP_LATCH(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15329,15 +15329,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 326 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ FEEDCOMP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15373,15 +15373,15 @@ │ │ │ │ │ Eric H. Johnson │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 327 │ │ │ │ │ │ │ │ │ │ FILTER_KALMAN(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15431,30 +15431,30 @@ │ │ │ │ │ Estimation of the noise covariances (observation). │ │ │ │ │ │ │ │ │ │ AUTHOR │ │ │ │ │ Dmian Wrobel │ │ │ │ │ │ │ │ │ │ 328 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ FILTER_KALMAN(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ FILTER_KALMAN(9) │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL-2.0-or-later │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 329 │ │ │ │ │ │ │ │ │ │ FLIPFLOP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15487,15 +15487,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 330 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ GANTRY(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15551,15 +15551,15 @@ │ │ │ │ │ Charles Steinkuehler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 331 │ │ │ │ │ │ │ │ │ │ GANTRYKINS(9) │ │ │ │ │ │ │ │ │ │ Kinematics Module │ │ │ │ │ │ │ │ │ │ @@ -15626,15 +15626,15 @@ │ │ │ │ │ Stephen Wille Padnos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 333 │ │ │ │ │ │ │ │ │ │ GENTRIVKINS(9) │ │ │ │ │ │ │ │ │ │ Kernel Developer’s Manual │ │ │ │ │ │ │ │ │ │ @@ -15712,15 +15712,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 336 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ hal_bb_gpio(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15842,15 +15842,15 @@ │ │ │ │ │ histobins.N.nbins u32 in (default: 20) │ │ │ │ │ histobins.N.binsize float in (default: 1) │ │ │ │ │ histobins.N.minvalue float in (default: 0) │ │ │ │ │ histobins.N.index s32 in │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 339 │ │ │ │ │ │ │ │ │ │ HISTOBINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -15874,15 +15874,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 340 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ HM2_7I43(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -16460,15 +16460,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 353 │ │ │ │ │ │ │ │ │ │ HOSTMOT2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -17818,15 +17818,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 381 │ │ │ │ │ │ │ │ │ │ ILOWPASS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -17868,15 +17868,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 382 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ INTEG(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -17905,15 +17905,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 383 │ │ │ │ │ │ │ │ │ │ INVERT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -17947,15 +17947,15 @@ │ │ │ │ │ Stephen Wille Padnos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 384 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ JOYHANDLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -17999,15 +17999,15 @@ │ │ │ │ │ Paul Willutzki │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 385 │ │ │ │ │ │ │ │ │ │ KINS(9) │ │ │ │ │ │ │ │ │ │ Kinematics Modules │ │ │ │ │ │ │ │ │ │ @@ -18330,15 +18330,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 392 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LATENCYBINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18393,30 +18393,30 @@ │ │ │ │ │ latencybins.N.availablebins s32 out (default: 1000) │ │ │ │ │ │ │ │ │ │ AUTHOR │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 393 │ │ │ │ │ │ │ │ │ │ LATENCYBINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ LATENCYBINS(9) │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 394 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LCD(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18581,15 +18581,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 398 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LIMIT2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18618,15 +18618,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 399 │ │ │ │ │ │ │ │ │ │ LIMIT3(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18662,15 +18662,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 400 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LINCURVE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18715,15 +18715,15 @@ │ │ │ │ │ Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 401 │ │ │ │ │ │ │ │ │ │ LINEARDELTAKINS(9) │ │ │ │ │ │ │ │ │ │ Kinematics Component │ │ │ │ │ │ │ │ │ │ @@ -18830,15 +18830,15 @@ │ │ │ │ │ This is a named AND circuit with two inputs and one output. │ │ │ │ │ loadrt logic names=both personality=0x102 │ │ │ │ │ addf both servo-thread │ │ │ │ │ net sig-in-0 => both.in-00 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 403 │ │ │ │ │ │ │ │ │ │ LOGIC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18854,15 +18854,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 404 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LOWPASS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18911,15 +18911,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 405 │ │ │ │ │ │ │ │ │ │ LUT5(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -18947,15 +18947,15 @@ │ │ │ │ │ 0xfffffffe. Because every weight except 0x1 is true the function is the sum of every line except the first one. │ │ │ │ │ A 2-input xor function is TRUE whenever exactly one of the inputs is true, so the correct value for function │ │ │ │ │ is 0x6. Only in-0 and in-1 should be connected to signals, because if any other bit is TRUE then the output │ │ │ │ │ will be FALSE. │ │ │ │ │ │ │ │ │ │ 406 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ LUT5(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19177,15 +19177,15 @@ │ │ │ │ │ lut5.N.function u32 rw │ │ │ │ │ │ │ │ │ │ SEE ALSO │ │ │ │ │ and(9), logic(9), not(9), or2(9), xor2(9). │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 407 │ │ │ │ │ │ │ │ │ │ LUT5(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19195,15 +19195,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 408 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MAJ3(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19231,15 +19231,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 409 │ │ │ │ │ │ │ │ │ │ MATCH8(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19280,15 +19280,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 410 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MATRIX_KB(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19413,15 +19413,15 @@ │ │ │ │ │ max31855.N.fault.M bit out (M=0..( personality & 0xf )) │ │ │ │ │ Fault condition detected. │ │ │ │ │ max31855.N.fault-flags.M u32 out (M=0..( personality & 0xf )) │ │ │ │ │ Fault flags: 0x1 = open sensor, 0x2 short to gnd, 0x3 short to vcc. │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 413 │ │ │ │ │ │ │ │ │ │ MAX31855(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19431,15 +19431,15 @@ │ │ │ │ │ Joseph Calderon │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 414 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MESA_7I65(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19482,15 +19482,15 @@ │ │ │ │ │ Andy Pugh / Cliff Blackburn │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 415 │ │ │ │ │ │ │ │ │ │ MESA_PKTGYRO_TEST(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19534,15 +19534,15 @@ │ │ │ │ │ Boris Skegin │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 416 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MESA_UART(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19588,25 +19588,25 @@ │ │ │ │ │ Andy Pugh andy@bodgesoc.org │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 417 │ │ │ │ │ │ │ │ │ │ MESA_UART(9) │ │ │ │ │ │ │ │ │ │ 418 │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ MESA_UART(9) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MESSAGE(9) │ │ │ │ │ │ │ │ │ │ @@ -19656,15 +19656,15 @@ │ │ │ │ │ Les Newell │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL v2 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 419 │ │ │ │ │ │ │ │ │ │ MILLTURN(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19698,15 +19698,15 @@ │ │ │ │ │ David Mueller │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 420 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MINMAX(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -19732,15 +19732,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 421 │ │ │ │ │ │ │ │ │ │ MOTION(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20290,15 +20290,15 @@ │ │ │ │ │ soft limits are not honored, an offset move may encounter hard limits (or CRASH if there are no limit │ │ │ │ │ switches). Use of the offset-min-M and offset-max-M inputs to limit travel is recommended. Triggering a │ │ │ │ │ hard limit will turn off the machine -- see Caution above. │ │ │ │ │ The offset-in-M values may be set with inifile settings, controlled by a GUI, or managed by other HAL │ │ │ │ │ │ │ │ │ │ 434 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MOVEOFF(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20343,15 +20343,15 @@ │ │ │ │ │ moveoff.N.offset-applied bit out │ │ │ │ │ TRUE if one or more offsets are applied. │ │ │ │ │ moveoff.N.waypoint-limit bit out (default: 0) │ │ │ │ │ Indicates waypoint limit reached (motion ceases), an enabling pin must be deasserted to initiate return to original position. │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 435 │ │ │ │ │ │ │ │ │ │ MOVEOFF(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20398,15 +20398,15 @@ │ │ │ │ │ Dewey Garrett and Andy Pugh │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 436 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MULT2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20434,15 +20434,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 437 │ │ │ │ │ │ │ │ │ │ MULTICLICK(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20491,15 +20491,15 @@ │ │ │ │ │ │ │ │ │ │ PARAMETERS │ │ │ │ │ multiclick.N.invert-input bit rw (default: FALSE) │ │ │ │ │ If FALSE (the default), clicks start with rising edges. If TRUE, clicks start with falling edges. │ │ │ │ │ │ │ │ │ │ 438 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MULTICLICK(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20518,15 +20518,15 @@ │ │ │ │ │ Sebastian Kuzminsky │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 439 │ │ │ │ │ │ │ │ │ │ MULTISWITCH(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20563,15 +20563,15 @@ │ │ │ │ │ ArcEye schooner30@tiscali.co.uk / Andy Pugh andy@bodgesoc.org │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 440 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MUX16(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20620,25 +20620,25 @@ │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 441 │ │ │ │ │ │ │ │ │ │ MUX16(9) │ │ │ │ │ │ │ │ │ │ 442 │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ MUX16(9) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MUX2(9) │ │ │ │ │ │ │ │ │ │ @@ -20666,15 +20666,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 443 │ │ │ │ │ │ │ │ │ │ MUX4(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20712,15 +20712,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 444 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ MUX8(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20771,15 +20771,15 @@ │ │ │ │ │ Stuart Stevenson │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 445 │ │ │ │ │ │ │ │ │ │ MUX_GENERIC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20890,15 +20890,15 @@ │ │ │ │ │ Chris Radek │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 448 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ NOT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20924,15 +20924,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 449 │ │ │ │ │ │ │ │ │ │ OFFSET(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -20966,15 +20966,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 450 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ OHMIC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21027,15 +21027,15 @@ │ │ │ │ │ ohmic.N.arc-on bit out │ │ │ │ │ True if full scale (eg arc is on) │ │ │ │ │ ohmic.N.thcad-volts float out │ │ │ │ │ Measured thcad voltage │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 451 │ │ │ │ │ │ │ │ │ │ OHMIC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21073,15 +21073,15 @@ │ │ │ │ │ Rod Webster │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 452 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ ONESHOT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21128,15 +21128,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 453 │ │ │ │ │ │ │ │ │ │ OPTO_AC5(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21239,15 +21239,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 456 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ ORIENT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21296,15 +21296,15 @@ │ │ │ │ │ orient.N.angle float in │ │ │ │ │ orient target position in degrees, 0 <= angle < 360 │ │ │ │ │ orient.N.command float out │ │ │ │ │ target spindle position, input to PID command │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 457 │ │ │ │ │ │ │ │ │ │ ORIENT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21321,15 +21321,15 @@ │ │ │ │ │ Michael Haberler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 458 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ PID(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21692,15 +21692,15 @@ │ │ │ │ │ plasmac.arc-voltage-offset float in │ │ │ │ │ offset to set arc voltage to 0 at 0 volts │ │ │ │ │ plasmac.arc-voltage-scale float in │ │ │ │ │ scale to convert arc_voltage input to actual volts │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 465 │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21749,15 +21749,15 @@ │ │ │ │ │ plasmac.debug-print bit in │ │ │ │ │ if true will print state changes as a debug aid │ │ │ │ │ plasmac.external-estop bit in │ │ │ │ │ external E-stop input │ │ │ │ │ │ │ │ │ │ 466 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21806,15 +21806,15 @@ │ │ │ │ │ plasmac.mesh-arc-ok bit in (default: FALSE) │ │ │ │ │ don’t require arc ok for mesh mode │ │ │ │ │ plasmac.mesh-enable bit in │ │ │ │ │ enable mesh cutting mode │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 467 │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21863,15 +21863,15 @@ │ │ │ │ │ plasmac.paused-motion-speed float in │ │ │ │ │ multiplier for speed of motion when paused, from -1 to 1 │ │ │ │ │ plasmac.pid-d-gain float in │ │ │ │ │ derivative gain input [mode 0 & mode 1] │ │ │ │ │ │ │ │ │ │ 468 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21920,15 +21920,15 @@ │ │ │ │ │ plasmac.scribe-start bit in │ │ │ │ │ start a new scribe, connect to spindle.1.on │ │ │ │ │ plasmac.setup-feed-rate float in │ │ │ │ │ feed rate for moves to pierce and cut heights (machine units per minute) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 469 │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -21977,15 +21977,15 @@ │ │ │ │ │ plasmac.voidlock-slope s32 in (default: 500) │ │ │ │ │ voidlock slope in volts per second │ │ │ │ │ plasmac.x-offset s32 in │ │ │ │ │ offset to apply to axis x for consumable change and cut recovery (scaled units) │ │ │ │ │ │ │ │ │ │ 470 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22034,15 +22034,15 @@ │ │ │ │ │ plasmac.offset-scale float out │ │ │ │ │ offset scale, connect to axis..eoffset-scale │ │ │ │ │ plasmac.ohmic-enable bit out │ │ │ │ │ on only while probing │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 471 │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22091,15 +22091,15 @@ │ │ │ │ │ plasmac.torch-on bit out │ │ │ │ │ turn torch on, connect to your torch on input │ │ │ │ │ plasmac.torch-time float out │ │ │ │ │ torch on time of current job │ │ │ │ │ │ │ │ │ │ 472 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ PLASMAC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22136,15 +22136,15 @@ │ │ │ │ │ Phillip A Carter & Gregory D Carl │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPLv2 or greater │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 473 │ │ │ │ │ │ │ │ │ │ PWMGEN(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22304,15 +22304,15 @@ │ │ │ │ │ Stephen Wille Padnos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 477 │ │ │ │ │ │ │ │ │ │ SAMPLER(9) │ │ │ │ │ │ │ │ │ │ HAL User’s Manual │ │ │ │ │ │ │ │ │ │ @@ -22425,15 +22425,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 480 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SCALED_S32_SUMS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22468,15 +22468,15 @@ │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 481 │ │ │ │ │ │ │ │ │ │ SELECT8(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22504,15 +22504,15 @@ │ │ │ │ │ Stephen Wille Padnos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 482 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SERPORT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22562,15 +22562,15 @@ │ │ │ │ │ PARAMETERS │ │ │ │ │ serport.N.pin-3-out-invert bit rw │ │ │ │ │ serport.N.pin-4-out-invert bit rw │ │ │ │ │ serport.N.pin-7-out-invert bit rw │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 483 │ │ │ │ │ │ │ │ │ │ SERPORT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22579,15 +22579,15 @@ │ │ │ │ │ serport.N.ioaddr u32 r │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 484 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SETSERIAL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22818,15 +22818,15 @@ │ │ │ │ │ sim-axis-hardware.N.Zmaxsw-lower float in │ │ │ │ │ sim-axis-hardware.N.Amaxsw-lower float in │ │ │ │ │ sim-axis-hardware.N.Umaxsw-lower float in │ │ │ │ │ sim-axis-hardware.N.Vmaxsw-lower float in │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 489 │ │ │ │ │ │ │ │ │ │ SIM_AXIS_HARDWARE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22881,15 +22881,15 @@ │ │ │ │ │ sim-axis-hardware.N.Xmaxsw-out bit out │ │ │ │ │ Max limit switch │ │ │ │ │ sim-axis-hardware.N.Xminsw-out bit out │ │ │ │ │ min limit switch │ │ │ │ │ │ │ │ │ │ 490 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SIM_AXIS_HARDWARE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -22946,25 +22946,25 @@ │ │ │ │ │ sim-axis-hardware.N.Vminsw-homesw-out bit out │ │ │ │ │ sim-axis-hardware.N.Vbothsw-homesw-out bit out │ │ │ │ │ sim-axis-hardware.N.limit-offset float in (default: .01) │ │ │ │ │ how much the limit switches are offset from inputted position. added to max, subtracted from min │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 491 │ │ │ │ │ │ │ │ │ │ SIM_AXIS_HARDWARE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ SIM_AXIS_HARDWARE(9) │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ AUTHOR │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ @@ -23085,15 +23085,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 495 │ │ │ │ │ │ │ │ │ │ SIM_MATRIX_KB(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23132,15 +23132,15 @@ │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 496 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SIM_PARPORT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23191,15 +23191,15 @@ │ │ │ │ │ sim-parport.N.pin-04-out-fake bit out │ │ │ │ │ sim-parport.N.pin-05-out-fake bit out │ │ │ │ │ sim-parport.N.pin-06-out-fake bit out │ │ │ │ │ sim-parport.N.pin-07-out-fake bit out │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 497 │ │ │ │ │ │ │ │ │ │ SIM_PARPORT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23257,15 +23257,15 @@ │ │ │ │ │ sim-parport.N.pin-03-out-invert bit rw │ │ │ │ │ sim-parport.N.pin-04-out-invert bit rw │ │ │ │ │ sim-parport.N.pin-05-out-invert bit rw │ │ │ │ │ sim-parport.N.pin-06-out-invert bit rw │ │ │ │ │ │ │ │ │ │ 498 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SIM_PARPORT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23294,15 +23294,15 @@ │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 499 │ │ │ │ │ │ │ │ │ │ SIM_SPINDLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23335,15 +23335,15 @@ │ │ │ │ │ Michael Haberler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 500 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SIMPLE_TP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23378,15 +23378,15 @@ │ │ │ │ │ Chris S Morley │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 501 │ │ │ │ │ │ │ │ │ │ SPHEREPROBE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23419,15 +23419,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 502 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SPINDLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23478,15 +23478,15 @@ │ │ │ │ │ spindle.N.current-gear u32 out │ │ │ │ │ Currently selected gear. │ │ │ │ │ spindle.N.at-speed bit out │ │ │ │ │ TRUE when the spindle is at speed │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 503 │ │ │ │ │ │ │ │ │ │ SPINDLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23533,15 +23533,15 @@ │ │ │ │ │ to go TRUE. │ │ │ │ │ spindle.N.zero-tolerance.x float in Tolerance for ’zero-speed’ signal (in RPM). │ │ │ │ │ spindle.N.offset.x float in │ │ │ │ │ The output command is offset by this amount (in RPM). │ │ │ │ │ │ │ │ │ │ 504 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SPINDLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23554,15 +23554,15 @@ │ │ │ │ │ Les Newell │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 505 │ │ │ │ │ │ │ │ │ │ SPINDLE_MONITOR(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -23593,15 +23593,15 @@ │ │ │ │ │ Sebastian Kuzminsky │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ gpl v2 or higher │ │ │ │ │ │ │ │ │ │ 506 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ SSERIAL(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24298,15 +24298,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 520 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ STREAMER(9) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ @@ -24435,15 +24435,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 523 │ │ │ │ │ │ │ │ │ │ SUPPLY(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24539,15 +24539,15 @@ │ │ │ │ │ thc.requested-vel float in │ │ │ │ │ Connect to motion.requested-vel │ │ │ │ │ thc.volts-requested float in │ │ │ │ │ Tip Volts current_vel >= min_velocity requested │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 525 │ │ │ │ │ │ │ │ │ │ THC(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24590,15 +24590,15 @@ │ │ │ │ │ John Thornton │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPLv2 or greater │ │ │ │ │ │ │ │ │ │ 526 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ THCUD(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24642,15 +24642,15 @@ │ │ │ │ │ net thc-enable thcud.enable <= pyvcp.thc-enable │ │ │ │ │ │ │ │ │ │ FUNCTIONS │ │ │ │ │ thcud (requires a floating-point thread) │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 527 │ │ │ │ │ │ │ │ │ │ THCUD(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24694,15 +24694,15 @@ │ │ │ │ │ John Thornton │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPLv2 or greater │ │ │ │ │ │ │ │ │ │ 528 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ THREADS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24773,15 +24773,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 530 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TIME(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24836,15 +24836,15 @@ │ │ │ │ │ loadrt time │ │ │ │ │ addf time.0 servo-thread │ │ │ │ │ net cycle-timer │ │ │ │ │ time.0.start <= halui.program.is-running │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 531 │ │ │ │ │ │ │ │ │ │ TIME(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24890,15 +24890,15 @@ │ │ │ │ │ John Thornton, itaib, Moses McKnight │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 532 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TIMEDELAY(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24928,15 +24928,15 @@ │ │ │ │ │ Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 533 │ │ │ │ │ │ │ │ │ │ TIMEDELTA(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -24983,15 +24983,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 534 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TOF(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25023,15 +25023,15 @@ │ │ │ │ │ Chad Woitas │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 535 │ │ │ │ │ │ │ │ │ │ TOGGLE(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25068,15 +25068,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 536 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TOGGLE2NIST(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25121,15 +25121,15 @@ │ │ │ │ │ Anders Wallin │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 537 │ │ │ │ │ │ │ │ │ │ TON(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25161,15 +25161,15 @@ │ │ │ │ │ Chad Woitas │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 538 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25201,15 +25201,15 @@ │ │ │ │ │ Chad Woitas │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 539 │ │ │ │ │ │ │ │ │ │ TPCOMP(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25246,15 +25246,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 540 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ TRISTATE_BIT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25282,15 +25282,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 541 │ │ │ │ │ │ │ │ │ │ TRISTATE_FLOAT(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25318,15 +25318,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 542 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ UPDOWN(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25367,15 +25367,15 @@ │ │ │ │ │ Stephen Wille Padnos │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 543 │ │ │ │ │ │ │ │ │ │ USERKINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25430,15 +25430,15 @@ │ │ │ │ │ the halcompile utility but it is not accessible to kinematics │ │ │ │ │ functions. │ │ │ │ │ 2 Hal pins and parameters needed in kinematics functions │ │ │ │ │ (kinematicsForward(), kinematicsInverse()) must │ │ │ │ │ │ │ │ │ │ 544 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ USERKINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25458,15 +25458,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 545 │ │ │ │ │ │ │ │ │ │ WATCHDOG(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25552,15 +25552,15 @@ │ │ │ │ │ Jeff Epler │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 547 │ │ │ │ │ │ │ │ │ │ WEIGHTED_SUM(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25661,15 +25661,15 @@ │ │ │ │ │ Dewey Garrett │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 549 │ │ │ │ │ │ │ │ │ │ XOR2(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25702,15 +25702,15 @@ │ │ │ │ │ John Kasunich │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ 550 │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ XYZAB_TDR_KINS(9) │ │ │ │ │ │ │ │ │ │ HAL Component │ │ │ │ │ │ │ │ │ │ @@ -25745,12 +25745,12 @@ │ │ │ │ │ David Mueller │ │ │ │ │ │ │ │ │ │ LICENSE │ │ │ │ │ GPL │ │ │ │ │ │ │ │ │ │ LinuxCNC Documentation │ │ │ │ │ │ │ │ │ │ -2024-02-02 │ │ │ │ │ +2025-03-07 │ │ │ │ │ │ │ │ │ │ 551 ├── linuxcnc-doc-es_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary │ │ -rw-r--r-- 0 0 0 1228 2023-02-10 04:33:18.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 26045540 2023-02-10 04:33:18.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 26046080 2023-02-10 04:33:18.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -4,18 +4,18 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 331 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_es.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 357 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_es.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 372 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_es.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 361 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_es.desktop │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 825497 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 25895479 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 502264 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 151465 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 825478 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 25895419 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 502242 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 151433 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2093 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/asciidoc-markup_es.adoc.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14404 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_es.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2001 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/rtfaults_es.adoc │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-es/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-es/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-es/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_es.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Developer Manual │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Índice general │ │ │ │ │ 1. Introduction │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ │ │ │ │ │ 16 │ │ │ │ │ │ │ │ │ │ 3.8.3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 17 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.8.3.2. Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 17 │ │ │ │ │ │ │ │ │ │ @@ -283,15 +283,15 @@ │ │ │ │ │ │ │ │ │ │ 20 │ │ │ │ │ │ │ │ │ │ 3.8.16.1.Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 21 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 3.8.16.2.Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 21 │ │ │ │ │ │ │ │ │ │ @@ -451,15 +451,15 @@ │ │ │ │ │ │ │ │ │ │ 3.21.3.Process line │ │ │ │ │ │ │ │ │ │ 28 │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 3.21.4.Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ @@ -627,15 +627,15 @@ │ │ │ │ │ │ │ │ │ │ 41 │ │ │ │ │ │ │ │ │ │ 4.14.Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 41 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5. Coding Style │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ 42 │ │ │ │ │ │ │ │ │ │ @@ -783,15 +783,15 @@ │ │ │ │ │ │ │ │ │ │ 8.4.1. LinuxCNC official Git repo │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 8.4.2. Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 55 │ │ │ │ │ │ │ │ │ │ @@ -880,15 +880,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 65 │ │ │ │ │ 65 │ │ │ │ │ 70 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 1 │ │ │ │ │ │ │ │ │ │ Introduction │ │ │ │ │ │ │ │ │ │ @@ -908,15 +908,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 2 │ │ │ │ │ │ │ │ │ │ HAL General Reference │ │ │ │ │ 2.1. HAL Entity Names │ │ │ │ │ @@ -944,15 +944,15 @@ │ │ │ │ │ functional blocks, each block might have several channels, and each channel has one or more pins. │ │ │ │ │ This results in a structure that resembles a directory tree. Even though halcmd doesn’t recognize the │ │ │ │ │ tree structure, proper choice of naming conventions will let it group related items together (since it │ │ │ │ │ sorts the names). In addition, higher level tools can be designed to recognize such structure, if the │ │ │ │ │ names provide the necessary information. To do that, all HAL components should follow these rules: │ │ │ │ │ Dots (“.”) separate levels of the hierarchy. This is analogous to the slash (“/”) in a filename. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 71 │ │ │ │ │ │ │ │ │ │ Hyphens (“-”) separate words or fields in the same level of the hierarchy. │ │ │ │ │ HAL components should not use underscores or “MixedCase”. 1 │ │ │ │ │ Use only lowercase letters and numbers in names. │ │ │ │ │ │ │ │ │ │ @@ -991,15 +991,15 @@ │ │ │ │ │ 2 Some hardwares use jumpers or other devices to define a specific identification for each. Ideally, the driver provides a way │ │ │ │ │ for the user to say, the device-num 0 is specific to the device that has ID XXX, its subsets will all carry a number starting with 0. │ │ │ │ │ But at present, some drivers use the ID directly as the peripheral number. Which means it is possible to have a device number │ │ │ │ │ 2, without having any in number 0. This is a bug that should disappear in version 2.1. │ │ │ │ │ 3 One exception to the ”channel numbers start at zero” rule is the parallel port. Its HAL pins are numbered with the corresponding pin number on the DB-25 connector. This is convenient for wiring, but inconsistent with other drivers. There is some │ │ │ │ │ debate over whether this is a bug or a feature. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 71 │ │ │ │ │ │ │ │ │ │ on numbers less than 10 to preserve sort ordering. Some modules have pins and/or parameters │ │ │ │ │ that affect more than one channel. For example a PWM generator might have four channels │ │ │ │ │ with four independent ”duty-cycle” inputs, but one ”frequency” parameter that controls all four │ │ │ │ │ channels (due to hardware limitations). The frequency parameter should use ”0-3” as the channel │ │ │ │ │ @@ -1039,27 +1039,27 @@ │ │ │ │ │ read|write │ │ │ │ │ Indicates whether the function reads the hardware or writes to it. │ │ │ │ │ Examples │ │ │ │ │ 4 Note to driver programmers: do NOT implement separate functions for different I/O types unless they are interruptible │ │ │ │ │ and can work in independent threads. If interrupting an encoder read, reading digital inputs, and then resuming the encoder │ │ │ │ │ read will cause problems, then implement a single function that does everything. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 71 │ │ │ │ │ │ │ │ │ │ motenc.0.encoder.read │ │ │ │ │ Reads all encoders on the first motenc board. │ │ │ │ │ generic8255.0.din.09-15.read │ │ │ │ │ Reads the second 8 bit port on the first generic 8255 based digital I/O board. │ │ │ │ │ ppmc.0.write │ │ │ │ │ Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc │ │ │ │ │ board. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 3 │ │ │ │ │ │ │ │ │ │ Code Notes │ │ │ │ │ 3.1. Intended audience │ │ │ │ │ @@ -1089,15 +1089,15 @@ │ │ │ │ │ follow this distinction, but the internals of the motion controller do. │ │ │ │ │ JOINT - A joint is one of the movable parts of the machine. Joints are distinct from axes, although │ │ │ │ │ the two terms are sometimes (mis)used to mean the same thing. In LinuxCNC, a joint is a physical │ │ │ │ │ thing that can be moved, not a coordinate in space. For example, the quill, knee, saddle, and table of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as │ │ │ │ │ are the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated │ │ │ │ │ with it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 71 │ │ │ │ │ │ │ │ │ │ trivial kinematics that may be the case. Even on those machines, joint position and axis position │ │ │ │ │ are fundamentally different things. In this document, the terms joint and axis are used carefully │ │ │ │ │ to respect their distinct meanings. Unfortunately that isn’t necessarily true everywhere else. In │ │ │ │ │ particular, GUIs for machines with trivial kinematics may gloss over or completely hide the distinction between joints and axes. In addition, the INI file uses the term axis for data that would more │ │ │ │ │ @@ -1127,19 +1127,19 @@ │ │ │ │ │ 3.4. Architecture overview │ │ │ │ │ There are four components contained in the LinuxCNC Architecture: a motion controller (EMCMOT), │ │ │ │ │ a discrete IO controller (EMCIO), a task executor which coordinates them (EMCTASK) and several │ │ │ │ │ text-mode and graphical User Interfaces. Each of them will be described in the current document, │ │ │ │ │ both from the design point of view and from the developers point of view (where to find needed data, │ │ │ │ │ how to easily extend/modify things, etc.). │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 71 │ │ │ │ │ │ │ │ │ │ 3.4.1. LinuxCNC software architecture │ │ │ │ │ At the coarsest level, LinuxCNC is a hierarchy of three controllers: the task level command handler │ │ │ │ │ and program interpreter, the motion controller, and the discrete I/O controller. The discrete I/O controller is implemented as a hierarchy of controllers, in this case for spindle, coolant, and auxiliary │ │ │ │ │ (e.g., estop, lube) subsystems. The task controller coordinates the actions of the motion and discrete │ │ │ │ │ @@ -1167,19 +1167,19 @@ │ │ │ │ │ processes. For realtime motion control, the script first loads the default tpmod and homemod modules │ │ │ │ │ and then loads the kinematics and motion modules according to settings in halfiles specified by the │ │ │ │ │ INI file. │ │ │ │ │ Custom (user-built) homing or trajectory-planning modules can be used in place of the default modules │ │ │ │ │ via INI file settings or command line options. Custom modules must implement all functions used by │ │ │ │ │ the default modules. The halcompile utility can be used to create a custom module. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 71 │ │ │ │ │ │ │ │ │ │ 3.6. Block diagrams and Data Flow │ │ │ │ │ The following figure is a block diagram of a joint controller. There is one joint controller per joint. │ │ │ │ │ The joint controllers work at a lower level than the kinematics, a level where all joints are completely │ │ │ │ │ independent. All the data for a joint is in a single joint structure. Some members of that structure are │ │ │ │ │ @@ -1193,15 +1193,15 @@ │ │ │ │ │ mode, it is determined by the traj planner? In free mode, it is either copied from actualPos, or │ │ │ │ │ generated by applying forward kins to (2) or (3). │ │ │ │ │ emcmotStatus->joints[n].coarse_pos - This is the desired position, in joint coordinates, but before │ │ │ │ │ interpolation. It is updated at the traj rate, not the servo rate. In coord mode, it is generated by │ │ │ │ │ applying inverse kins to (1) In teleop mode, it is generated by applying inverse kins to (1) In free │ │ │ │ │ mode, it is copied from (3), I think. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 71 │ │ │ │ │ │ │ │ │ │ ’emcmotStatus->joints[n].pos_cmd - This is the desired position, in joint coords, after interpolation. │ │ │ │ │ A new set of these coords is generated every servo period. In coord mode, it is generated from (2) │ │ │ │ │ by the interpolator. In teleop mode, it is generated from (2) by the interpolator. In free mode, it is │ │ │ │ │ generated by the free mode traj planner. │ │ │ │ │ @@ -1220,26 +1220,26 @@ │ │ │ │ │ because one or more axes aren’t homed. In that case, the options are: A) fake it by copying (1), or │ │ │ │ │ B) admit that we don’t really know the Cartesian coordinates, and simply don’t update actualPos. │ │ │ │ │ Whatever approach is used, I can see no reason not to do it the same way regardless of the operating │ │ │ │ │ mode. I would propose the following: If there are forward kins, use them, unless they don’t work │ │ │ │ │ because of unhomed axes or other problems, in which case do (B). If no forward kins, do (A), since │ │ │ │ │ otherwise actualPos would never get updated. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3.7. Homing │ │ │ │ │ 3.7.1. Homing state diagram │ │ │ │ │ │ │ │ │ │ 14 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 71 │ │ │ │ │ │ │ │ │ │ 3.7.2. Another homing diagram │ │ │ │ │ │ │ │ │ │ 3.8. Commands │ │ │ │ │ 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. │ │ │ │ │ @@ -1255,15 +1255,15 @@ │ │ │ │ │ It does not disable the motion controller or change any state information, it simply cancels any motion │ │ │ │ │ that is currently in progress.1 │ │ │ │ │ 1 It seems that the higher level code (TASK and above) also use ABORT to clear faults. Whenever there is a persistent fault │ │ │ │ │ (such as being outside the hardware limit switches), the higher level code sends a constant stream of ABORTs to the motion │ │ │ │ │ controller trying to make the fault go away. Thousands of them…. That means that the motion controller should avoid persistent │ │ │ │ │ faults. This needs to be looked into. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.1.1. Requirements │ │ │ │ │ None. The command is always accepted and acted on immediately. │ │ │ │ │ 3.8.1.2. Results │ │ │ │ │ In free mode, the free mode trajectory planners are disabled. That results in each joint stopping as fast │ │ │ │ │ @@ -1295,15 +1295,15 @@ │ │ │ │ │ free mode. However the trajectory planner per se is not used, instead movement is controlled by a │ │ │ │ │ velocity vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space │ │ │ │ │ instead of joint space. On a machine with trivial kinematics, there is little difference between teleop │ │ │ │ │ mode and free mode, and GUIs for those machines might never even issue this command. However │ │ │ │ │ for non-trivial machines like robots and hexapods, teleop mode is used for most user commanded jog │ │ │ │ │ type movements. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.3.1. Requirements │ │ │ │ │ The command handler will reject the TELEOP command with an error message if the kinematics │ │ │ │ │ cannot be activated because the one or more joints have not been homed. In addition, if any joint is in │ │ │ │ │ motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error │ │ │ │ │ @@ -1338,15 +1338,15 @@ │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.5.2. Results │ │ │ │ │ If the controller is already enabled, nothing. If not, the controller is enabled. Queues and interpolators │ │ │ │ │ are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated │ │ │ │ │ with active joints are turned on. If forward kinematics are not available, the machine is switched to │ │ │ │ │ free mode. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.6. DISABLE │ │ │ │ │ The DISABLE command disables the motion controller. │ │ │ │ │ 3.8.6.1. Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ @@ -1374,15 +1374,15 @@ │ │ │ │ │ Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually │ │ │ │ │ it will set the amp enable HAL pin false. │ │ │ │ │ │ │ │ │ │ 3.8.9. ACTIVATE_JOINT │ │ │ │ │ The ACTIVATE_JOINT command turns on all the calculations associated with a single joint, but does │ │ │ │ │ not change the joint’s amp enable output pin. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.9.1. Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.9.2. Results │ │ │ │ │ Calculations for the specified joint are enabled. The amp enable pin is not changed, however, any │ │ │ │ │ @@ -1409,15 +1409,15 @@ │ │ │ │ │ The DISABLE_WATCHDOG command disables a hardware based watchdog (if present). │ │ │ │ │ 3.8.12.1. Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.12.2. Results │ │ │ │ │ Actualmente nada. El antiguo watchdog era una cosa extraña que utilizaba una tarjeta de sonido │ │ │ │ │ específica. Es posible que en el futuro se diseñe una nueva interfaz de watchdog. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.13. PAUSE │ │ │ │ │ The PAUSE command stops the trajectory planner. It has no effect in free or teleop mode. At this point │ │ │ │ │ I don’t know if it pauses all motion immediately, or if it completes the current move and then pauses │ │ │ │ │ before pulling another move from the queue. │ │ │ │ │ @@ -1445,15 +1445,15 @@ │ │ │ │ │ │ │ │ │ │ 3.8.16. SCALE │ │ │ │ │ The SCALE command scales all velocity limits and commands by a specified amount. It is used to │ │ │ │ │ implement feed rate override and other similar functions. The scaling works in free, teleop, and coord │ │ │ │ │ modes, and affects everything, including homing velocities, etc. However, individual joint velocity │ │ │ │ │ limits are unaffected. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.16.1. Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.16.2. Results │ │ │ │ │ All velocity commands are scaled by the specified constant. │ │ │ │ │ @@ -1483,15 +1483,15 @@ │ │ │ │ │ 3.8.19. JOG_CONT │ │ │ │ │ The JOG_CONT command initiates a continuous jog on a single joint. A continuous jog is generated │ │ │ │ │ by setting the free mode trajectory planner’s target position to a point beyond the end of the joint’s │ │ │ │ │ range of travel. This ensures that the planner will move constantly until it is stopped by either the joint │ │ │ │ │ limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user presses │ │ │ │ │ a jog button, and ABORT when the button is released. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.19.1. Requirements │ │ │ │ │ The command handler will reject the JOG_CONT command with an error message if machine is not in │ │ │ │ │ free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not │ │ │ │ │ enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the │ │ │ │ │ @@ -1528,15 +1528,15 @@ │ │ │ │ │ location, however they also stop when they hit a limit, or on an ABORT command. │ │ │ │ │ 3.8.21.1. Requirements │ │ │ │ │ The command handler will silently reject the JOG_ABS command if machine is not in free mode, or if │ │ │ │ │ any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will │ │ │ │ │ also silently ignore the command if the joint is already at or beyond its limit and the commanded jog │ │ │ │ │ would make it worse. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 71 │ │ │ │ │ │ │ │ │ │ 3.8.21.2. Results │ │ │ │ │ The free mode trajectory planner for the joint identified by emcmotCommand->axis is activated, the │ │ │ │ │ target position is set to emcmotCommand->offset, and the velocity limit is set to emcmotCommand>vel. The free mode trajectory planner will generate a smooth trapezoidal move from the present │ │ │ │ │ position to the target position. The planner can correctly handle changes in the target position that │ │ │ │ │ @@ -1569,15 +1569,15 @@ │ │ │ │ │ (More later) │ │ │ │ │ │ │ │ │ │ 3.8.27. SET_xix │ │ │ │ │ There are approximately 15 SET_xxx commands, where xxx is the name of some configuration parameter. It is anticipated that there will be several more SET commands as more parameters are │ │ │ │ │ added. I would like to find a cleaner way of setting and reading configuration parameters. The existing methods require many lines of code to be added to multiple files each time a parameter is added. │ │ │ │ │ Much of that code is identical or nearly identical for every parameter. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 71 │ │ │ │ │ │ │ │ │ │ 3.9. Backlash and Screw Error Compensation │ │ │ │ │ + FIXME Compensación de holguras y errores de tornillos │ │ │ │ │ │ │ │ │ │ 3.10. Task controller (EMCTASK) │ │ │ │ │ @@ -1595,15 +1595,15 @@ │ │ │ │ │ iocontrol main loop process: │ │ │ │ │ registers for SIGTERM and SIGINT signals from the OS. │ │ │ │ │ checks to see it HAL inputs have changed │ │ │ │ │ checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status │ │ │ │ │ checks for I/O related NML messages │ │ │ │ │ nml message numbers: from emc.hh: │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 71 │ │ │ │ │ │ │ │ │ │ #define EMC_IO_INIT_TYPE │ │ │ │ │ ((NMLTYPE) 1601) │ │ │ │ │ #define EMC_TOOL_STAT_TYPE │ │ │ │ │ ((NMLTYPE) 1199) │ │ │ │ │ @@ -1651,15 +1651,15 @@ │ │ │ │ │ to the data, and the size of the data. │ │ │ │ │ No memory for data storage is allocated. │ │ │ │ │ │ │ │ │ │ 3.16. SharedMemory │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 71 │ │ │ │ │ │ │ │ │ │ 3.17. ShmBuffer │ │ │ │ │ Class for passing NML messages between local processes using a shared memory buffer. Much of │ │ │ │ │ internal workings are inherited from the CMS class. │ │ │ │ │ │ │ │ │ │ @@ -1693,15 +1693,15 @@ │ │ │ │ │ message buffer or just buffer). This buffer may exist as a shared memory block accessed by other │ │ │ │ │ CMS/NML processes, or a local and private buffer for data being transferred by network or serial │ │ │ │ │ interfaces. │ │ │ │ │ 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 │ │ │ │ │ for internal use and allow for the message to be encoded if this option is chosen (encoded data will │ │ │ │ │ be covered later). The following figure is an internal view of the buffer space. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 71 │ │ │ │ │ │ │ │ │ │ CMS buffer The CMS base class is primarily responsible for creating the communications pathways │ │ │ │ │ and interfacing to the operating system. │ │ │ │ │ │ │ │ │ │ 3.21. Configuration file format │ │ │ │ │ @@ -1719,15 +1719,15 @@ │ │ │ │ │ neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format, or │ │ │ │ │ raw. │ │ │ │ │ RPC# - Obsolete - Place holder retained for backward compatibility only. │ │ │ │ │ buffer# - A unique ID number used if a server controls multiple buffers. │ │ │ │ │ max_procs - is the maximum processes allowed to connect to this buffer. │ │ │ │ │ key - is a numerical identifier for a shared memory buffer │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 71 │ │ │ │ │ │ │ │ │ │ 3.21.2. Type specific configs │ │ │ │ │ The buffer type implies additional configuration options whilst the host operating system precludes │ │ │ │ │ certain combinations. In an attempt to distill published documentation in to a coherent format, only │ │ │ │ │ the SHMEM buffer type will be covered. │ │ │ │ │ @@ -1761,15 +1761,15 @@ │ │ │ │ │ host - specifies where on the network this process is running. │ │ │ │ │ ops - gives the process read only, write only, or read/write access to the buffer. │ │ │ │ │ server - specifies if this process will running a server for this buffer. │ │ │ │ │ timeout - sets the timeout characteristics for accesses to the buffer. │ │ │ │ │ master - indicates if this process is responsible for creating and destroying the buffer. │ │ │ │ │ c_num - an integer between zero and (max_procs -1) │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 71 │ │ │ │ │ │ │ │ │ │ 3.21.4. Configuration Comments │ │ │ │ │ Some of the configuration combinations are invalid, whilst others imply certain constraints. On a │ │ │ │ │ Linux system, GLOBMEM is obsolete, whilst PHANTOM is only really useful in the testing stage of an │ │ │ │ │ application, likewise for FILEMEM. LOCMEM is of little use for a multi-process application, and only │ │ │ │ │ @@ -1807,15 +1807,15 @@ │ │ │ │ │ Not to be confused with NMLmsg, RCS_STAT_MSG, or RCS_CMD_MSG. │ │ │ │ │ NML is responsible for parsing the config file, configuring the cms buffers and is the mechanism for │ │ │ │ │ routing messages to the correct buffer(s). To do this, NML creates several lists for: │ │ │ │ │ cms buffers created or connected to. │ │ │ │ │ processes and the buffers they connect to │ │ │ │ │ a long list of format functions for each message type │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 71 │ │ │ │ │ │ │ │ │ │ This last item is probably the nub of much of the malignment of libnml/rcslib and NML in general. Each │ │ │ │ │ message that is passed via NML requires a certain amount of information to be attached in addition to │ │ │ │ │ the actual data. To do this, several formatting functions are called in sequence to assemble fragments │ │ │ │ │ of the overall message. The format functions will include NML_TYPE, MSG_TYPE, in addition to the │ │ │ │ │ @@ -1854,15 +1854,15 @@ │ │ │ │ │ is to be used. │ │ │ │ │ │ │ │ │ │ 3.23. Adding custom NML commands │ │ │ │ │ LinuxCNC is pretty awesome, but some parts need some tweaking. As you know communication is │ │ │ │ │ done through NML channels, the data sent through such a channel is one of the classes defined │ │ │ │ │ in emc.hh (implemented in emc.cc). If somebody needs a message type that doesn’t exist, he should │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 71 │ │ │ │ │ │ │ │ │ │ follow these steps to add a new one. (The Message I added in the example is called EMC_IO_GENERIC │ │ │ │ │ (inherits EMC_IO_CMD_MSG (inherits RCS_CMD_MSG))) │ │ │ │ │ 1. add the definition of the EMC_IO_GENERIC class to emc2/src/emc/nml_intf/emc.hh │ │ │ │ │ 2. add the type define: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605) │ │ │ │ │ @@ -1887,15 +1887,15 @@ │ │ │ │ │ information is copied from the tool table’s source pocket to pocket 0 (which represents the spindle), │ │ │ │ │ replacing whatever tool information was previously there. │ │ │ │ │ nota │ │ │ │ │ In LinuxCNC configured for nonrandom toolchanger, tool 0 (T0) has special meaning: ”no tool”. T0 │ │ │ │ │ may not appear in the tool table file, and changing to T0 will result in LinuxCNC thinking it’s got an │ │ │ │ │ empty spindle. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 71 │ │ │ │ │ │ │ │ │ │ 3.24.1.2. Random Toolchangers │ │ │ │ │ Random toolchanger hardware swaps the tool in the spindle (if any) with the requested tool on tool │ │ │ │ │ change. Thus the pocket that a tool resides in changes as it is swapped in and out of the spindle. │ │ │ │ │ An example of random toolchanger hardware is a carousel toolchanger. │ │ │ │ │ @@ -1932,15 +1932,15 @@ │ │ │ │ │ spindle. │ │ │ │ │ diameter │ │ │ │ │ Diameter of the tool, in machine units. │ │ │ │ │ tool length offset │ │ │ │ │ Tool length offset (also called TLO), in up to 9 axes, in machine units. Axes that don’t have a │ │ │ │ │ specified TLO get 0. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 71 │ │ │ │ │ │ │ │ │ │ 3.24.3. G-codes affecting tools │ │ │ │ │ The G-codes that use or affect tool information are: │ │ │ │ │ 3.24.3.1. Txxx │ │ │ │ │ Tells the toolchanger hardware to prepare to switch to a specified tool xxx. │ │ │ │ │ @@ -1980,15 +1980,15 @@ │ │ │ │ │ ii. load_tool() with a random toolchanger config swaps tool information between pocket │ │ │ │ │ 0 (the spindle) and the selected pocket, then saves the tool table. │ │ │ │ │ │ │ │ │ │ 2. Back in interp, settings->current_pocket is assigned the new tooldata index from settings->select │ │ │ │ │ (set by Txxx). The relevant numbered parameters (#5400-#5413) are updated with the new tool │ │ │ │ │ information from pocket 0 (spindle). │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 71 │ │ │ │ │ │ │ │ │ │ 3.24.3.3. G43/G43.1/G49 │ │ │ │ │ Apply tool length offset. G43 uses the TLO of the currently loaded tool, or of a specified tool if the │ │ │ │ │ H-word is given in the block. G43.1 gets TLO from axis-words in the block. G49 cancels the TLO (it │ │ │ │ │ uses 0 for the offset for all axes). │ │ │ │ │ @@ -2026,15 +2026,15 @@ │ │ │ │ │ machines.) Finally IO saves the new tool table. │ │ │ │ │ 4. Back in interp, if the modified tool is currently loaded in the spindle, and if the machine is a │ │ │ │ │ non-random toolchanger, then the new tool information is copied from the tool’s home pocket to │ │ │ │ │ pocket 0 (the spindle) in interp’s copy of the tool table, settings->tool_table. (This copy is not │ │ │ │ │ needed on random tool changer machines because there, tools don’t have a home pocket and │ │ │ │ │ instead we just updated the tool in pocket 0 directly.) │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 71 │ │ │ │ │ │ │ │ │ │ 5. The relevant numbered parameters (#5400-#5413) are updated from the tool information in the │ │ │ │ │ spindle (by copying the information from interp’s settings->tool_table to settings->parameters). │ │ │ │ │ (FIXME: this is a buglet, the params should only be updated if it was the current tool that was │ │ │ │ │ modified). │ │ │ │ │ @@ -2064,15 +2064,15 @@ │ │ │ │ │ 3.24.4.1. IO │ │ │ │ │ emcioStatus is of type EMC_IO_STAT │ │ │ │ │ emcioStatus.tool.pocketPrepped │ │ │ │ │ When IO gets the signal from HAL that the toolchanger prep is complete (after a Txxx command), │ │ │ │ │ this variable is set to the pocket of the requested tool. When IO gets the signal from HAL that │ │ │ │ │ the tool change itself is complete (after an M6 command), this variable gets reset to -1. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 71 │ │ │ │ │ │ │ │ │ │ emcioStatus.tool.toolInSpindle │ │ │ │ │ Tool number of the tool currently installed in the spindle. Exported on the HAL pin iocontrol.0.tool-n │ │ │ │ │ (s32). │ │ │ │ │ emcioStatus.tool.toolTable[] │ │ │ │ │ @@ -2115,15 +2115,15 @@ │ │ │ │ │ This is an array of CANON_TOOL_TABLE structures (defined in src/emc/nml_intf/emctool.h), │ │ │ │ │ with CANON_POCKETS_MAX entries. Indexed by ”pocket number”, aka ”slot number”. Index 0 is │ │ │ │ │ the spindle, indexes 1 to (CANON_POCKETS_MAX-1) are the pockets in the tool changer. On │ │ │ │ │ a random toolchanger pocket numbers are meaningful. On a nonrandom toolchanger pockets │ │ │ │ │ are meaningless; the pocket numbers in the tool table file are ignored and tools are assigned to │ │ │ │ │ tool_table slots sequentially. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 71 │ │ │ │ │ │ │ │ │ │ settings.tool_change_at_g30 , settings.tool_change_quill_up , settings.tool_change_with_spindle_ │ │ │ │ │ These are set from INI variables in the [EMCIO] section, and determine how tool changes are │ │ │ │ │ performed. │ │ │ │ │ │ │ │ │ │ @@ -2155,15 +2155,15 @@ │ │ │ │ │ 3.25.2. In Motion │ │ │ │ │ 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. │ │ │ │ │ Motion’s number of joints can be changed at runtime using the EMCMOT_SET_NUM_JOINTS command │ │ │ │ │ from Task. │ │ │ │ │ The Motion controller always operates on EMCMOT_MAX_AXIS axes. It always creates nine sets of axis.*.* │ │ │ │ │ pins. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Capítulo 4 │ │ │ │ │ │ │ │ │ │ NML Messages │ │ │ │ │ List of NML messages. │ │ │ │ │ For details see src/emc/nml_intf/emc.hh. │ │ │ │ │ │ │ │ │ │ @@ -2195,15 +2195,15 @@ │ │ │ │ │ EMC_JOINT_UNHOME_TYPE │ │ │ │ │ EMC_JOINT_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.3. AXIS │ │ │ │ │ │ │ │ │ │ 38 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_AXIS_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.4. JOG │ │ │ │ │ EMC_JOG_CONT_TYPE │ │ │ │ │ EMC_JOG_INCR_TYPE │ │ │ │ │ EMC_JOG_ABS_TYPE │ │ │ │ │ @@ -2249,15 +2249,15 @@ │ │ │ │ │ EMC_TRAJ_RIGID_TAP_TYPE │ │ │ │ │ EMC_TRAJ_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.6. MOTION │ │ │ │ │ │ │ │ │ │ 39 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_MOTION_INIT_TYPE │ │ │ │ │ EMC_MOTION_HALT_TYPE │ │ │ │ │ EMC_MOTION_ABORT_TYPE │ │ │ │ │ EMC_MOTION_SET_AOUT_TYPE │ │ │ │ │ EMC_MOTION_SET_DOUT_TYPE │ │ │ │ │ EMC_MOTION_ADAPTIVE_TYPE │ │ │ │ │ @@ -2303,15 +2303,15 @@ │ │ │ │ │ EMC_AUX_ESTOP_OFF_TYPE │ │ │ │ │ EMC_AUX_ESTOP_RESET_TYPE │ │ │ │ │ EMC_AUX_INPUT_WAIT_TYPE │ │ │ │ │ EMC_AUX_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 40 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4.10. SPINDLE │ │ │ │ │ EMC_SPINDLE_ON_TYPE │ │ │ │ │ EMC_SPINDLE_OFF_TYPE │ │ │ │ │ EMC_SPINDLE_INCREASE_TYPE │ │ │ │ │ EMC_SPINDLE_DECREASE_TYPE │ │ │ │ │ EMC_SPINDLE_CONSTANT_TYPE │ │ │ │ │ @@ -2350,15 +2350,15 @@ │ │ │ │ │ EMC_HALT_TYPE │ │ │ │ │ EMC_ABORT_TYPE │ │ │ │ │ EMC_STAT_TYPE │ │ │ │ │ EMC_EXEC_PLUGIN_CALL_TYPE │ │ │ │ │ │ │ │ │ │ 41 / 71 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 5 │ │ │ │ │ │ │ │ │ │ Coding Style │ │ │ │ │ This chapter describes the source code style preferred by the LinuxCNC team. │ │ │ │ │ @@ -2383,15 +2383,15 @@ │ │ │ │ │ if (x) { │ │ │ │ │ // do something appropriate │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ The closing brace is on a line of its own, except in the cases where it is followed by a continuation of │ │ │ │ │ the same statement, i.e. a while in a do-statement or an else in an if-statement, like this: │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 71 │ │ │ │ │ │ │ │ │ │ do { │ │ │ │ │ // something important │ │ │ │ │ } while (x > 0); │ │ │ │ │ │ │ │ │ │ @@ -2434,15 +2434,15 @@ │ │ │ │ │ function. │ │ │ │ │ However, if you have a complex function, and you suspect that a less-than-gifted first-year high-school │ │ │ │ │ student might not even understand what the function is all about, you should adhere to the maximum │ │ │ │ │ limits all the more closely. Use helper functions with descriptive names (you can ask the compiler to │ │ │ │ │ in-line them if you think it’s performance-critical, and it will probably do a better job of it that you │ │ │ │ │ would have done). │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 71 │ │ │ │ │ │ │ │ │ │ Another measure of the function is the number of local variables. They shouldn’t exceed 5-10, or │ │ │ │ │ you’re doing something wrong. Re-think the function, and split it into smaller pieces. A human brain │ │ │ │ │ can generally easily keep track of about 7 different things, anything more and it gets confused. You │ │ │ │ │ know you’re brilliant, but maybe you’d like to understand what you did 2 weeks from now. │ │ │ │ │ @@ -2480,15 +2480,15 @@ │ │ │ │ │ class name. Rationale: Maintains a common style across C and C++ sources, e.g., get_foo_bar(). │ │ │ │ │ However, boolean methods are easier to read if they avoid underscores and use an is prefix (not to be │ │ │ │ │ confused with methods that manipulate a boolean). Rationale: Identifies the return value as TRUE or │ │ │ │ │ FALSE and nothing else, e.g., isOpen, isHomed. │ │ │ │ │ Do NOT use Not in a boolean name, it leads only leads to confusion when doing logical tests, e.g., │ │ │ │ │ isNotOnLimit or is_not_on_limit are BAD. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 71 │ │ │ │ │ │ │ │ │ │ Variable names should avoid the use of upper case and underscores except for local or private names. │ │ │ │ │ The use of global variables should be avoided as much as possible. Rationale: Clarifies which are │ │ │ │ │ variables and which are methods. Public: e.g., axislimit Private: e.g., maxvelocity_ . │ │ │ │ │ │ │ │ │ │ @@ -2523,24 +2523,24 @@ │ │ │ │ │ File names: C++ sources and headers use .cc and .hh extension. The use of .c and .h are reserved for │ │ │ │ │ plain C. Headers are for class, method, and structure declarations, not code (unless the functions are │ │ │ │ │ declared inline). │ │ │ │ │ │ │ │ │ │ 5.10. Python coding standards │ │ │ │ │ Use the PEP 8 style for Python code. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 71 │ │ │ │ │ │ │ │ │ │ 5.11. Comp coding standards │ │ │ │ │ In the declaration portion of a .comp file, begin each declaration at the first column. Insert extra blank │ │ │ │ │ lines when they help group related items. │ │ │ │ │ In the code portion of a .comp file, follow normal C coding style. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 6 │ │ │ │ │ │ │ │ │ │ Building LinuxCNC │ │ │ │ │ 6.1. Introduction │ │ │ │ │ @@ -2569,15 +2569,15 @@ │ │ │ │ │ │ │ │ │ │ This might fail too! Read this whole document, but especially the section on Setting up the test environment. │ │ │ │ │ │ │ │ │ │ 6.2. Supported Platforms │ │ │ │ │ The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and │ │ │ │ │ Mint. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 71 │ │ │ │ │ │ │ │ │ │ We continuously test on the platforms listed at http://buildbot.linuxcnc.org. │ │ │ │ │ LinuxCNC builds on most other Linux distributions, though dependency management will be more │ │ │ │ │ manual and less automatic. Patches to improve portability to new platforms are always welcome. │ │ │ │ │ │ │ │ │ │ @@ -2610,15 +2610,15 @@ │ │ │ │ │ within the build directory. Nothing is installed outside the build directory. │ │ │ │ │ Esto es rápido y fácil, y adecuado para la iteración rápida de los cambios. │ │ │ │ │ The LinuxCNC test suite runs only in a Run-In-Place build. │ │ │ │ │ Most LinuxCNC developers primarily build using this mode. │ │ │ │ │ Building for Run-In-Place follows the steps in the Quick Start section at the top of this document, │ │ │ │ │ possibly with different arguments to src/configure and make. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 71 │ │ │ │ │ │ │ │ │ │ 6.3.1.1. src/configure arguments │ │ │ │ │ The src/configure script configures how the source code will be compiled. It takes many optional │ │ │ │ │ arguments. │ │ │ │ │ List all arguments to src/configure by running this: │ │ │ │ │ @@ -2655,15 +2655,15 @@ │ │ │ │ │ $ make ../bin/froboz │ │ │ │ │ │ │ │ │ │ 6.3.2. Building Debian Packages │ │ │ │ │ When building Debian packages, the LinuxCNC programs are compiled from source and then stored │ │ │ │ │ in a Debian package, complete with dependency information. This takes more time, and the programs │ │ │ │ │ can’t be used until the Debian package is installed on a target machine. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 71 │ │ │ │ │ │ │ │ │ │ This build mode is primarily useful when packaging the software for delivery to end users, and when │ │ │ │ │ building the software for a machine that doesn’t have the build environment installed, or that doesn’t │ │ │ │ │ have internet access. │ │ │ │ │ Building Debian packages requires the dpkg-buildpackage tool, from the dpkg-dev package: │ │ │ │ │ @@ -2704,15 +2704,15 @@ │ │ │ │ │ If the development package for rtai lxrt does not start with ”rtai-modules”, or if the first such │ │ │ │ │ package listed by apt-cache search is not the desired one, then explicitly specify the package │ │ │ │ │ name. │ │ │ │ │ -r │ │ │ │ │ Configure the Debian package for the currently running RTAI kernel. You must be running an │ │ │ │ │ RTAI kernel on your build machine for this to work! │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 71 │ │ │ │ │ │ │ │ │ │ $KERNEL_VERSION │ │ │ │ │ Configure the debian package for the specified RTAI kernel version (for example ”3.4.9-rtai-686pae”). The matching kernel headers debian package must be installed on your build machine (for │ │ │ │ │ example ”linux-headers-3.4.9-rtai-686-pae”). Note that you can build LinuxCNC in this configuration, but if you are not running the matching RTAI kernel you will not be able to run LinuxCNC, │ │ │ │ │ including the test suite. │ │ │ │ │ @@ -2749,15 +2749,15 @@ │ │ │ │ │ Normally locking memory into RAM is frowned upon, and the operating system places a strict limit │ │ │ │ │ on how much memory a user is allowed to have locked. │ │ │ │ │ When using the Preempt-RT realtime platform LinuxCNC runs with enough privilege to raise its memory lock limit itself. When using the RTAI realtime platform it does not have enough privilege, and │ │ │ │ │ the user must raise the memory lock limit. │ │ │ │ │ If LinuxCNC displays the following message on startup, the problem is your system’s configured limit │ │ │ │ │ on locked memory: │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 71 │ │ │ │ │ │ │ │ │ │ RTAPI: ERROR: failed to map shmem │ │ │ │ │ RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB. │ │ │ │ │ │ │ │ │ │ To fix this problem, add a file named /etc/security/limits.d/linuxcnc.conf (as root) with your │ │ │ │ │ @@ -2778,15 +2778,15 @@ │ │ │ │ │ at github, and use that to track and publish your changes. │ │ │ │ │ After creating your own github fork of LinuxCNC, clone it to your development machine and proceed │ │ │ │ │ with your hacking as usual. │ │ │ │ │ We of the LinuxCNC project hope that you will share your changes with us, so that the community can │ │ │ │ │ benefit from your work. Github makes this sharing very easy: after you polish your changes and push │ │ │ │ │ them to your github fork, send us a Pull Request. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 7 │ │ │ │ │ │ │ │ │ │ Adding Configuration Selection Items │ │ │ │ │ Example Configurations can be added to the Configuration Selector by two methods: │ │ │ │ │ @@ -2797,15 +2797,15 @@ │ │ │ │ │ │ │ │ │ │ Runtime settings — the configuration selector can also offer configuration subdirectories specified │ │ │ │ │ at runtime using an exported environamental variable (LINUXCNC_AUX_CONFIGS). This variable │ │ │ │ │ should be a path list of one or more configuration directories separated by a (:). Typically, this │ │ │ │ │ variable would be set in a shell starting linuxcnc or in a user’s ~/.profile startup script. Example: │ │ │ │ │ export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 8 │ │ │ │ │ │ │ │ │ │ Contributing to LinuxCNC │ │ │ │ │ 8.1. Introduction │ │ │ │ │ @@ -2826,15 +2826,15 @@ │ │ │ │ │ All of the LinuxCNC source is maintained in the Git revision control system. │ │ │ │ │ │ │ │ │ │ 8.4.1. LinuxCNC official Git repo │ │ │ │ │ The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/ │ │ │ │ │ Anyone can get a read-only copy of the LinuxCNC source tree via git: │ │ │ │ │ git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 55 / 71 │ │ │ │ │ │ │ │ │ │ If you are a developer with push access, then follow github’s instructions for setting up a repository │ │ │ │ │ that you can push from. │ │ │ │ │ Note that the clone command put the local LinuxCNC repo in a directory called linuxcnc-dev, instead │ │ │ │ │ of the default linuxcnc. This is because the LinuxCNC software by default expects configs and G-code │ │ │ │ │ @@ -2869,15 +2869,15 @@ │ │ │ │ │ 8.5. Overview of the process │ │ │ │ │ The high-level overview of how to contribute changes to the source goes like this: │ │ │ │ │ Communicate with the project developers and let us know what you’re hacking on │ │ │ │ │ Clone the git repo │ │ │ │ │ Make your changes in a local branch, making sure you ”sign off” your commits according to our │ │ │ │ │ signed-off-by policy (see below). │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 71 │ │ │ │ │ │ │ │ │ │ Adding documentation and tests is an important part of adding a new feature. Otherwise, others │ │ │ │ │ won’t know how to use your feature, and if other changes break your feature it can go unnoticed │ │ │ │ │ without a test. │ │ │ │ │ Share your changes with the other project developers in one of these ways: │ │ │ │ │ @@ -2909,15 +2909,15 @@ │ │ │ │ │ Use the first line as a summary of the intent of the change (almost like the subject line of an e-mail). │ │ │ │ │ Follow it with a blank line, then a longer message explaining the change. Example: │ │ │ │ │ │ │ │ │ │ 8.7.3. Commit to the proper branch │ │ │ │ │ Bugfixes should go on the oldest applicable branch. New features should go in the master branch. If │ │ │ │ │ you’re not sure where a change belongs, ask on irc or on the mailing list. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 57 / 71 │ │ │ │ │ │ │ │ │ │ 8.7.4. Use multiple commits to organize changes │ │ │ │ │ When appropriate, organize your changes into a branch (a series of commits) where each commit │ │ │ │ │ is a logical step towards your ultimate goal. For example, first factor out some complex code into a │ │ │ │ │ new function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new │ │ │ │ │ @@ -2958,15 +2958,15 @@ │ │ │ │ │ While the branch HEAD will build, not every commit might build in such a case. That breaks git │ │ │ │ │ bisect - something somebody else might use later on to find the commit which introduced a bug. So │ │ │ │ │ beyond making sure your branch builds, it is important to assure every single commit builds as well. │ │ │ │ │ │ │ │ │ │ There’s 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): │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ cd linuxcnc-dev │ │ │ │ │ git-test-sequence origin/master.. │ │ │ │ │ │ │ │ │ │ 58 / 71 │ │ │ │ │ │ │ │ │ │ ’(cd src && make && ../scripts/runtests)’ │ │ │ │ │ @@ -2997,15 +2997,15 @@ │ │ │ │ │ 8.9. Other ways to contribute │ │ │ │ │ There are many ways to contribute to LinuxCNC, that are not addressed by this document. These ways │ │ │ │ │ include: │ │ │ │ │ Answering questions on the forum, mailing lists, and in IRC │ │ │ │ │ Reporting bugs on the bug tracker, forum, mailing lists, or in IRC │ │ │ │ │ Helping test experimental features │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 9 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -3039,15 +3039,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 60 / 71 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -3090,15 +3090,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 61 / 71 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -3141,15 +3141,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 71 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -3193,15 +3193,15 @@ │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum │ │ │ │ │ speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program │ │ │ │ │ for the first time. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 71 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these │ │ │ │ │ requirements it is necessary to install a realtime kernel such as RTAI and build the software to │ │ │ │ │ run in the special real-time environment. For this reason real-time software runs in kernel-space. │ │ │ │ │ @@ -3242,28 +3242,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 64 / 71 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 10 │ │ │ │ │ │ │ │ │ │ Legal Section │ │ │ │ │ Translations of this file provided in the source tree are not legally binding. │ │ │ │ │ @@ -3289,15 +3289,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 71 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any such │ │ │ │ │ manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -3346,15 +3346,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover │ │ │ │ │ must present the full title with all words of the title equally prominent and visible. You may add other │ │ │ │ │ material on the covers in addition. Copying with changes limited to the covers, as long as they preserve │ │ │ │ │ the title of the Document and satisfy these conditions, can be treated as verbatim copying in other │ │ │ │ │ respects. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 71 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ @@ -3401,15 +3401,15 @@ │ │ │ │ │ N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any Invariant │ │ │ │ │ Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 68 / 71 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -3450,15 +3450,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of this │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 69 / 71 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ You may not copy, modify, sublicense, or distribute the Document except as expressly provided for │ │ │ │ │ @@ -3485,15 +3485,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 70 / 71 │ │ │ │ │ │ │ │ │ │ Capítulo 11 │ │ │ │ │ │ │ │ │ │ Índice alfabético │ │ │ │ │ A │ │ │ │ │ @@ -3575,15 +3575,15 @@ │ │ │ │ │ RS274NGC, 63 │ │ │ │ │ RTAI, 63 │ │ │ │ │ RTAPI, 63 │ │ │ │ │ RTLINUX, 63 │ │ │ │ │ S │ │ │ │ │ servo motor, 63 │ │ │ │ │ │ │ │ │ │ - Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Developer Manual V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Signed Integer, 63 │ │ │ │ │ spindle, 63 │ │ │ │ │ stepper motor, 63 │ │ │ │ │ T │ │ │ │ │ TASK, 63 │ │ │ │ │ Tk, 63 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_es.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ LinuxCNC │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Índice general │ │ │ │ │ │ │ │ │ │ I Getting Started & Configuration │ │ │ │ │ │ │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ │ │ │ │ │ │ 7 │ │ │ │ │ │ │ │ │ │ 1.3.3. Testing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 1.3.4. Installing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ @@ -282,15 +282,15 @@ │ │ │ │ │ │ │ │ │ │ 27 │ │ │ │ │ │ │ │ │ │ 1.5.6. HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 27 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 1.5.6.1. halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 27 │ │ │ │ │ │ │ │ │ │ @@ -448,15 +448,15 @@ │ │ │ │ │ │ │ │ │ │ 37 │ │ │ │ │ │ │ │ │ │ 1.5.14.7.Configs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 1.5.15.Changes after 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ @@ -618,15 +618,15 @@ │ │ │ │ │ │ │ │ │ │ 2.3.1. Trajectory Control │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 55 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2.3.1.1. Trajectory Planning │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ @@ -786,15 +786,15 @@ │ │ │ │ │ │ │ │ │ │ 66 │ │ │ │ │ │ │ │ │ │ 2.5.2.12.Tool Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 66 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 2.5.2.13.Pallet Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 66 │ │ │ │ │ │ │ │ │ │ @@ -950,15 +950,15 @@ │ │ │ │ │ │ │ │ │ │ 82 │ │ │ │ │ │ │ │ │ │ 2.7.7.3. Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 83 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ viii │ │ │ │ │ │ │ │ │ │ 2.7.7.4. Example HAL Code for Hypersensing . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 84 │ │ │ │ │ │ │ │ │ │ @@ -1107,15 +1107,15 @@ │ │ │ │ │ 3.1.4. Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 99 │ │ │ │ │ │ │ │ │ │ 3.1.5. Parallel Port Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 │ │ │ │ │ 3.1.6. Parallel Port 2 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ix │ │ │ │ │ │ │ │ │ │ 3.1.7. Axis Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 │ │ │ │ │ 3.1.7.1. Finding Maximum Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 │ │ │ │ │ 3.1.7.2. Finding Maximum Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . 106 │ │ │ │ │ 3.1.8. Spindle Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 │ │ │ │ │ @@ -1162,15 +1162,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 │ │ │ │ │ │ │ │ │ │ 4.1.3.1. Base Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 │ │ │ │ │ 4.1.3.2. Step Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 │ │ │ │ │ 4.1.4. Servo Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 │ │ │ │ │ 4.1.4.1. Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ x │ │ │ │ │ │ │ │ │ │ 4.1.4.2. Proportional term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 │ │ │ │ │ 4.1.4.3. Integral term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 │ │ │ │ │ 4.1.4.4. Derivative term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 │ │ │ │ │ 4.1.4.5. Loop tuning │ │ │ │ │ @@ -1233,15 +1233,15 @@ │ │ │ │ │ 4.4.2.6. [TASK] Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 │ │ │ │ │ │ │ │ │ │ 4.4.2.7. [HAL] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 │ │ │ │ │ 4.4.2.8. [HALUI] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xi │ │ │ │ │ │ │ │ │ │ 4.4.2.9. [APPLICATIONS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ 4.4.2.10.[TRAJ] Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 │ │ │ │ │ @@ -1294,15 +1294,15 @@ │ │ │ │ │ 4.6.4. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 4.6.5. Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 4.7. Lathe Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 4.7.1. Default Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 4.7.2. INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 4.8. Stepper Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xii │ │ │ │ │ │ │ │ │ │ 4.8.1. Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ 4.8.2. Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ 4.8.3. Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 │ │ │ │ │ 4.8.4. Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 │ │ │ │ │ @@ -1349,15 +1349,15 @@ │ │ │ │ │ 5.1.1.3. Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 5.1.1.4. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 5.1.1.5. Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 │ │ │ │ │ 5.1.2. HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 │ │ │ │ │ 5.1.3. HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 │ │ │ │ │ 5.1.4. Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiii │ │ │ │ │ │ │ │ │ │ 5.2. HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 │ │ │ │ │ 5.2.1. HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 │ │ │ │ │ 5.2.1.1. loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 │ │ │ │ │ 5.2.1.2. addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 │ │ │ │ │ @@ -1417,15 +1417,15 @@ │ │ │ │ │ │ │ │ │ │ 5.4.2.2. Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ 5.4.2.3. The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ 5.4.3. A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ 5.4.3.1. Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 │ │ │ │ │ 5.4.3.2. Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiv │ │ │ │ │ │ │ │ │ │ 5.4.3.3. Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 │ │ │ │ │ 5.4.3.4. Changing Parameters │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ @@ -1473,15 +1473,15 @@ │ │ │ │ │ 5.6.2. Spindle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 │ │ │ │ │ 5.6.2.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 │ │ │ │ │ 5.6.3. Axis and Joint Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 5.6.4. iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 5.6.4.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 │ │ │ │ │ 5.6.5. INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xv │ │ │ │ │ │ │ │ │ │ 5.6.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 │ │ │ │ │ 5.7. HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 │ │ │ │ │ 5.7.1. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 │ │ │ │ │ 5.7.1.1. User Interfaces (Userspace) │ │ │ │ │ @@ -1525,15 +1525,15 @@ │ │ │ │ │ 5.8.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 │ │ │ │ │ 5.8.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 │ │ │ │ │ 5.8.5.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 │ │ │ │ │ 5.8.6. Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 │ │ │ │ │ 5.8.6.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 │ │ │ │ │ 5.8.6.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvi │ │ │ │ │ │ │ │ │ │ 5.8.6.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 │ │ │ │ │ 5.8.7. Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 │ │ │ │ │ 5.8.7.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 │ │ │ │ │ 5.8.7.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 │ │ │ │ │ @@ -1581,15 +1581,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ │ │ │ │ │ 5.9.16.Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.10.HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.10.1.Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.10.2.Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvii │ │ │ │ │ │ │ │ │ │ 5.10.3.Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 │ │ │ │ │ 5.10.4.Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 │ │ │ │ │ 5.10.5.Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 │ │ │ │ │ 5.10.6.Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 │ │ │ │ │ @@ -1648,15 +1648,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ │ │ │ │ │ 5.11.6.22. │ │ │ │ │ stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ 5.11.6.23. │ │ │ │ │ stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xviii │ │ │ │ │ │ │ │ │ │ 5.11.6.24. │ │ │ │ │ set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ 5.11.7.Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ 5.11.8.System Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ @@ -1695,15 +1695,15 @@ │ │ │ │ │ 5.13.3.Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 │ │ │ │ │ 5.13.4.Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 │ │ │ │ │ 5.13.5.Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 │ │ │ │ │ 5.13.6.Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 │ │ │ │ │ 5.13.7.HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 │ │ │ │ │ 5.13.8.Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6. Hardware Drivers │ │ │ │ │ │ │ │ │ │ xix │ │ │ │ │ │ │ │ │ │ 322 │ │ │ │ │ │ │ │ │ │ @@ -1745,15 +1745,15 @@ │ │ │ │ │ 6.3.5.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 │ │ │ │ │ 6.3.5.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 │ │ │ │ │ 6.3.6. Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 │ │ │ │ │ 6.3.6.1. CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342 │ │ │ │ │ 6.3.6.2. RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 │ │ │ │ │ 6.3.6.3. EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xx │ │ │ │ │ │ │ │ │ │ 6.3.6.4. Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 │ │ │ │ │ 6.3.6.5. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 │ │ │ │ │ 6.3.7. RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 │ │ │ │ │ 6.3.7.1. Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 │ │ │ │ │ @@ -1792,15 +1792,15 @@ │ │ │ │ │ 6.5.13.3.Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 │ │ │ │ │ 6.5.14.PWMGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 │ │ │ │ │ 6.5.14.1.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 │ │ │ │ │ 6.5.14.2.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 │ │ │ │ │ 6.5.14.3.Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 │ │ │ │ │ 6.5.15.Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxi │ │ │ │ │ │ │ │ │ │ 6.5.15.1.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 6.5.15.2.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 6.5.16.5I25 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 6.5.16.1.Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ @@ -1842,15 +1842,15 @@ │ │ │ │ │ 6.8.1. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 │ │ │ │ │ 6.8.2. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 │ │ │ │ │ 6.8.3. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 │ │ │ │ │ 6.9. Opto22 Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 │ │ │ │ │ 6.9.1. The Adapter Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 │ │ │ │ │ 6.9.2. The Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxii │ │ │ │ │ │ │ │ │ │ 6.9.3. Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 │ │ │ │ │ 6.9.4. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 │ │ │ │ │ 6.9.5. FUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 │ │ │ │ │ 6.9.6. Configuring I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 │ │ │ │ │ @@ -1892,15 +1892,15 @@ │ │ │ │ │ 6.12.3.Reference: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 │ │ │ │ │ 6.13.Servo To Go Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 │ │ │ │ │ 6.13.1.Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 │ │ │ │ │ 6.13.2.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 │ │ │ │ │ 6.13.3.Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 │ │ │ │ │ 6.13.4.Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiii │ │ │ │ │ │ │ │ │ │ 6.14.Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 │ │ │ │ │ 6.14.1.Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 │ │ │ │ │ 6.14.2.Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 │ │ │ │ │ 6.14.3.Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 │ │ │ │ │ @@ -1940,15 +1940,15 @@ │ │ │ │ │ 8.1. ClassicLadder Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 │ │ │ │ │ 8.1.1. History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 │ │ │ │ │ 8.1.2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 │ │ │ │ │ 8.1.3. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 │ │ │ │ │ 8.1.4. Basic Latching On-Off Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 │ │ │ │ │ 8.2. ClassicLadder Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiv │ │ │ │ │ │ │ │ │ │ 8.2.1. Ladder Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ 8.2.2. Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ 8.2.3. Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ 8.2.3.1. Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 │ │ │ │ │ @@ -1999,15 +1999,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 │ │ │ │ │ │ │ │ │ │ 8.3.2. Reject Extra Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 │ │ │ │ │ 8.3.3. External E-Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 │ │ │ │ │ 8.3.4. Timer/Operate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9. Temas avanzados │ │ │ │ │ │ │ │ │ │ xxv │ │ │ │ │ │ │ │ │ │ 452 │ │ │ │ │ │ │ │ │ │ @@ -2049,15 +2049,15 @@ │ │ │ │ │ 9.3.8. Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 │ │ │ │ │ 9.3.9. REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 │ │ │ │ │ 9.4. Switchable Kinematics (switchkins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 │ │ │ │ │ 9.4.1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 │ │ │ │ │ 9.4.2. Switchable Kinematic Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 │ │ │ │ │ 9.4.2.1. Identity letter assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvi │ │ │ │ │ │ │ │ │ │ 9.4.2.2. Backwards compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 │ │ │ │ │ 9.4.3. HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498 │ │ │ │ │ 9.4.3.1. HAL Pin Summary │ │ │ │ │ │ │ │ │ │ @@ -2116,15 +2116,15 @@ │ │ │ │ │ . 515 │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . 516 │ │ │ │ │ │ │ │ │ │ 9.6.5.4. Configuring iocontrol with a remapped M6 . . . . . . . . . . . . . . . . . . 518 │ │ │ │ │ 9.6.5.5. Writing the change and prepare O-word procedures . . . . . . . . . . . . . . 518 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvii │ │ │ │ │ │ │ │ │ │ 9.6.5.6. Making minimal changes to the built in codes, including M6 . . . . . . . . . 519 │ │ │ │ │ 9.6.5.7. Specifying the T (prepare) replacement . . . . . . . . . . . . . . . . . . . . . 519 │ │ │ │ │ 9.6.5.8. Error handling: dealing with abort . . . . . . . . . . . . . . . . . . . . . . . . . 520 │ │ │ │ │ 9.6.5.9. Error handling: failing a remapped code NGC procedure . . . . . . . . . . . 522 │ │ │ │ │ @@ -2166,15 +2166,15 @@ │ │ │ │ │ 9.6.14.Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ 9.6.14.1.Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ 9.6.14.2.Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ 9.6.14.3.Currently unallocated M-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . 540 │ │ │ │ │ 9.6.14.4.readahead time and execution time . . . . . . . . . . . . . . . . . . . . . . . . 541 │ │ │ │ │ 9.6.14.5.plugin/pickle hack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxviii │ │ │ │ │ │ │ │ │ │ 9.6.14.6.Module, methods, classes, etc reference . . . . . . . . . . . . . . . . . . . . . 541 │ │ │ │ │ 9.6.15.Introduction: Extending Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 541 │ │ │ │ │ 9.6.15.1.Why would you want to change Task Execution? . . . . . . . . . . . . . . . . 541 │ │ │ │ │ 9.6.15.2.A diagram: task, interp, iocontrol, UI (??) . . . . . . . . . . . . . . . . . . 541 │ │ │ │ │ @@ -2220,15 +2220,15 @@ │ │ │ │ │ 9.9.2.1. Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 │ │ │ │ │ 9.9.2.2. Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 │ │ │ │ │ 9.9.3. Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 │ │ │ │ │ 9.9.3.1. Offset Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 │ │ │ │ │ 9.9.3.2. Machine-off/Machine-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 │ │ │ │ │ 9.9.3.3. Soft Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxix │ │ │ │ │ │ │ │ │ │ 9.9.3.4. Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 │ │ │ │ │ 9.9.3.5. Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 │ │ │ │ │ 9.9.4. Related HAL Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 │ │ │ │ │ 9.9.4.1. eoffset_per_angle.comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 │ │ │ │ │ @@ -2279,15 +2279,15 @@ │ │ │ │ │ 10.1.3.6.MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 │ │ │ │ │ 10.1.3.7.Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 │ │ │ │ │ 10.1.3.8.Spindle Speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 │ │ │ │ │ 10.1.3.9.Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 │ │ │ │ │ 10.1.3.10. │ │ │ │ │ Max Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxx │ │ │ │ │ │ │ │ │ │ 10.1.4.Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 10.1.4.1.Feed Override Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 │ │ │ │ │ 10.1.5.Show LinuxCNC Status (linuxcnctop) . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 │ │ │ │ │ 10.1.6.MDI interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 │ │ │ │ │ @@ -2361,15 +2361,15 @@ │ │ │ │ │ 10.1.14.15. │ │ │ │ │ Change a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592 │ │ │ │ │ 10.1.14.16. │ │ │ │ │ Redirect an existing command . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 │ │ │ │ │ 10.1.14.17. │ │ │ │ │ Change the DRO color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxi │ │ │ │ │ │ │ │ │ │ 10.1.14.18. │ │ │ │ │ Change the Toolbar Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 │ │ │ │ │ 10.1.14.19. │ │ │ │ │ Change Plotter Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594 │ │ │ │ │ @@ -2409,15 +2409,15 @@ │ │ │ │ │ 10.2.7.1.Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 │ │ │ │ │ 10.2.7.2.Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 │ │ │ │ │ 10.2.7.3.Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628 │ │ │ │ │ 10.2.8.Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 │ │ │ │ │ 10.2.8.1.Custom Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 │ │ │ │ │ 10.2.8.2.Symbolic Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxii │ │ │ │ │ │ │ │ │ │ 10.2.9.Lathe Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 │ │ │ │ │ 10.2.10. │ │ │ │ │ Plasma Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 │ │ │ │ │ 10.2.11. │ │ │ │ │ @@ -2473,15 +2473,15 @@ │ │ │ │ │ 10.4.6.INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 │ │ │ │ │ 10.4.7.User Dialog Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 │ │ │ │ │ 10.4.7.1.Copy the Stock Handler/Glade File For Modification . . . . . . . . . . . . . . 654 │ │ │ │ │ 10.5.QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 │ │ │ │ │ 10.5.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 │ │ │ │ │ 10.5.1.1.QtDragon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiii │ │ │ │ │ │ │ │ │ │ 10.5.1.2.QtDragon_hd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 │ │ │ │ │ 10.5.2.Getting Started - The INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 │ │ │ │ │ 10.5.2.1.Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 │ │ │ │ │ 10.5.2.2.Preferences │ │ │ │ │ @@ -2541,15 +2541,15 @@ │ │ │ │ │ 10.5.14.5. │ │ │ │ │ Needed HAL Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ 10.5.15. │ │ │ │ │ Run from Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ 10.5.16. │ │ │ │ │ Laser buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiv │ │ │ │ │ │ │ │ │ │ 10.5.17. │ │ │ │ │ Tabs Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ 10.5.17.1. │ │ │ │ │ Main tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ @@ -2605,15 +2605,15 @@ │ │ │ │ │ 10.6.6.2.Gcode-meta-compiler (.gcmc) file requirements . . . . . . . . . . . . . . . . . 693 │ │ │ │ │ 10.6.7.DB25 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 │ │ │ │ │ 10.6.8.Creating a subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 │ │ │ │ │ 10.7.TkLinuxCNC GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 │ │ │ │ │ 10.7.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 │ │ │ │ │ 10.7.2.Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxv │ │ │ │ │ │ │ │ │ │ 10.7.2.1.A typical session with TkLinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . 698 │ │ │ │ │ 10.7.3.Elements of the TkLinuxCNC window . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 │ │ │ │ │ 10.7.3.1.Main buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 │ │ │ │ │ 10.7.3.2.Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 │ │ │ │ │ @@ -2652,15 +2652,15 @@ │ │ │ │ │ 10.8.7.3.Contact Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 │ │ │ │ │ 10.8.7.4.Desktop Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 │ │ │ │ │ 10.8.7.5.QtPlasmaC Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 │ │ │ │ │ 10.8.7.6.INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 │ │ │ │ │ 10.8.8.QtPlasmaC GUI Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 │ │ │ │ │ 10.8.8.1.Exiting QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvi │ │ │ │ │ │ │ │ │ │ 10.8.8.2.MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 │ │ │ │ │ 10.8.8.3.Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 │ │ │ │ │ 10.8.8.4.CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733 │ │ │ │ │ 10.8.8.5.PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 │ │ │ │ │ @@ -2722,15 +2722,15 @@ │ │ │ │ │ 10.8.9.30. │ │ │ │ │ Ignore Arc OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 │ │ │ │ │ 10.8.9.31. │ │ │ │ │ Cut Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 │ │ │ │ │ 10.8.9.32. │ │ │ │ │ Run From Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvii │ │ │ │ │ │ │ │ │ │ 10.8.9.33. │ │ │ │ │ Scribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 │ │ │ │ │ 10.8.9.34. │ │ │ │ │ Spotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 │ │ │ │ │ @@ -2808,15 +2808,15 @@ │ │ │ │ │ 10.8.15.10. │ │ │ │ │ Max Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800 │ │ │ │ │ 10.8.15.11. │ │ │ │ │ Enable Tabs During Automated Motion . . . . . . . . . . . . . . . . . . . . . . 800 │ │ │ │ │ 10.8.15.12. │ │ │ │ │ Override Jog Inhibit Via Z+ Jog . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxviii │ │ │ │ │ │ │ │ │ │ 10.8.15.13. │ │ │ │ │ QtPlasmaC State Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 │ │ │ │ │ 10.8.15.14. │ │ │ │ │ QtPlasmaC Debug Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 │ │ │ │ │ @@ -2882,15 +2882,15 @@ │ │ │ │ │ │ │ │ │ │ 11.1.4.Local and Global Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ 11.1.4.1.The G52 command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ 11.1.5.G92 Axes Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 │ │ │ │ │ 11.1.5.1.The G92 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 │ │ │ │ │ 11.1.5.2.Setting G92 Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxix │ │ │ │ │ │ │ │ │ │ 11.1.5.3.G92 Persistence Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 │ │ │ │ │ 11.1.5.4.G92 and G52 Interaction Cautions . . . . . . . . . . . . . . . . . . . . . . . . . 825 │ │ │ │ │ 11.1.6.Sample Programs Using Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825 │ │ │ │ │ 11.1.6.1.Sample Program Using Workpiece Coordinate Offsets . . . . . . . . . . . . . 825 │ │ │ │ │ @@ -2935,15 +2935,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 │ │ │ │ │ │ │ │ │ │ 11.4.6.Binary Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849 │ │ │ │ │ 11.4.7.Equality and floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 │ │ │ │ │ 11.4.8.Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xl │ │ │ │ │ │ │ │ │ │ 11.4.9.Repeated Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 │ │ │ │ │ 11.4.10. │ │ │ │ │ Item order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851 │ │ │ │ │ 11.4.11. │ │ │ │ │ @@ -3011,15 +3011,15 @@ │ │ │ │ │ 11.5.14. │ │ │ │ │ G10 L2 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 │ │ │ │ │ 11.5.15. │ │ │ │ │ G10 L10 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874 │ │ │ │ │ 11.5.16. │ │ │ │ │ G10 L11 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xli │ │ │ │ │ │ │ │ │ │ 11.5.17. │ │ │ │ │ G10 L20 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875 │ │ │ │ │ 11.5.18. │ │ │ │ │ G17 - G19.1 Plane Select │ │ │ │ │ @@ -3109,15 +3109,15 @@ │ │ │ │ │ 11.5.46. │ │ │ │ │ G82 Drilling Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 │ │ │ │ │ 11.5.47. │ │ │ │ │ G83 Peck Drilling Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 │ │ │ │ │ 11.5.48. │ │ │ │ │ G84 Right-hand Tapping Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11.5.49. │ │ │ │ │ G85 Boring Cycle, Feed Out │ │ │ │ │ │ │ │ │ │ xlii │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902 │ │ │ │ │ @@ -3198,15 +3198,15 @@ │ │ │ │ │ 11.6.21. │ │ │ │ │ M72 Restore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915 │ │ │ │ │ 11.6.22. │ │ │ │ │ M73 Save and Autorestore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . 916 │ │ │ │ │ 11.6.23. │ │ │ │ │ M98 and M99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliii │ │ │ │ │ │ │ │ │ │ 11.6.23.1. │ │ │ │ │ Selectively Restoring Modal State . . . . . . . . . . . . . . . . . . . . . . . . . 917 │ │ │ │ │ 11.6.24. │ │ │ │ │ M100-M199 User Defined Commands │ │ │ │ │ @@ -3269,15 +3269,15 @@ │ │ │ │ │ 11.10.4.2. │ │ │ │ │ Invert Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931 │ │ │ │ │ 11.10.4.3. │ │ │ │ │ Normalize Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931 │ │ │ │ │ 11.10.4.4. │ │ │ │ │ Expand Image Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliv │ │ │ │ │ │ │ │ │ │ 11.10.4.5. │ │ │ │ │ Tolerance (units) │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931 │ │ │ │ │ @@ -3348,15 +3348,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 │ │ │ │ │ │ │ │ │ │ 12.1.6.10. │ │ │ │ │ Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955 │ │ │ │ │ 12.2.PyVCP Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlv │ │ │ │ │ │ │ │ │ │ 12.2.1.AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 │ │ │ │ │ 12.2.2.Floating Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 │ │ │ │ │ 12.2.3.Jog Buttons Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961 │ │ │ │ │ 12.2.3.1.Create the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962 │ │ │ │ │ @@ -3408,15 +3408,15 @@ │ │ │ │ │ 12.3.6.10. │ │ │ │ │ Speed Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990 │ │ │ │ │ 12.3.6.11. │ │ │ │ │ Label │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvi │ │ │ │ │ │ │ │ │ │ 12.3.6.12. │ │ │ │ │ Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993 │ │ │ │ │ 12.3.6.13. │ │ │ │ │ LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 │ │ │ │ │ @@ -3480,15 +3480,15 @@ │ │ │ │ │ 12.3.8.9.Persistent variables in GladeVCP │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . 1026 │ │ │ │ │ │ │ │ │ │ 12.3.8.10. │ │ │ │ │ Using persistent variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvii │ │ │ │ │ │ │ │ │ │ 12.3.8.11. │ │ │ │ │ Saving the state on GladeVCP shutdown . . . . . . . . . . . . . . . . . . . . . 1027 │ │ │ │ │ 12.3.8.12. │ │ │ │ │ Saving state when Ctrl-C is pressed . . . . . . . . . . . . . . . . . . . . . . . . 1028 │ │ │ │ │ @@ -3549,15 +3549,15 @@ │ │ │ │ │ 12.5.5.Handler File In Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058 │ │ │ │ │ 12.5.5.1.Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 │ │ │ │ │ 12.5.5.2.IMPORT Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ 12.5.5.3.INSTANTIATE LIBRARIES Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlviii │ │ │ │ │ │ │ │ │ │ 12.5.5.4.HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ 12.5.5.5.INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062 │ │ │ │ │ 12.5.5.6.SPECIAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063 │ │ │ │ │ 12.5.5.7.STATUS CALLBACKS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063 │ │ │ │ │ @@ -3598,15 +3598,15 @@ │ │ │ │ │ 12.7.1.2.Slider - HAL Pin Value Adjusting Widget . . . . . . . . . . . . . . . . . . . . 1082 │ │ │ │ │ 12.7.1.3.LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082 │ │ │ │ │ 12.7.1.4.CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082 │ │ │ │ │ 12.7.1.5.RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083 │ │ │ │ │ 12.7.1.6.Gauge - Round Dial Gauge Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1083 │ │ │ │ │ 12.7.1.7.HALPad - HAL Buttons Joypad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlix │ │ │ │ │ │ │ │ │ │ 12.7.1.8.PushButton - HAL Pin Toggle Widget . . . . . . . . . . . . . . . . . . . . . . . 1086 │ │ │ │ │ 12.7.1.9.focusOverlay - Focus Overlay Widget . . . . . . . . . . . . . . . . . . . . . . 1086 │ │ │ │ │ 12.7.1.10. │ │ │ │ │ gridLayout - Grid Layout Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1087 │ │ │ │ │ @@ -3675,15 +3675,15 @@ │ │ │ │ │ 12.7.2.27. │ │ │ │ │ JointEnableWidget - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 │ │ │ │ │ 12.7.2.28. │ │ │ │ │ StatusImageSwitcher - Controller Status Image Switching Widget . . . . 1121 │ │ │ │ │ 12.7.2.29. │ │ │ │ │ FileManager - File Loading Selector Widget . . . . . . . . . . . . . . . . . . . 1122 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ l │ │ │ │ │ │ │ │ │ │ 12.7.2.30. │ │ │ │ │ RadioAxisSelector - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122 │ │ │ │ │ 12.7.2.31. │ │ │ │ │ ToolOffsetView - Tools Offsets View And Edit Widget │ │ │ │ │ @@ -3729,15 +3729,15 @@ │ │ │ │ │ 12.8.1.2.Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 │ │ │ │ │ 12.8.2.Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143 │ │ │ │ │ 12.8.2.1.Available data and defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 │ │ │ │ │ 12.8.2.2.User message dialog info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 │ │ │ │ │ 12.8.2.3.Embedded program info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 │ │ │ │ │ 12.8.2.4.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ li │ │ │ │ │ │ │ │ │ │ 12.8.2.5.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145 │ │ │ │ │ 12.8.3.Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 │ │ │ │ │ 12.8.3.1.Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 │ │ │ │ │ 12.8.3.2.Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 │ │ │ │ │ @@ -3800,15 +3800,15 @@ │ │ │ │ │ Primitives Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159 │ │ │ │ │ 12.8.15.3. │ │ │ │ │ Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161 │ │ │ │ │ 12.8.15.4. │ │ │ │ │ More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1161 │ │ │ │ │ 12.9.QtVismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lii │ │ │ │ │ │ │ │ │ │ 12.9.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162 │ │ │ │ │ 12.9.2.Hierarchy of Machine Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163 │ │ │ │ │ 12.9.3.Start the script │ │ │ │ │ │ │ │ │ │ @@ -3875,15 +3875,15 @@ │ │ │ │ │ 12.10.7.2. │ │ │ │ │ SystemToolbutton Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 │ │ │ │ │ 12.10.7.3. │ │ │ │ │ Making a plugin with a MenuEntry dialog box . . . . . . . . . . . . . . . . . 1183 │ │ │ │ │ 12.11. │ │ │ │ │ QtVCP Handler File Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liii │ │ │ │ │ │ │ │ │ │ 12.11.1. │ │ │ │ │ Preference File Loading/Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1185 │ │ │ │ │ 12.11.2. │ │ │ │ │ Use QSettings To Read/Save Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186 │ │ │ │ │ @@ -3959,15 +3959,15 @@ │ │ │ │ │ │ │ │ │ │ 13.1.Panelui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205 │ │ │ │ │ 13.1.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205 │ │ │ │ │ 13.1.2.Loading Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205 │ │ │ │ │ 13.1.3.panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206 │ │ │ │ │ 13.1.4.Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liv │ │ │ │ │ │ │ │ │ │ 13.1.5.ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210 │ │ │ │ │ 13.1.6.Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211 │ │ │ │ │ 13.2.Filter Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 │ │ │ │ │ 13.2.1.Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 │ │ │ │ │ @@ -4033,15 +4033,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225 │ │ │ │ │ │ │ │ │ │ 13.5.1.The linuxcnc Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225 │ │ │ │ │ 13.5.2.Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1225 │ │ │ │ │ 13.5.3.Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 │ │ │ │ │ 13.5.3.1.linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lv │ │ │ │ │ │ │ │ │ │ 13.5.3.2.The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 │ │ │ │ │ 13.5.3.3.The joint dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 │ │ │ │ │ 13.5.4.The spindle dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233 │ │ │ │ │ 13.5.5.Preparing to send commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233 │ │ │ │ │ @@ -4094,15 +4094,15 @@ │ │ │ │ │ │ │ │ │ │ 1265 │ │ │ │ │ │ │ │ │ │ 16.1.Legal Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265 │ │ │ │ │ 16.1.1.Copyright Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265 │ │ │ │ │ 16.1.2.GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1265 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17.Historia de LinuxCNC │ │ │ │ │ │ │ │ │ │ lvi │ │ │ │ │ │ │ │ │ │ 1270 │ │ │ │ │ │ │ │ │ │ @@ -4110,23 +4110,23 @@ │ │ │ │ │ 17.1.1.Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271 │ │ │ │ │ 17.1.2.Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1271 │ │ │ │ │ │ │ │ │ │ 18.Índice alfabético │ │ │ │ │ │ │ │ │ │ 1272 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 1278 │ │ │ │ │ │ │ │ │ │ Parte I │ │ │ │ │ │ │ │ │ │ Getting Started & Configuration │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 1 │ │ │ │ │ │ │ │ │ │ Getting Started with LinuxCNC │ │ │ │ │ 1.1. About LinuxCNC │ │ │ │ │ @@ -4154,15 +4154,15 @@ │ │ │ │ │ It can simultaneously move up to 9 axes and supports a variety of interfaces. │ │ │ │ │ The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC │ │ │ │ │ software at the computer, or open loop with step-servos or stepper motors. │ │ │ │ │ Motion control features include: cutter radius and length compensation, path deviation limited to │ │ │ │ │ a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed │ │ │ │ │ override, and constant velocity control. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 1278 │ │ │ │ │ │ │ │ │ │ Support for non-Cartesian motion systems is provided via custom kinematics modules. Available │ │ │ │ │ architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary │ │ │ │ │ joints to provide motion such as PUMA or SCARA robots. │ │ │ │ │ LinuxCNC runs on Linux using real time extensions. │ │ │ │ │ @@ -4199,15 +4199,15 @@ │ │ │ │ │ You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users │ │ │ │ │ 1.1.3.3. Web Forum │ │ │ │ │ A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the │ │ │ │ │ linuxcnc.org home page. │ │ │ │ │ This is quite active but the demographic is more user-biased than the mailing list. If you want to be │ │ │ │ │ sure that your message is seen by the developers then the mailing list is to be preferred. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 1278 │ │ │ │ │ │ │ │ │ │ 1.1.3.4. LinuxCNC Wiki │ │ │ │ │ A Wiki site is a user maintained web site that anyone can add to or edit. │ │ │ │ │ │ │ │ │ │ The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or │ │ │ │ │ @@ -4239,15 +4239,15 @@ │ │ │ │ │ 1.2.2. Kernel and Version requirements │ │ │ │ │ LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can, however run on a standard kernel in simulation mode for purposes such as checking G-code, testing config │ │ │ │ │ files and learning the system. To work with these kernel versions there are two versions of LinuxCNC │ │ │ │ │ distributed. The package names are ”linuxcnc” and ”linuxcnc-uspace”. │ │ │ │ │ The realtime kernel options are preempt-rt, RTAI and Xenomai. │ │ │ │ │ You can discover the kernel version of your system with the command: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 1278 │ │ │ │ │ │ │ │ │ │ uname -a │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ @@ -4278,15 +4278,15 @@ │ │ │ │ │ Laptops are not generally suited to real time software step generation. Again a Latency Test run for │ │ │ │ │ an extended time will give you the info you need to determine suitability. │ │ │ │ │ 1.2.3.2. Video Cards │ │ │ │ │ If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize │ │ │ │ │ your video card or monitor. This can sometimes be worked-around by installing drivers or creating / │ │ │ │ │ editing Xorg.conf files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 1278 │ │ │ │ │ │ │ │ │ │ 1.3. Getting LinuxCNC │ │ │ │ │ This section describes the recommended way to download and make a fresh install of LinuxCNC. │ │ │ │ │ There are also Alternate Install Methods for the adventurous. If you have an existing install that you │ │ │ │ │ want to upgrade, go to the Updating LinuxCNC section instead. │ │ │ │ │ @@ -4319,15 +4319,15 @@ │ │ │ │ │ be edited back by mounting the SD card in a a different computer (maybe even a Pi with a USB card │ │ │ │ │ reader). │ │ │ │ │ 1.3.1.2. Download using zsync │ │ │ │ │ zsync is a download application that efficiently resumes interrupted downloads and efficiently transfers large files with small modifications (if you have an older local copy). Use zsync if you have trouble │ │ │ │ │ downloading the image using the Normal Download method. │ │ │ │ │ zsync in Linux │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 1278 │ │ │ │ │ │ │ │ │ │ Install zsync using Synaptic or, by running the following in a terminal │ │ │ │ │ sudo apt-get install zsync │ │ │ │ │ │ │ │ │ │ Then run this command to download the iso to your computer │ │ │ │ │ @@ -4364,15 +4364,15 @@ │ │ │ │ │ 1. Connect a USB storage device (for example a flash drive or thumb drive type device). │ │ │ │ │ 2. Determine the device file corresponding to the USB flash drive. This information can be found in │ │ │ │ │ the output of dmesg after connecting the device. /proc/partitions may also be helpful. │ │ │ │ │ 3. Use the dd command to write the image to your USB storage device. For example, if your storage │ │ │ │ │ device showed up as /dev/sde, then use this command: │ │ │ │ │ dd if=linuxcnc-2.8.4-buster.iso of=/dev/sde │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 1278 │ │ │ │ │ │ │ │ │ │ Writing the image to a USB storage device in Mac OSX │ │ │ │ │ 1. Open a terminal and type │ │ │ │ │ diskutil list │ │ │ │ │ │ │ │ │ │ @@ -4407,15 +4407,15 @@ │ │ │ │ │ With the USB storage device plugged in or the DVD in the DVD drive, shut down the computer then │ │ │ │ │ turn the computer back on. This will boot the computer from the Live/Install Image and choose the │ │ │ │ │ Live boot option. │ │ │ │ │ nota │ │ │ │ │ If the system does not boot from the DVD or USB stick it might be necessary to change the boot order │ │ │ │ │ in the PC BIOS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 1278 │ │ │ │ │ │ │ │ │ │ Once the computer has booted up you can try out LinuxCNC without installing it. You can not create │ │ │ │ │ custom configurations or modify most system settings in a Live session, but you can (and should) run │ │ │ │ │ the latency test. │ │ │ │ │ To try out LinuxCNC: from the Applications/CNC menu pick LinuxCNC. A dialog box will open from │ │ │ │ │ @@ -4467,15 +4467,15 @@ │ │ │ │ │ linuxcnc-uspace │ │ │ │ │ │ │ │ │ │ Typical use │ │ │ │ │ simulation only │ │ │ │ │ machine control │ │ │ │ │ & simulation │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Distribution │ │ │ │ │ Debian Buster │ │ │ │ │ │ │ │ │ │ Architecture │ │ │ │ │ amd64 │ │ │ │ │ │ │ │ │ │ @@ -4564,15 +4564,15 @@ │ │ │ │ │ exit. While running the system appears to be stable. But should nevertheless be considered │ │ │ │ │ experimental at this point. │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ If you decide to use the RTAI 5.2 kernel and see a problem outside the circumstances described │ │ │ │ │ above, then please report it immediately to the project developers. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 1278 │ │ │ │ │ │ │ │ │ │ 1.3.7.1. Installing on Debian Buster (with Preempt-RT kernel) │ │ │ │ │ │ │ │ │ │ 1. Install Debian Buster (Debian 10), amd64 version. You can download the installer here: https://www.deb │ │ │ │ │ releases/buster/ . │ │ │ │ │ @@ -4613,15 +4613,15 @@ │ │ │ │ │ │ │ │ │ │ 8. Install uspace (a reboot may be required prior to installing uspace) │ │ │ │ │ sudo apt-get install linuxcnc-uspace │ │ │ │ │ │ │ │ │ │ 9. Optionally you can install mesaflash if you are using a Mesa card. │ │ │ │ │ sudo apt install mesaflash │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 1278 │ │ │ │ │ │ │ │ │ │ 1.3.7.2. Installing on Debian Buster (with experimental RTAI kernel) │ │ │ │ │ │ │ │ │ │ aviso │ │ │ │ │ This kernel has known stability problems. It appears to run reliably once LinuxCNC is loaded. │ │ │ │ │ @@ -4656,15 +4656,15 @@ │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring. │ │ │ │ │ # Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ │ │ │ │ │ 4. Add the apt repository: │ │ │ │ │ echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee /etc/apt/sources. ←list.d/linuxcnc.list │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 1278 │ │ │ │ │ │ │ │ │ │ 5. Update the package list from linuxcnc.org │ │ │ │ │ sudo apt-get update │ │ │ │ │ │ │ │ │ │ 6. install the realtime kernel │ │ │ │ │ @@ -4701,15 +4701,15 @@ │ │ │ │ │ 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name │ │ │ │ │ is 3.4-9-rtai-686-pae. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Run │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 1278 │ │ │ │ │ │ │ │ │ │ 1.4. Running LinuxCNC │ │ │ │ │ 1.4.1. Invoking LinuxCNC │ │ │ │ │ After installation, LinuxCNC starts just like any other Linux program: run it from the terminal by │ │ │ │ │ issuing the command linuxcnc, or select it in the Applications -> CNC menu. │ │ │ │ │ @@ -4743,15 +4743,15 @@ │ │ │ │ │ qtvcp_screens - Guis diseñadas con Qt5 y Python │ │ │ │ │ tklinuxcnc - Keyboard and Mouse Gui(no longer maintained) │ │ │ │ │ touchy - Touch Screen GUI │ │ │ │ │ A GUI configuration directory may contain subdirectories with configurations that illustrate special │ │ │ │ │ situations or the embedding of other applications. │ │ │ │ │ The by_interface configurations are organized around common, supported interfaces like: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 1278 │ │ │ │ │ │ │ │ │ │ general mechatronics │ │ │ │ │ mesa │ │ │ │ │ parport │ │ │ │ │ pico │ │ │ │ │ @@ -4781,15 +4781,15 @@ │ │ │ │ │ parport - Applications to test parport. │ │ │ │ │ pyvcp - Example pyvcp applications. │ │ │ │ │ xhc-hb04 - Applications to test an xhc-hb04 USB wireless MPG │ │ │ │ │ nota │ │ │ │ │ Under the Apps directory, only applications that are usefully modified by the user are offered for │ │ │ │ │ copying to the user’s directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 1.1: Selector de Configuración de LinuxCNC │ │ │ │ │ Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration. │ │ │ │ │ Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly │ │ │ │ │ launch this configuration without showing the Configuration Selector screen. │ │ │ │ │ @@ -4805,15 +4805,15 @@ │ │ │ │ │ All configurations listed under Sample Configurations/sim are intended to run on any computer. No │ │ │ │ │ specific hardware is required and real-time support is not needed. │ │ │ │ │ These configurations are useful for studying individual capabilities or options. The sim configurations │ │ │ │ │ are organized according to the graphical user interface used in the demonstration. The directory for │ │ │ │ │ axis contains the most choices and subdirectories because it is the most tested GUI. The capabilities │ │ │ │ │ demonstrated with any specific GUI may be available in other GUIs as well. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 1278 │ │ │ │ │ │ │ │ │ │ 1.4.5. Configuration Resources │ │ │ │ │ The Configuration Selector copies all files needed for a configuration to a new subdirectory of ~/linuxcnc/configs (equivalently: /home/username/linuxcnc/configs). Each created directory will include │ │ │ │ │ at least one INI file (iniflename.ini) that is used to describe a specific configuration. │ │ │ │ │ File resources within the copied directory will typically include one or more INI file (filename.ini) │ │ │ │ │ @@ -4855,15 +4855,15 @@ │ │ │ │ │ The details will depend on which platform you’re running on. Open a terminal then type lsb_release │ │ │ │ │ -ic to find this information out: │ │ │ │ │ lsb_release -ic │ │ │ │ │ Distributor ID: Debian │ │ │ │ │ Codename: │ │ │ │ │ wheezy │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 1278 │ │ │ │ │ │ │ │ │ │ You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also │ │ │ │ │ available for Debian Jessie or Debian Buster if you happen to already be running one of those. │ │ │ │ │ You will also need to check which realtime kernel is being used: │ │ │ │ │ uname -r │ │ │ │ │ @@ -4910,15 +4910,15 @@ │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Platform │ │ │ │ │ Debian Buster - RTAI │ │ │ │ │ │ │ │ │ │ 19 / 1278 │ │ │ │ │ │ │ │ │ │ apt source line │ │ │ │ │ @@ -4942,15 +4942,15 @@ │ │ │ │ │ will be automatically upgraded to the new one. │ │ │ │ │ 1.5.1.3. Ubuntu Precise │ │ │ │ │ Click on the Dash Home icon in the top left. │ │ │ │ │ In the Search field, type ”update”, then click on the Update Manager icon. │ │ │ │ │ Click the Check button to fetch the list of packages available. │ │ │ │ │ Click the Install Updates button to install the new versions of all packages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.2. Updating without Network │ │ │ │ │ To update without a network connection you need to download the .deb then install it with dpkg. The │ │ │ │ │ .debs can be found in https://linuxcnc.org/dists/ . │ │ │ │ │ You have to drill down from the above link to find the correct deb for your installation. Open a terminal │ │ │ │ │ @@ -4990,15 +4990,15 @@ │ │ │ │ │ The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your │ │ │ │ │ machine configuration. │ │ │ │ │ The main difference is that LinuxCNC no longer makes any assumptions about which joint controls │ │ │ │ │ which axis. This change is generally termed ”joints-axes” after the name of the development branch │ │ │ │ │ where the changes started. This change has been in development since at least 2010, and has finally │ │ │ │ │ been merged. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.4.1. Distribution Configurations (updates for joints_axes) │ │ │ │ │ The LinuxCNC distribution includes many example configurations organized in directory hierarchies │ │ │ │ │ named: by_machine, by_interface, and sim (simulated machines). These configurations are often used │ │ │ │ │ as starting points for making a new configuration, as examples for study, or as complete simulated │ │ │ │ │ @@ -5036,15 +5036,15 @@ │ │ │ │ │ motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will │ │ │ │ │ take care of these changes. To control extra spindles the G and M-codes which control spindle speed │ │ │ │ │ now accept an additional ”$” argument, for example M3 $2 to start the third spindle. ”$” was chosen │ │ │ │ │ to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match │ │ │ │ │ any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man │ │ │ │ │ motion for the HAL pin changes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.4.4. TRAJ velocities, accelerations names │ │ │ │ │ With incorporation of joints_axes functionality, some names were changed to clarify available functionality. │ │ │ │ │ was: [TRAJ]MAX_VELOCITY │ │ │ │ │ was: [TRAJ]DEFAULT_VELOCITY │ │ │ │ │ @@ -5092,15 +5092,15 @@ │ │ │ │ │ │ │ │ │ │ 1.5.4.6. Lathe Configurations │ │ │ │ │ Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation │ │ │ │ │ configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for │ │ │ │ │ homing the unused Y coordinate. These arrangements are no longer required or recommended. │ │ │ │ │ Historical lathe configurations used the default options for the trivkins kinematics module. These default options configure all axis letters (XYZABCUVW). With joints_axes incorporation, a more appropriate kinematics specification sets the coordinates to the exact ones used (XZ) and sets the number │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 1278 │ │ │ │ │ │ │ │ │ │ of joints accordingly to 2. There is no need for an INI file [AXIS_Y] section and only two [JOINT_N] │ │ │ │ │ sections need be defined. │ │ │ │ │ Example INI file items for a lathe (only sections relevant to kinematics are shown): │ │ │ │ │ [KINS] │ │ │ │ │ @@ -5144,15 +5144,15 @@ │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 4 │ │ │ │ │ [TRAJ]COORDINATES = XYYZ │ │ │ │ │ │ │ │ │ │ Gantry using trivkins (KINEMATICS_BOTH) with duplicated axis letters and a rotary axis with skipped │ │ │ │ │ axis letters (A,B skipped): │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 1278 │ │ │ │ │ │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XYYZC kinstype=BOTH │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 5 │ │ │ │ │ [TRAJ]COORDINATES = XYYZC │ │ │ │ │ @@ -5196,15 +5196,15 @@ │ │ │ │ │ HAL) │ │ │ │ │ │ │ │ │ │ To create these HAL pins for locking joints, specify all joints that are used as locking indexers with the │ │ │ │ │ unlock_joints_mask parameter for the motmod module. (bit0(LSB)==>joint0, bit1==>joint1, etc.) │ │ │ │ │ [EMCMOT] │ │ │ │ │ EMCMOT = motmod unlock_joints_mask=BITMASK │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 1278 │ │ │ │ │ │ │ │ │ │ As an example, consider a machine using trivkins kinematics with coordinates XYZB where B is a │ │ │ │ │ locking indexer. For trivkins, joint numbers (starting with 0) are assigned consecutively to the coordinates specified (axis coordinate letters may be omitted). For this example, X==>joint0, Y==>joint1, │ │ │ │ │ Z==>joint2, B==>joint3. The mask to specify joint 3 is 000001000 (binary) == 0x08 (hexadecimal) │ │ │ │ │ The required INI file entries for this trivkins XYZB example are: │ │ │ │ │ @@ -5243,15 +5243,15 @@ │ │ │ │ │ In 2.7.x versions, trajectory planning ([TRAJ]) settings included: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_ACCELERATION │ │ │ │ │ MAX_ACCELERATION │ │ │ │ │ │ │ │ │ │ Interim work prepared for distinct linear and angular items by renaming these items as: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 1278 │ │ │ │ │ │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_LINEAR_ACCEL │ │ │ │ │ MAX_LINEAR_ACCEL │ │ │ │ │ │ │ │ │ │ @@ -5324,15 +5324,15 @@ │ │ │ │ │ net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode │ │ │ │ │ │ │ │ │ │ (The signal names jora_1_y_* are examples, names prior to conversion for joints_axes will depend │ │ │ │ │ upon the specific configuration details.) │ │ │ │ │ Configurations with non-identity kinematics and configurations that use duplicated axis letters (for │ │ │ │ │ example, gantries using more than one joint for an axis coordinate) will require appropriate independent control logic to support both joint and teleop (world) jogging. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.5.2. INI HAL pins │ │ │ │ │ HAL pins are created for INI file items for both joints ([JOINT_N]) and axes ([AXIS_L]): │ │ │ │ │ For N = 0 … [KINS](JOINTS-1): │ │ │ │ │ INI file item │ │ │ │ │ @@ -5389,15 +5389,15 @@ │ │ │ │ │ (servo last period in clks) │ │ │ │ │ motion.servo.last-period_ns (kernel-dependent availability) │ │ │ │ │ │ │ │ │ │ 1.5.7. Interface changes for joints_axes 2.8.x │ │ │ │ │ 1.5.7.1. Python LinuxCNC module │ │ │ │ │ The jog() interface includes a joint-flag to specify joint (True) or teleop (False) jogging: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 1278 │ │ │ │ │ │ │ │ │ │ jog(command, joint-flag, axis-or-joint-number, velocity[, distance]) │ │ │ │ │ jog(linuxcnc.JOG_STOP, joint-flag, axis-or-joint-number) │ │ │ │ │ jog(linuxcnc.JOG_CONTINUOUS, joint-flag, joint-flag, velocity) │ │ │ │ │ jog(linuxcnc.JOG_INCREMENT, joint-flag, axis-or-joint-number, velocity, distance) │ │ │ │ │ @@ -5434,15 +5434,15 @@ │ │ │ │ │ By default, the trivkins module declares itself as having IDENTITY kinematics. The distinctions of joint/world operations can be made visible in the AXIS GUI when using trivkins by setting the kinemetics │ │ │ │ │ type to a non-IDENTITY type using kinstype=both. The both setting indicates that both forward and │ │ │ │ │ inverse kinematics functions are available and GUI provisions that hide the distinctions of joints and │ │ │ │ │ axis letters should not be employed. For example, for an xyz configuration, specify: │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins coordinates=xyz kinstype=both │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 1278 │ │ │ │ │ │ │ │ │ │ With this setting, identity kinematics will be used but the AXIS GUI will: │ │ │ │ │ 1. show joint numbers prior to homing │ │ │ │ │ 2. show axis letters after successful homing │ │ │ │ │ 3. support toggling between joint and teleop modes with the $ key │ │ │ │ │ @@ -5491,15 +5491,15 @@ │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH │ │ │ │ │ ... │ │ │ │ │ [TRAJ] │ │ │ │ │ COORDINATES = XYYZ │ │ │ │ │ ... │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 1278 │ │ │ │ │ │ │ │ │ │ This machine, after homing, has a one-to-one correspondence between a single axis letter (Y) and a │ │ │ │ │ pair of joints (1,2). Using kinematics=BOTH allows control of individual joints in joint mode if/when │ │ │ │ │ required. │ │ │ │ │ The AXIS GUI supports configurations using non-identity kinematics with: │ │ │ │ │ @@ -5537,15 +5537,15 @@ │ │ │ │ │ The code of emcsh.cc provides the set of Tcl commands used by TkLinuxCNC. The commands are │ │ │ │ │ available to Tcl applications as the Tcl package named Linuxcnc. A number of commands previously │ │ │ │ │ required the use of a numeric argument to specify an axis coordinate (0-->X, 1-->Y, …, 8-->W). These │ │ │ │ │ commands have been simplified to use an argument that is just the coordinate letter. │ │ │ │ │ Commands now using a coordinate letter argument are: │ │ │ │ │ 1. emc_pos_offset │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 1278 │ │ │ │ │ │ │ │ │ │ 2. emc_abs_cmd_pos │ │ │ │ │ 3. emc_abs_act_pos │ │ │ │ │ 4. emc_rel_cmd_pos │ │ │ │ │ 5. emc_rel_act_pos │ │ │ │ │ @@ -5582,15 +5582,15 @@ │ │ │ │ │ is: set jog_stop joint_number|axis_letter │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Test for teleop mode using command: get teleop_enable │ │ │ │ │ If TELEOP_ENABLE=YES, use axis_letter; │ │ │ │ │ Else use joint_number │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234 │ │ │ │ │ in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided │ │ │ │ │ the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding │ │ │ │ │ @@ -5629,15 +5629,15 @@ │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ HALFILE = simulated_home.hal │ │ │ │ │ │ │ │ │ │ Lathe configs often shared the same HAL files and used the expedient method of specifying 3 axes with │ │ │ │ │ Y unused. More complex sim configs provided specific sets of HAL files according to the configuration │ │ │ │ │ purpose. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.12.2. Post-joints_axes │ │ │ │ │ With the incorporation of joints_axes functionality, many sims provided in the distribution now take advantage of a general purpose HAL file that supports numerous configurations automatically. A │ │ │ │ │ typical sim config HALFILE specification is: │ │ │ │ │ [HAL] │ │ │ │ │ @@ -5677,15 +5677,15 @@ │ │ │ │ │ commands are included too. │ │ │ │ │ The equivalent HAL file can be used to create a new configuration based on the original configuration │ │ │ │ │ made with LIB:basic_sim.tcl with the following steps: │ │ │ │ │ 1. Run the simulator configuration to create a new equivalent HAL file, for example: example_cmds.hal. │ │ │ │ │ 2. To use this new equivalent HAL file in the original simulator configuration INI file (or a copy of │ │ │ │ │ it), edit to change: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 1278 │ │ │ │ │ │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = LIB:basic_sim.tcl other_parameters │ │ │ │ │ │ │ │ │ │ to: │ │ │ │ │ @@ -5714,15 +5714,15 @@ │ │ │ │ │ motion.homing-inhibit (see motion manpage) │ │ │ │ │ │ │ │ │ │ 1.5.13.3. HAL component updates │ │ │ │ │ 1. siggen: new pin reset to set output signal values to predefined state │ │ │ │ │ 2. biquad: pins type,f0,Q,s1,s2 were formerly params │ │ │ │ │ 3. userkins: template for user-built kinematics modules using halcompile │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.13.4. XHC-HB04 Pendant Support │ │ │ │ │ Remove unused pin jogenable-off. │ │ │ │ │ Add pin amux-enable so that the multiplexed acceleration reductions are now enabled by the ANDing │ │ │ │ │ the pins: is-manual and amux-enable. These two pins are typically connected to halui.mode.is-manual │ │ │ │ │ @@ -5750,15 +5750,15 @@ │ │ │ │ │ 1.5.14. Changes beyond 2.8.x (master branch development) │ │ │ │ │ The master branch is version-tagged with prerelease notation, typically 2.9~pre* │ │ │ │ │ 1.5.14.1. Python3 and GTK3 │ │ │ │ │ 2.9 changed to Python3 and GTK3. This only affects you if you have custom glade or Python handlers │ │ │ │ │ in your config. │ │ │ │ │ 1. Run py3clean in your config directory to remove any temporary files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 1278 │ │ │ │ │ │ │ │ │ │ 2. Run py3clean in your LinuxCNC source directory if you compile from source. │ │ │ │ │ 3. Run 2to3 -w on any .py files you have written. │ │ │ │ │ 4. Make sure the interpreter in the first line of the script is Python 3, not Python 2. │ │ │ │ │ 5. Open the ui file in glade, and save it. It should convert everything that can be converted automatically, and give you warnings. │ │ │ │ │ @@ -5793,15 +5793,15 @@ │ │ │ │ │ A new motmod parameter (num_extrajoints) specifies joints that are homed by conventional joint │ │ │ │ │ homing methods but controlled by new HAL pins (joint.N.posthome-cmd) after homing. Such joints │ │ │ │ │ may be managed by independent motion planner/controllers in HAL and manipulated from G-code │ │ │ │ │ using custom M-codes. See the motion man page for more info. │ │ │ │ │ A homing api is provided by src/emc/motion/homing.h to support users’ custom homing code that │ │ │ │ │ replaces src/emc/motion/homing.c with a user-customized homing.c file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 1278 │ │ │ │ │ │ │ │ │ │ The motion module supports kinematics modules that define new functions kinematicsSwitchable() │ │ │ │ │ and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided │ │ │ │ │ for use of such kinematics modules. │ │ │ │ │ Provided kinematics modules that implement kinematics switching use the switchkins.o object to │ │ │ │ │ @@ -5830,15 +5830,15 @@ │ │ │ │ │ of a homing module that can be built with halcompile. │ │ │ │ │ lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified. │ │ │ │ │ lib/python/vismach.py: new HAL pin vismach.plotclear │ │ │ │ │ 1.5.14.6. HAL │ │ │ │ │ sim_home_switch: added I/O pin for index-enable │ │ │ │ │ motion.feed-upm — current feed in units per minute │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 1278 │ │ │ │ │ │ │ │ │ │ 1.5.14.7. Configs │ │ │ │ │ [DISPLAY]GEOMETRY settings that include the ! character specify that displayed rotations respect │ │ │ │ │ G5x,G92 offsets. │ │ │ │ │ sim/configs/axis/axis_9axis: demonstrate simulated encoder index │ │ │ │ │ @@ -5868,15 +5868,15 @@ │ │ │ │ │ 1.6.1.2. Ubuntu │ │ │ │ │ When you install LinuxCNC with the Ubuntu LiveCD the default is to have to log in each time you turn │ │ │ │ │ the computer on. To enable automatic login go to System > Administration > Login Window. If it is │ │ │ │ │ a fresh install the Login Window might take a second or three to pop up. You will have to have your │ │ │ │ │ password that you used for the install to gain access to the Login Window Preferences window. In the │ │ │ │ │ Security tab check off Enable Automatic Login and pick a user name from the list (that would be you). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 1278 │ │ │ │ │ │ │ │ │ │ 1.6.2. Automatic Startup │ │ │ │ │ To have LinuxCNC start automatically with your config after turning on the computer go to System │ │ │ │ │ > Preferences > Sessions > Startup Applications, click Add. Browse to your config and select the .ini │ │ │ │ │ file. When the file picker dialog closes, add linuxcnc and a space in front of the path to your .ini file. │ │ │ │ │ @@ -5912,15 +5912,15 @@ │ │ │ │ │ │ │ │ │ │ If you want to send the output from lsmod to a text file in a terminal window type: │ │ │ │ │ lsmod > mymod.txt │ │ │ │ │ │ │ │ │ │ The resulting text file will be located in the home directory if you did not change directories when you │ │ │ │ │ opened up the terminal window and it will be named mymod.txt or what ever you named it. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 1278 │ │ │ │ │ │ │ │ │ │ 1.6.6. Editing a Root File │ │ │ │ │ When you open the file browser and you see the owner of the file is root you must do extra steps to edit │ │ │ │ │ that file. Editing some root files can have bad results. Be careful when editing root files. Generally, │ │ │ │ │ you can open and view most root files, but they will open in read only mode. │ │ │ │ │ @@ -5952,15 +5952,15 @@ │ │ │ │ │ │ │ │ │ │ To move directly to your home directory, in the terrminal window use the cd command with no arguments: │ │ │ │ │ cd │ │ │ │ │ │ │ │ │ │ To move down to the linuxcnc/configs subdirectory in the terminal window type: │ │ │ │ │ cd linuxcnc/configs │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 1278 │ │ │ │ │ │ │ │ │ │ 1.6.7.3. Listing files in a directory │ │ │ │ │ To view a list of all the files and subdirectories in the terminal window type: │ │ │ │ │ dir │ │ │ │ │ │ │ │ │ │ @@ -5997,15 +5997,15 @@ │ │ │ │ │ messages to a file use the redirection operator >, like this: │ │ │ │ │ dmesg > bootmsg.txt │ │ │ │ │ │ │ │ │ │ The contents of this file can be copied and pasted on line to share with people trying to help you │ │ │ │ │ diagnose your problem. │ │ │ │ │ To clear the message buffer type this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 1278 │ │ │ │ │ │ │ │ │ │ sudo dmesg -c │ │ │ │ │ │ │ │ │ │ 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. │ │ │ │ │ To find the built in parallel port address use grep to filter the information out of dmesg. │ │ │ │ │ @@ -6036,15 +6036,15 @@ │ │ │ │ │ is the same as f0, e.g., a file named f0 in the startup directory │ │ │ │ │ ../f1 │ │ │ │ │ refers to a file f1 in the parent directory │ │ │ │ │ ../../f2 │ │ │ │ │ refers to a file f2 in the parent of the parent directory │ │ │ │ │ ../../../f3 etc. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 2 │ │ │ │ │ │ │ │ │ │ General User Information │ │ │ │ │ 2.1. User Foreword │ │ │ │ │ @@ -6073,15 +6073,15 @@ │ │ │ │ │ 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 │ │ │ │ │ of modules and following those standards. │ │ │ │ │ The Separation rule requires that we make distinct parts that do little things. By separating functions │ │ │ │ │ debugging is much easier and replacement modules can be dropped into the system and comparisons │ │ │ │ │ easily made. │ │ │ │ │ 1 Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 1278 │ │ │ │ │ │ │ │ │ │ What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make │ │ │ │ │ choices about how you will use the system. Many of these choices are a part of machine integration, │ │ │ │ │ but many also affect the way you will use your machine. As you read you will find many places where │ │ │ │ │ you will need to make comparisons. Eventually you will make choices, ”I’ll use this interface rather │ │ │ │ │ @@ -6116,15 +6116,15 @@ │ │ │ │ │ the high level controllers that coordinate the generation and execution of motion control of the CNC │ │ │ │ │ machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO) │ │ │ │ │ and the task executor (EMCTASK). │ │ │ │ │ The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper │ │ │ │ │ motors might look like: │ │ │ │ │ 2 Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.1: Simple LinuxCNC Controlled Machine │ │ │ │ │ A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives, │ │ │ │ │ each of which has one stepper motor connected to it. Each drive receives two independent signals; │ │ │ │ │ one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise │ │ │ │ │ @@ -6146,15 +6146,15 @@ │ │ │ │ │ The INI file contains all the basic hardware information regarding the operation of the CNC mill, │ │ │ │ │ such as the number of steps each stepper motor must turn to complete one full revolution, the │ │ │ │ │ maximum rate at which each stepper may operate at, the limits of travel of each axis or the │ │ │ │ │ configuration and behaviour of limit switches on each axis. │ │ │ │ │ • My_CNC.hal │ │ │ │ │ This HAL file contains information that tells LinuxCNC how to link the internal virtual signals to │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 1278 │ │ │ │ │ │ │ │ │ │ physical connections beyond the computer. For example, specifying pin 4 on the parallel port to │ │ │ │ │ send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis motor │ │ │ │ │ when a limit switch is triggered on parallel port pin 13. │ │ │ │ │ • custom.HAL │ │ │ │ │ @@ -6182,77 +6182,77 @@ │ │ │ │ │ 2.2.3. Graphical User Interfaces │ │ │ │ │ A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with. │ │ │ │ │ LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain │ │ │ │ │ fields contained in the INI file: │ │ │ │ │ AXIS │ │ │ │ │ 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: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 2.2: AXIS, the standard keyboard GUI interface │ │ │ │ │ │ │ │ │ │ Touchy │ │ │ │ │ Touchy, a touch screens GUI: │ │ │ │ │ │ │ │ │ │ 47 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 2.3: Touchy, a touch screen GUI │ │ │ │ │ │ │ │ │ │ Gscreen │ │ │ │ │ Gscreen, a user-configurable touch screen GUI: │ │ │ │ │ │ │ │ │ │ 48 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.4: Gscreen, a configurable base touch screen GUI │ │ │ │ │ │ │ │ │ │ GMOCCAPY │ │ │ │ │ GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally │ │ │ │ │ well in applications where a keyboard and mouse are the preferred methods of controlling the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.5: GMOCCAPY, a touch screen GUI based on Gscreen │ │ │ │ │ │ │ │ │ │ NGCGUI │ │ │ │ │ NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be │ │ │ │ │ run as a standalone program or embedded into another GUI as a series of tabs. The following │ │ │ │ │ screenshot shows NGCGUI embedded into AXIS: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.6: NGCGUI, a graphical interface integrated into AXIS │ │ │ │ │ │ │ │ │ │ TkLinuxCNC │ │ │ │ │ TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 2.7: TkLinuxCNC graphical interface │ │ │ │ │ │ │ │ │ │ Xemc │ │ │ │ │ an X-Window program │ │ │ │ │ halui │ │ │ │ │ A HAL based user interface allowing to control LinuxCNC using buttons and switches │ │ │ │ │ linuxcncrsh │ │ │ │ │ A telnet based user interface allowing to send commands from remote computers. │ │ │ │ │ │ │ │ │ │ 52 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 1278 │ │ │ │ │ │ │ │ │ │ 2.2.4. Virtual Control Panels │ │ │ │ │ As mentioned above, many of LinuxCNC’s GUIs may be customized by the user. This may be done to │ │ │ │ │ add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased │ │ │ │ │ flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC: │ │ │ │ │ @@ -6266,15 +6266,15 @@ │ │ │ │ │ GladeVCP │ │ │ │ │ GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs. │ │ │ │ │ GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL │ │ │ │ │ virtual signals, but can include other external interfaces outside LinuxCNC such as window or │ │ │ │ │ network events. GladeVCP is also more flexible in how it may be configured to appear on the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.9: GladeVCP Example Embedded Into AXIS GUI │ │ │ │ │ │ │ │ │ │ 2.2.5. Languages │ │ │ │ │ LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including │ │ │ │ │ @@ -6296,15 +6296,15 @@ │ │ │ │ │ │ │ │ │ │ 2.2.7. Modes of Operation │ │ │ │ │ When LinuxCNC is running, there are three different major modes used for inputting commands. │ │ │ │ │ These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes │ │ │ │ │ a big difference in the way that the LinuxCNC control behaves. There are specific things that can be │ │ │ │ │ done in one mode that cannot be done in another. An operator can home an axis in manual mode but │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 55 / 1278 │ │ │ │ │ │ │ │ │ │ not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes │ │ │ │ │ in the auto mode but not in manual or MDI. │ │ │ │ │ In manual mode, each command is entered separately. In human terms a manual command might be │ │ │ │ │ ”turn on coolant” or ”jog X at 25 inches per minute”. These are roughly equivalent to flipping a switch │ │ │ │ │ @@ -6342,15 +6342,15 @@ │ │ │ │ │ acceleration, must be obeyed by the trajectory planner. │ │ │ │ │ For more information on the Trajectory Planner INI options see the Trajectory Section in the INI │ │ │ │ │ chapter. │ │ │ │ │ 2.3.1.2. Path Following │ │ │ │ │ A less straightforward problem is that of path following. When you program a corner in G-code, the │ │ │ │ │ trajectory planner can do several things, all of which are right in some cases: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 1278 │ │ │ │ │ │ │ │ │ │ It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new │ │ │ │ │ direction. │ │ │ │ │ It can also do what is called blending, which is to keep the feed rate up while going through the │ │ │ │ │ corner, making it necessary to round the corner off in order to obey machine constraints. │ │ │ │ │ @@ -6392,15 +6392,15 @@ │ │ │ │ │ the end point of the move is as large as it needs to be to keep up the best contouring feed. │ │ │ │ │ Naive CAM Detector │ │ │ │ │ Successive G1 moves that involve only the XYZ axes that deviate less than Q- from a straight │ │ │ │ │ line are merged into a single straight line. This merged movement replaces the individual G1 │ │ │ │ │ movements for the purposes of blending with tolerance. Between successive movements, the │ │ │ │ │ controlled point will pass no more than P- from the actual endpoints of the movements. The │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 57 / 1278 │ │ │ │ │ │ │ │ │ │ controlled point will touch at least one point on each movement. The machine will 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). On G2/3 moves in the G17 (XY) plane, │ │ │ │ │ when the maximum deviation of an arc from a straight line is less than the G64 Q- tolerance, the │ │ │ │ │ @@ -6436,15 +6436,15 @@ │ │ │ │ │ │ │ │ │ │ 2.3.2. G-code │ │ │ │ │ 2.3.2.1. Defaults │ │ │ │ │ When LinuxCNC first starts up many G- and M-codes are loaded by default. The current active G- and │ │ │ │ │ M-codes can be viewed on the MDI tab in the Active G-Codes: window in the AXIS interface. These │ │ │ │ │ G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 58 / 1278 │ │ │ │ │ │ │ │ │ │ one does before running LinuxCNC. The defaults can be changed when running a G-Code file and │ │ │ │ │ left in a different state than when you started your LinuxCNC session. The best practice is to set the │ │ │ │ │ defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have │ │ │ │ │ not changed. Printing out the G-Code Quick Reference page can help you remember what each one │ │ │ │ │ @@ -6478,15 +6478,15 @@ │ │ │ │ │ Coordinate Systems is in the Coordinate System section of this manual. │ │ │ │ │ 2.3.5.1. G53 Machine Coordinate │ │ │ │ │ When you home LinuxCNC you set the G53 Machine Coordinate System to 0 for each axis homed. │ │ │ │ │ No other coordinate systems or tool offsets are changed by homing. │ │ │ │ │ The only time you move in the G53 machine coordinate system is when you program a G53 on the │ │ │ │ │ same line as a move. Normally you are in the G54 coordinate system. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 1278 │ │ │ │ │ │ │ │ │ │ 2.3.5.2. G54-59.3 User Coordinates │ │ │ │ │ Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate │ │ │ │ │ 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 │ │ │ │ │ Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number │ │ │ │ │ @@ -6513,22 +6513,22 @@ │ │ │ │ │ in relation to the material. │ │ │ │ │ Note also the position of the limit switches and the direction of activation of their cams. Several │ │ │ │ │ combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed │ │ │ │ │ limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will │ │ │ │ │ be reversed, +X will be on the right of the table and -X on the left. This inversion does not change │ │ │ │ │ anything from the point of view of the direction of movement of the tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 60 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.11: Typical Mill Configuration │ │ │ │ │ The following diagram shows a typical lathe showing direction of travel of the tool and limit switches. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 2.12: Typical Lathe Configuration │ │ │ │ │ │ │ │ │ │ 2.4. Starting LinuxCNC │ │ │ │ │ 2.4.1. Running LinuxCNC │ │ │ │ │ LinuxCNC is started with the script file linuxcnc. │ │ │ │ │ linuxcnc [options] [] │ │ │ │ │ @@ -6543,15 +6543,15 @@ │ │ │ │ │ $ linuxcnc [Options] path/to/your_ini_file │ │ │ │ │ Name the configuration INI file using its path │ │ │ │ │ $ linuxcnc [Options] -l │ │ │ │ │ Use the previously used configuration inifile │ │ │ │ │ │ │ │ │ │ 61 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 1278 │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ -d: Turn on ”debug” mode │ │ │ │ │ -v: Turn on ”verbose” mode │ │ │ │ │ -k: Continue in the presence of errors in HAL files │ │ │ │ │ @@ -6573,15 +6573,15 @@ │ │ │ │ │ or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to │ │ │ │ │ those pins. See the [HAL] section of the INI configuration for more information. │ │ │ │ │ 2.4.1.1. Configuration Selector │ │ │ │ │ If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and │ │ │ │ │ save a sample configuration. Once a sample configuration has been saved it can be modified to suit │ │ │ │ │ your application. The configuration files are saved in linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 1278 │ │ │ │ │ │ │ │ │ │ 2.5. CNC Machine Overview │ │ │ │ │ This section gives a brief description of how a CNC machine is viewed from the input and output ends │ │ │ │ │ of the Interpreter. │ │ │ │ │ │ │ │ │ │ @@ -6618,15 +6618,15 @@ │ │ │ │ │ of a lathe. The spindle may or may not be controlled by the CNC software. LinuxCNC offers support for │ │ │ │ │ up to 8 spindles, which can be individually controlled and can run simultaneously at different speeds │ │ │ │ │ and in different directions. │ │ │ │ │ 2.5.1.3. Coolant │ │ │ │ │ Flood coolant and mist coolant may each be turned on independently. The RS274/NGC language turns │ │ │ │ │ them off together see section M7 M8 M9. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 64 / 1278 │ │ │ │ │ │ │ │ │ │ 2.5.1.4. Feed and Speed Override │ │ │ │ │ A CNC machine can have separate feed and speed override controls, which let the operator specify │ │ │ │ │ that the actual feed rate or spindle speed used in machining at some percentage of the programmed │ │ │ │ │ rate. │ │ │ │ │ @@ -6658,15 +6658,15 @@ │ │ │ │ │ the spindle. The location of the controlled point can be moved out along the spindle axis by specifying │ │ │ │ │ some positive amount for the tool length offset. This amount is normally the length of the cutting tool │ │ │ │ │ in use, so that the controlled point is at the end of the cutting tool. On a lathe, tool length offsets can │ │ │ │ │ be specified for X and Z axes, and the controlled point is either at the tool tip or slightly outside it │ │ │ │ │ (where the perpendicular, axis-aligned lines touched by the front and side of the tool intersect). │ │ │ │ │ 3 If the parallelism requirement is violated, the system builder will have to say how to distinguish clockwise from counterclockwise. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 1278 │ │ │ │ │ │ │ │ │ │ 2.5.2.4. Coordinated Linear Motion │ │ │ │ │ To drive a tool along a specified path, a machining center must often coordinate the motion of several │ │ │ │ │ axes. We use the term coordinated linear motion to describe the situation in which, nominally, each │ │ │ │ │ axis moves at constant speed and all axes move from their starting positions to their end positions at │ │ │ │ │ @@ -6699,15 +6699,15 @@ │ │ │ │ │ 2.5.2.8. Units │ │ │ │ │ Units used for distances along the X, Y, and Z axes may be measured in millimeters or inches. Units for │ │ │ │ │ all other quantities involved in machine control cannot be changed. Different quantities use different │ │ │ │ │ specific units. Spindle speed is measured in revolutions per minute. The positions of rotational axes │ │ │ │ │ are measured in degrees. Feed rates are expressed in current length units per minute, or degrees per │ │ │ │ │ minute, or length units per spindle revolution, as described in section G93 G94 G95. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 1278 │ │ │ │ │ │ │ │ │ │ 2.5.2.9. Current Position │ │ │ │ │ The controlled point is always at some location called the current position, and the controller always │ │ │ │ │ knows where that is. The numbers representing the current position must be adjusted in the absence │ │ │ │ │ of any axis motion if any of several events take place: │ │ │ │ │ @@ -6737,15 +6737,15 @@ │ │ │ │ │ In exact path mode, the machine follows the programmed path as exactly as possible, slowing or │ │ │ │ │ stopping if necessary at sharp corners of the path. │ │ │ │ │ continuous mode │ │ │ │ │ In continuous mode, sharp corners of the path may be rounded slightly so that the feed rate may │ │ │ │ │ be kept up (but by no more than the tolerance, if specified). │ │ │ │ │ See sections G61 and G64. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 1278 │ │ │ │ │ │ │ │ │ │ 2.5.3. Interpreter Interaction with Switches │ │ │ │ │ The Interpreter interacts with several switches. This section describes the interactions in more detail. │ │ │ │ │ In no case does the Interpreter know what the setting of any of these switches is. │ │ │ │ │ 2.5.3.1. Feed and Speed Override Switches │ │ │ │ │ @@ -6779,15 +6779,15 @@ │ │ │ │ │ │ │ │ │ │ 2.5.5. Parameters │ │ │ │ │ In the RS274/NGC language view, a machining center maintains an array of numerical parameters │ │ │ │ │ defined by a system definition (RS274NGC_MAX_PARAMETERS). Many of them have specific uses │ │ │ │ │ especially in defining coordinate systems. The number of numerical parameters can increase as development adds support for new parameters. The parameter array persists over time, even if the │ │ │ │ │ machining center is powered down. LinuxCNC uses a parameter file to ensure persistence and gives │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 68 / 1278 │ │ │ │ │ │ │ │ │ │ the Interpreter the responsibility for maintaining the file. The Interpreter reads the file when it starts │ │ │ │ │ up, and writes the file when it exits. │ │ │ │ │ All parameters are available for use in G-code programs. │ │ │ │ │ The format of a parameter file is shown in the following table. The file consists of any number of │ │ │ │ │ @@ -6833,15 +6833,15 @@ │ │ │ │ │ [DISPLAY] │ │ │ │ │ # Tell the AXIS GUI our machine is a lathe. │ │ │ │ │ LATHE = TRUE │ │ │ │ │ │ │ │ │ │ Lathe Mode in AXIS does not set your default plane to G18 (XZ). You must program that in the preamble │ │ │ │ │ of each G-code file or (better) add it to your INI file, like this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 69 / 1278 │ │ │ │ │ │ │ │ │ │ [RS274NGC] │ │ │ │ │ # G-code modal codes (modes) that the interpreter is initialized with │ │ │ │ │ # on startup │ │ │ │ │ RS274NGC_STARTUP_CODE = G18 G20 G90 │ │ │ │ │ @@ -6862,15 +6862,15 @@ │ │ │ │ │ 2.6.3. Lathe Tool Orientation │ │ │ │ │ The following figure shows the lathe tool orientations with the center line angle of each orientation │ │ │ │ │ and info on FRONTANGLE and BACKANGLE. │ │ │ │ │ The FRONTANGLE and BACKANGLE are clockwise starting at a line parallel to Z+. │ │ │ │ │ │ │ │ │ │ Figura 2.13: Lathe Tool Orientations │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 70 / 1278 │ │ │ │ │ │ │ │ │ │ In AXIS the following figures show what the Tool Positions look like, as entered in the tool table. │ │ │ │ │ Tool Positions 1, 2, 3 & 4Tool Positions 123 & 4 23 & 4 3 & 4 │ │ │ │ │ │ │ │ │ │ Tool Positions 5, 6, 7 & 8Tool Positions 567 & 8 67 & 8 7 & 8 │ │ │ │ │ @@ -6891,15 +6891,15 @@ │ │ │ │ │ Tool touch off automatically adds a G43 so the current tool is the current offset. │ │ │ │ │ A typical session might be: │ │ │ │ │ 1. Home each axis if not homed. │ │ │ │ │ 2. Set the current tool with Tn M6 G43 where n is the tool number. │ │ │ │ │ 3. Select the X axis in the Manual Control window. │ │ │ │ │ 4. Move the X to a known position or take a test cut and measure the diameter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 71 / 1278 │ │ │ │ │ │ │ │ │ │ 5. Select Touch Off and pick Tool Table then enter the position or the diameter. │ │ │ │ │ 6. Follow the same sequence to correct the Z axis. │ │ │ │ │ Note: if you are in Radius Mode you must enter the radius, not the diameter. │ │ │ │ │ 2.6.4.2. Z Touch Off │ │ │ │ │ @@ -6931,15 +6931,15 @@ │ │ │ │ │ 2. Set the current tool with Tn M6 where n is the tool number. │ │ │ │ │ 3. Issue a G43 so the current tool offset is in effect. │ │ │ │ │ 4. Bring the tool to the work piece and set the machine Z offset. │ │ │ │ │ If you forget to set the G43 for the current tool when you set the machine coordinate system offset, │ │ │ │ │ you will not get what you expect, as the tool offset will be added to the current offset when the tool is │ │ │ │ │ used in your program. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 72 / 1278 │ │ │ │ │ │ │ │ │ │ 2.6.5. Spindle Synchronized Motion │ │ │ │ │ Spindle synchronized motion requires a quadrature encoder connected to the spindle with one index │ │ │ │ │ pulse per revolution. See the motion man page and the Spindle Control Example for more information. │ │ │ │ │ Threading The G76 threading cycle is used for both internal and external threads. For more information see the G76 Section. │ │ │ │ │ @@ -6974,15 +6974,15 @@ │ │ │ │ │ G7 diameter mode. │ │ │ │ │ │ │ │ │ │ 2.6.7. Tool Path │ │ │ │ │ 2.6.7.1. Control point │ │ │ │ │ The control point for the tool follows the programmed path. The control point is the intersection of a │ │ │ │ │ line parallel to the X and Z axis and tangent to the tool tip diameter, as defined when you touch off the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 73 / 1278 │ │ │ │ │ │ │ │ │ │ X and Z axes for that tool. When turning or facing straight sided parts the cutting path and the tool │ │ │ │ │ edge follow the same path. When turning radius and angles the edge of the tool tip will not follow the │ │ │ │ │ programmed path unless cutter comp is in effect. In the following figures you can see how the control │ │ │ │ │ point does not follow the tool edge as you might assume. │ │ │ │ │ @@ -6992,58 +6992,58 @@ │ │ │ │ │ 2.6.7.2. Cutting Angles without Cutter Comp │ │ │ │ │ Now imagine we program a ramp without cutter comp. The programmed path is shown in the following │ │ │ │ │ figure. As you can see in the figure the programmed path and the desired cut path are one and the │ │ │ │ │ same as long as we are moving in an X or Z direction only. │ │ │ │ │ │ │ │ │ │ Figura 2.15: Ramp Entry │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 74 / 1278 │ │ │ │ │ │ │ │ │ │ Now as the control point progresses along the programmed path the actual cutter edge does not follow │ │ │ │ │ the programmed path as shown in the following figure. There are two ways to solve this, cutter comp │ │ │ │ │ and adjusting your programmed path to compensate for tip radius. │ │ │ │ │ │ │ │ │ │ Figura 2.16: Ramp Path │ │ │ │ │ In the above example it is a simple exercise to adjust the programmed path to give the desired actual │ │ │ │ │ path by moving the programmed path for the ramp to the left the radius of the tool tip. │ │ │ │ │ 2.6.7.3. Cutting a Radius │ │ │ │ │ In this example we will examine what happens during a radius cut without cutter comp. In the next │ │ │ │ │ figure you see the tool turning the OD of the part. The control point of the tool is following the programmed path and the tool is touching the OD of the part. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 75 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.17: Turning Cut │ │ │ │ │ In this next figure you can see as the tool approaches the end of the part the control point still follows │ │ │ │ │ the path but the tool tip has left the part and is cutting air. You can also see that even though a radius │ │ │ │ │ has been programmed the part will actually end up with a square corner. │ │ │ │ │ │ │ │ │ │ Figura 2.18: Radius Cut │ │ │ │ │ Now you can see as the control point follows the radius programmed the tool tip has left the part and │ │ │ │ │ is now cutting air. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 76 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 2.19: Radius Cut │ │ │ │ │ In the final figure we can see the tool tip will finish cutting the face but leave a square corner instead │ │ │ │ │ of a nice radius. Notice also that if you program the cut to end at the center of the part a small amount │ │ │ │ │ of material will be left from the radius of the tool. To finish a face cut to the center of a part you have │ │ │ │ │ to program the tool to go past center at least the nose radius of the tool. │ │ │ │ │ │ │ │ │ │ Figura 2.20: Face Cut │ │ │ │ │ │ │ │ │ │ 2.6.7.4. Using Cutter Comp │ │ │ │ │ When using cutter comp on a lathe think of the tool tip radius as the radius of a round cutter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 77 / 1278 │ │ │ │ │ │ │ │ │ │ When using cutter comp the path must be large enough for a round tool that will not gouge into the │ │ │ │ │ next line. │ │ │ │ │ When cutting straight lines on the lathe you might not want to use cutter comp. For example boring │ │ │ │ │ a hole with a tight fitting boring bar you may not have enough room to do the exit move. │ │ │ │ │ @@ -7064,15 +7064,15 @@ │ │ │ │ │ torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the │ │ │ │ │ column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the │ │ │ │ │ torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown │ │ │ │ │ in Zone C. Direct current (DC) straight polarity is used for plasma cutting, as shown in the illustration. │ │ │ │ │ Zone A channels a secondary gas that cools the torch. This gas also assists the high velocity plasma │ │ │ │ │ gas in blowing the molten metal out of the cut allowing for a fast, slag - free cut. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 78 / 1278 │ │ │ │ │ │ │ │ │ │ 2.7.2. Arc Initialisation │ │ │ │ │ There are two main methods for arc initialisation for plasma cutters that are designed for CNC operation. Whilst other methods are used on some machines (such as scratch start where physical contact │ │ │ │ │ with the material is required), they are unsuited for CNC applications.. │ │ │ │ │ 2.7.2.1. High Frequency Start │ │ │ │ │ @@ -7085,15 +7085,15 @@ │ │ │ │ │ points that must be cleaned and readjusted from time to time. │ │ │ │ │ 2.7.2.2. Blowback Start │ │ │ │ │ This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the │ │ │ │ │ torch head back to create a small spark between the inside surface of the consumable, ionising the │ │ │ │ │ air, and creating a small plasma flame. This also creates a ”pilot arc” that provides a plasma flame │ │ │ │ │ that stays on, whether in contact with the metal or not. This is a very good start type that is now used │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 79 / 1278 │ │ │ │ │ │ │ │ │ │ by several manufacturers. It’s advantage is that it requires somewhat less circuitry, is a fairly reliable │ │ │ │ │ and generates far less electrical noise. │ │ │ │ │ For entry level air plasma CNC systems, the blowback style is much preferred to minimise electrical │ │ │ │ │ interference with electronics and standard PCs, but the High frequency start still rules supreme in │ │ │ │ │ @@ -7115,15 +7115,15 @@ │ │ │ │ │ Torch to work distance can impact edge bevel │ │ │ │ │ │ │ │ │ │ Negative cut angle: torch too low, increase torch to work distance. │ │ │ │ │ Positive cut angle: torch too high, decrease torch to work distance. │ │ │ │ │ nota │ │ │ │ │ A slight variation in cut angles may be normal, as long as it is within tolerance. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 80 / 1278 │ │ │ │ │ │ │ │ │ │ The ability to precisely control the cutting height in such a hostile and ever changing environment is │ │ │ │ │ a very difficult challenge. Fortunately there is a very linear relationship between Torch height (Arc │ │ │ │ │ length) and arc voltage as this graph shows. │ │ │ │ │ │ │ │ │ │ @@ -7148,15 +7148,15 @@ │ │ │ │ │ A fully shielded torch tip to allow ohmic sensing │ │ │ │ │ If you have the budget, a higher end machines will supply: │ │ │ │ │ Manufacturer provided cut charts which will save many hours and material waste calibrating cut │ │ │ │ │ parameters │ │ │ │ │ Dry Contacts for ArcOK │ │ │ │ │ Terminals for Arc On switch │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 81 / 1278 │ │ │ │ │ │ │ │ │ │ Raw arc voltage or divided arc voltage output │ │ │ │ │ Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the │ │ │ │ │ LinuxCNC console. │ │ │ │ │ Higher duty cycles │ │ │ │ │ @@ -7201,15 +7201,15 @@ │ │ │ │ │ such as a Mesa card. If the dry contacts are a simple relay, there is a high probability that the current │ │ │ │ │ passing through the relay is less than the minimum current specification. Under these conditions, the │ │ │ │ │ relay contacts can suffer from a buildup of oxide which over time can result in intermittent contact │ │ │ │ │ operation. To prevent this from happening, a pull down resistor should be installed on the controller │ │ │ │ │ input pin. Care should be taken to ensure that this resistor is selected to ensure the minimum current │ │ │ │ │ passes through the relay and is of sufficient wattage to handle the power in the circuit. Finally, the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 82 / 1278 │ │ │ │ │ │ │ │ │ │ resistor should be mounted in such a way that the generated heat does not damage anything whilst │ │ │ │ │ in operation. │ │ │ │ │ If you have an ArcOK signal, it is recommended it is used over and above any synthesised signal to │ │ │ │ │ eliminate potential build issues. A synthesised signal available from an external THC or QtPlasmaC’s │ │ │ │ │ @@ -7248,15 +7248,15 @@ │ │ │ │ │ the operator. In plasma cutting, the earth clamp attached to the material is positive and the torch is │ │ │ │ │ negative. It is recommended that: │ │ │ │ │ 1. Ohmic sensing only be implemented where the torch has a shield that is isolated from the torch │ │ │ │ │ tip that conveys the cutting arc. │ │ │ │ │ 2. The ohmic circuit uses a totally separate isolated power supply that activates an opto-isolated │ │ │ │ │ relay to enable the probing signal to be transmitted to the CNC controller. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 83 / 1278 │ │ │ │ │ │ │ │ │ │ 3. The positive side of the circuit should be at the torch │ │ │ │ │ 4. Both sides of the circuit needs to be isolated by opto-isolated relays until probing is being undertaken │ │ │ │ │ 5. Blocking diodes be used to prevent arc voltage entering the ohmic sensing circuit. │ │ │ │ │ The following is an example circuit that has been proven to work and is compatible with the LinuxCNC │ │ │ │ │ @@ -7276,15 +7276,15 @@ │ │ │ │ │ threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower “break circuit” threshold can be set to build in strong switch hysteresis. This minimises │ │ │ │ │ false triggering. In our testing, we found the material sensing using this method was more sensitive │ │ │ │ │ and robust as well as being simpler to implement the wiring. One further advantage is using software │ │ │ │ │ outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage │ │ │ │ │ is helpful to get the most out of the Mesa 7I96 which has limited I/O pins. │ │ │ │ │ The following circuit diagram shows how to implement a hypersensing circuit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 84 / 1278 │ │ │ │ │ │ │ │ │ │ We used a 15 W Mean Well HDR-15 Ultra Slim DIN Rail Supply 24 V DIN rail based isolated power │ │ │ │ │ supply. This is a double insulated Isolation Class II device that will withstand any arc voltage that │ │ │ │ │ might be applied to the terminals. │ │ │ │ │ 2.7.7.4. Example HAL Code for Hypersensing │ │ │ │ │ @@ -7301,15 +7301,15 @@ │ │ │ │ │ setp ohmicsense.thcad-fullscale │ │ │ │ │ │ │ │ │ │ 140200 │ │ │ │ │ 988300 │ │ │ │ │ 32 │ │ │ │ │ 5 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 85 / 1278 │ │ │ │ │ │ │ │ │ │ setp ohmicsense.volt-divider │ │ │ │ │ 4.9 │ │ │ │ │ setp ohmicsense.ohmic-threshold │ │ │ │ │ 22.0 │ │ │ │ │ @@ -7342,15 +7342,15 @@ │ │ │ │ │ │ │ │ │ │ 2.7.10. Torch Breakaway │ │ │ │ │ It is recommended that a mechanism is provided to allow the torch to “break away” or fall off in the │ │ │ │ │ case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow │ │ │ │ │ the CNC controller to detect if this has occurred and pause the running program. Usually a break │ │ │ │ │ away is implemented using magnets to secure the torch to the Z axis stage. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 86 / 1278 │ │ │ │ │ │ │ │ │ │ 2.7.11. Corner Lock / Velocity Anti-Dive │ │ │ │ │ The LinuxCNC trajectory planner is responsible for translating velocity and acceleration commands │ │ │ │ │ into motion that obey the laws of physics. For example, motion will slow when negotiating a corner. │ │ │ │ │ Whilst this is not a problem with milling machines or routers, this poses a particular problem for │ │ │ │ │ @@ -7381,15 +7381,15 @@ │ │ │ │ │ Hypertherm’s True Hole Technology also look on PlasmaSpider, user seanp has posted extensively on │ │ │ │ │ his work using simple air plasma. │ │ │ │ │ The generally accepted method to get good holes from 37mm dia. and down to material thickness with │ │ │ │ │ minimal taper using an air plasma is: │ │ │ │ │ 1. Use recommended cutting current for consumables. │ │ │ │ │ 2. Use fixed (no THC) recommended cutting height for consumables. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 87 / 1278 │ │ │ │ │ │ │ │ │ │ 3. Cut from 60 % to 70 % of the recommended feed rate of consumables and materials. │ │ │ │ │ 4. Start lead in at or near center of hole. │ │ │ │ │ 5. Use perpendicular lead in. │ │ │ │ │ 6. No lead out, either a slight over burn or early torch off depending on what works best for you. │ │ │ │ │ @@ -7426,15 +7426,15 @@ │ │ │ │ │ 2.7.14.1. Arc OK (input) │ │ │ │ │ Inverter closes dry contacts when a valid arc is established │ │ │ │ │ Connect Field power to one Inverter ArcOK terminal. │ │ │ │ │ Connect other Inverter Ok Terminal to input pin. │ │ │ │ │ Usually connected to one of the ̀ ̀motion.digital- ̀ < │ │ │ │ │ ̀ nn> pins for use from G-code with M66 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 88 / 1278 │ │ │ │ │ │ │ │ │ │ 2.7.14.2. Torch On (output) │ │ │ │ │ Triggers a relay to close the torch on switch in the inverter. │ │ │ │ │ Connect the torch on terminals on the inverter to the relay output terminals. │ │ │ │ │ Connect one side of the coil to the output pin. │ │ │ │ │ @@ -7464,15 +7464,15 @@ │ │ │ │ │ 2.7.14.5. Ohmic Sensing (input) │ │ │ │ │ Take care to follow the ohmic sensing schematic shown previously. │ │ │ │ │ An isolated power supply triggers a relay when the torch shield contacts the material. │ │ │ │ │ Connect field power to one output terminal and the other to the input. │ │ │ │ │ Take care to observe relay polarity if opto-coupled solid State relays are used. │ │ │ │ │ Usually connected to motion.probe-input and may be or’d with the float switch. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 89 / 1278 │ │ │ │ │ │ │ │ │ │ As can be seen, plasma tables are pin intensive and we have already consumed about 15 inputs before │ │ │ │ │ the normal estops are added. Others have other views but it is the writer’s opinion that the Mesa │ │ │ │ │ 7I76E is preferred over the cheaper 7I96 to allow for MPG’s, scale and axis selection switch and other │ │ │ │ │ features you may wish to add over time. If your table uses servos, there are a number of alternatives. │ │ │ │ │ @@ -7515,15 +7515,15 @@ │ │ │ │ │ G42.1 D#<_hal[plasmac_run.kerf-width-f]> for right of programmed path │ │ │ │ │ G40 to turn compensation off │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Integrators should familiarise themselves with the LinuxCNC documentation for the various LinuxCNC │ │ │ │ │ G-code commands mentioned above. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 90 / 1278 │ │ │ │ │ │ │ │ │ │ 2.7.16. External Offsets and Plasma Cutting │ │ │ │ │ External Offsets were introduced to LinuxCNC with version 2.8. By external, it means that we can │ │ │ │ │ apply an offset external to the G-code that the trajectory planner knows nothing about. It easiest │ │ │ │ │ to explain with an example. Picture a lathe with an external offset being applied by a mathematical │ │ │ │ │ @@ -7574,15 +7574,15 @@ │ │ │ │ │ Full scale │ │ │ │ │ 0V │ │ │ │ │ │ │ │ │ │ 928 kHz (928 kHz/32 = 29 kHz) │ │ │ │ │ │ │ │ │ │ 121.6 kHz (121.6 kHz/32 = 3.8 kHz) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 91 / 1278 │ │ │ │ │ │ │ │ │ │ Because the full scale is 10 Volts, then the frequency per Volt is: │ │ │ │ │ (29000 Hz - 3800 Hz) / 10 V = 2520 Hz per Volt │ │ │ │ │ So assuming we have a 5 Volt input, the calculated frequency would be: │ │ │ │ │ (2520 Hz/V * 5 V) + 3800 Hz = 16400 Hz │ │ │ │ │ @@ -7615,15 +7615,15 @@ │ │ │ │ │ as 24:1 (and 50:1 becomes 75:1). This is not a problem with more reputable brands (e.g., Thermal │ │ │ │ │ Dynamics, Hypertherm, ESAB etc). So if you are seeing lower than expected cutting voltages, it might │ │ │ │ │ be preferable to reconfigure the THCAD to read raw arc voltage. │ │ │ │ │ Remembering that plasma arc voltages are potentially lethal, here are some suggested criteria. │ │ │ │ │ Pilot Arc Start Because there is not likely to be any significant EMI, you should be able to safely │ │ │ │ │ install the THCAD in your control panel if you have followed our construction guidelines. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 92 / 1278 │ │ │ │ │ │ │ │ │ │ If you do not have a voltage divider, either install scaling resistors inside the plasma cutter and │ │ │ │ │ install the THCAD in the control panel or follow the suggestions for HF start machines. │ │ │ │ │ If you have a voltage divider, install a THCAD-10 in your control panel. We’ve had no problems with │ │ │ │ │ this configuration with a 120 A Thermal Dynamics plasma cutter. │ │ │ │ │ @@ -7661,15 +7661,15 @@ │ │ │ │ │ be located away from the electronics and the plasma machine. This hardware also allows the use of │ │ │ │ │ 24 Volt logic systems which are much more noise tolerant. Components should be mounted in a metal │ │ │ │ │ enclosure connected to the mains earth. It is strongly recommended that an EMI filter is installed on │ │ │ │ │ the mains power connection. The simplest way is to use a EMI filtered mains power IEC connector │ │ │ │ │ commonly used on PC’s and electric appliances which allows this to be achieved with no extra work. │ │ │ │ │ Plan the layout of components in the enclosure so that mains power, high voltage motor wires and │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 93 / 1278 │ │ │ │ │ │ │ │ │ │ logic signals are kept as separate as possible from each other. If they do have to cross, keep them at │ │ │ │ │ 90 degrees. │ │ │ │ │ Peter Wallace from Mesa Electronics suggests: ”If you have a CNC compatible plasma source with a │ │ │ │ │ voltage divider, I would mount the THCAD inside your electronics enclosure with all the other motion │ │ │ │ │ @@ -7714,15 +7714,15 @@ │ │ │ │ │ is relatively straightforward if you use the axis or joint position from one of the motion pins and the │ │ │ │ │ lincurve component to map downdraft zones to the correct output pin. │ │ │ │ │ │ │ │ │ │ 2.7.22. Designing For Speed And Acceleration │ │ │ │ │ In plasma cutting, speed and acceleration are king. The higher the acceleration, the less the machine │ │ │ │ │ needs to slow down when negotiating corners. This implies that the gantry should be as light as │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 94 / 1278 │ │ │ │ │ │ │ │ │ │ possible without sacrificing torsional stiffness. A 100 mm x 100 mm x 2 mm aluminium box section has │ │ │ │ │ equivalent torsional stiffness to an 80 mm x 80 mm T slot extrusion yet is 62 % lighter. So does the │ │ │ │ │ convenience of T slots outweigh the additional construction? │ │ │ │ │ │ │ │ │ │ @@ -7762,29 +7762,29 @@ │ │ │ │ │ 2.7.26. Post Processors For Plasma Cutting │ │ │ │ │ CAM programs (Computer Aided Manufacture) are the bridge between CAD (Computer Aided Design) │ │ │ │ │ and the final CNC (Computer Numerical Control) operation. They often include a user configurable │ │ │ │ │ post processor to define the code that is generated for a specific machine or dialect of G-code. │ │ │ │ │ Many LinuxCNC users are perfectly happy with using Inkscape to convert SVG vector based files to │ │ │ │ │ G-code. If you are using a plasma cutter for hobby or home use, consider this option. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 95 / 1278 │ │ │ │ │ │ │ │ │ │ However, if your needs are more complex, probably the best and most reasonably priced solution │ │ │ │ │ is SheetCam. SheetCam supports both Windows and Linux and post processors are available for it │ │ │ │ │ including the QtPlasmaC configuration. SheetCam allows you to nest parts over a full sheet of material │ │ │ │ │ and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors │ │ │ │ │ are text files written in the Lua programming language and are generally easy to modify to suit your │ │ │ │ │ exact requirements. For further information, consult the SheetCam web site and their support forum. │ │ │ │ │ Another popular post-processor is included with the popular Fusion360 package but the included │ │ │ │ │ post-processors will need some customisation. │ │ │ │ │ LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 96 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 3 │ │ │ │ │ │ │ │ │ │ Configuration Wizards │ │ │ │ │ 3.1. Stepper Configuration Wizard │ │ │ │ │ @@ -7795,15 +7795,15 @@ │ │ │ │ │ & direction. │ │ │ │ │ StepConf is installed when you install LinuxCNC and is in the CNC menu. │ │ │ │ │ StepConf places a file in the linuxcnc/config directory to store the choices for each configuration you │ │ │ │ │ create. When you change something, you need to pick the file that matches your configuration name. │ │ │ │ │ The file extension is .stepconf. │ │ │ │ │ The StepConf Wizard works best with at least 800 x 600 screen resolution. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 97 / 1278 │ │ │ │ │ │ │ │ │ │ 3.1.2. Start Page │ │ │ │ │ │ │ │ │ │ Figura 3.1: StepConf Entry Page │ │ │ │ │ The three first radio buttons are self-explanatory: │ │ │ │ │ @@ -7814,15 +7814,15 @@ │ │ │ │ │ StepConf Wizard. StepConf will highlight the lastconf that was built. │ │ │ │ │ Import - Import a Mach configuration file and attempt to convert it to a LinuxCNC config file. After │ │ │ │ │ the import, you will go though the pages of StepConf to confirm/modify the entries. The original │ │ │ │ │ mach XML file will not be changed. │ │ │ │ │ These next options will be recorded in a preference file for the next run of StepConf. │ │ │ │ │ Create Desktop Shortcut - This will place a link on your desktop to the files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 98 / 1278 │ │ │ │ │ │ │ │ │ │ Create Desktop Launcher - This will place a launcher on your desktop to start your application. │ │ │ │ │ Create Simulated Hardware - This allows you to build a config for testing, even if you don’t have │ │ │ │ │ the actual hardware. │ │ │ │ │ │ │ │ │ │ @@ -7834,15 +7834,15 @@ │ │ │ │ │ Machine Name - Choose a name for your machine. Use only uppercase letters, lowercase letters, │ │ │ │ │ digits, - and _. │ │ │ │ │ Axis Configuration - Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe). │ │ │ │ │ Machine Units - Choose Inch or mm. All subsequent entries will be in the chosen units. Changing │ │ │ │ │ this also changes the default values in the Axes section. If you change this after selecting values in │ │ │ │ │ any of the axes sections, they will be over-written by the default values of the selected units. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 99 / 1278 │ │ │ │ │ │ │ │ │ │ Driver Type - If you have one of the stepper drivers listed in the pull down box, choose it. Otherwise, │ │ │ │ │ select Other and find the timing values in your driver’s data sheet and enter them as nano seconds │ │ │ │ │ in the Driver Timing Settings. If the data sheet gives a value in microseconds, multiply by 1000. For │ │ │ │ │ example, enter 4.5 µs as 4500 ns. │ │ │ │ │ @@ -7870,15 +7870,15 @@ │ │ │ │ │ worst case numbers are. Run the test at least a few minutes. The longer you run the test the better it │ │ │ │ │ will be at catching events that might occur at less frequent intervals. This is a test for your computer │ │ │ │ │ only, so no hardware needs to be connected to run the test. │ │ │ │ │ │ │ │ │ │ aviso │ │ │ │ │ Do not attempt run LinuxCNC while the latency test is running. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 100 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.3: Latency Test │ │ │ │ │ Latency is how long it takes the PC to stop what it is doing and respond to an external request. In our │ │ │ │ │ case, the request is the periodic heartbeat that serves as a timing reference for the step pulses. The │ │ │ │ │ lower the latency, the faster you can run the heartbeat, and the faster and smoother the step pulses │ │ │ │ │ @@ -7894,15 +7894,15 @@ │ │ │ │ │ If your Max Jitter number is less than about 15-20 µs (15000-20000 ns), the computer should give very │ │ │ │ │ nice results with software stepping. If the max latency is more like 30-50 µs, you can still get good │ │ │ │ │ results, but your maximum step rate might be a little disappointing, especially if you use microstepping │ │ │ │ │ or have very fine pitch leadscrews. If the numbers are 100 µs or more (100,000 ns), then the PC is not │ │ │ │ │ a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is │ │ │ │ │ not a good candidate for LinuxCNC, regardless of whether you use software stepping or not. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 101 / 1278 │ │ │ │ │ │ │ │ │ │ 3.1.5. Parallel Port Setup │ │ │ │ │ │ │ │ │ │ Figura 3.4: Parallel Port Setup Page │ │ │ │ │ You may specify the address as a hexadecimal (often 0x378) or as linux’s default port number (probably │ │ │ │ │ @@ -7911,15 +7911,15 @@ │ │ │ │ │ if the signal is inverted (0V for true/active, 5V for false/inactive). │ │ │ │ │ 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). │ │ │ │ │ Inputs and Outputs - If the input or output is not used set the option to Unused. │ │ │ │ │ External E-Stop - This can be selected from an input pin drop down box. A typical E-Stop chain uses │ │ │ │ │ all normally closed contacts. │ │ │ │ │ Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 102 / 1278 │ │ │ │ │ │ │ │ │ │ Charge Pump - If your driver board requires a charge pump signal select Charge Pump from the │ │ │ │ │ drop down list for the output pin you wish to connect to your charge pump input. The charge pump │ │ │ │ │ output is connected to the base thread by StepConf. The charge pump output will be about 1/2 of │ │ │ │ │ the maximum step rate shown on the Basic Machine Configuration page. │ │ │ │ │ @@ -7931,15 +7931,15 @@ │ │ │ │ │ │ │ │ │ │ Figura 3.5: Parallel Port 2 Setup Page │ │ │ │ │ The second Parallel port (if selected) can be configured and It’s pins assigned on this page. No step and │ │ │ │ │ direction signals can be selected. You may select in or out to maximizes the number of input/output │ │ │ │ │ pins that are available. You may specify the address as a hexadecimal (often 0x378) or as linux’s │ │ │ │ │ default port number (probably 1). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 103 / 1278 │ │ │ │ │ │ │ │ │ │ 3.1.7. Axis Configuration │ │ │ │ │ │ │ │ │ │ Figura 3.6: Axis Configuration Screen │ │ │ │ │ Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many │ │ │ │ │ @@ -7950,15 +7950,15 @@ │ │ │ │ │ If not, enter 1:1. │ │ │ │ │ Leadscrew Pitch - Enter the pitch of the leadscrew here. If you chose Inch units, enter the number │ │ │ │ │ of threads per inch. If you chose mm units, enter the number of millimeters per revolution (e.g., │ │ │ │ │ enter 2 for 2mm/rev). If the machine travels in the wrong direction, enter a negative number here │ │ │ │ │ instead of a positive number, or invert the direction pin for the axis. │ │ │ │ │ Maximum Velocity - Enter the maximum velocity for the axis in units per second. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 104 / 1278 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ set the acceleration. │ │ │ │ │ Home Location - The position the machine moves to after completing the homing procedure for this │ │ │ │ │ axis. For machines without home switches, this is the location the operator manually moves the │ │ │ │ │ @@ -7987,15 +7987,15 @@ │ │ │ │ │ Pulse rate at max speed determines the BASE_PERIOD. Values above 20000Hz may lead to slow │ │ │ │ │ response time or even lockups (the fastest usable pulse rate varies from computer to computer) │ │ │ │ │ Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps │ │ │ │ │ per user unit. │ │ │ │ │ Test this axis - This will open a window to allow testing for each axis. This can be used after filling │ │ │ │ │ out all the information for this axis. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 105 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.7: Axis Test │ │ │ │ │ Test this axis is a basic tester that only outputs step and direction signals to try different values for │ │ │ │ │ acceleration and velocity. │ │ │ │ │ importante │ │ │ │ │ @@ -8018,15 +8018,15 @@ │ │ │ │ │ If the machine did not obviously stall, click the Run button off. The axis now returns to the position │ │ │ │ │ where it started. If the position is incorrect, then the axis stalled or lost steps during the test. Reduce │ │ │ │ │ Velocity and start the test again. │ │ │ │ │ If the machine doesn’t move, stalls, or loses steps, no matter how low you turn Velocity, verify the │ │ │ │ │ following: │ │ │ │ │ Correct step waveform timings │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 106 / 1278 │ │ │ │ │ │ │ │ │ │ Correct pinout, including Invert on step pins │ │ │ │ │ Correct, well-shielded cabling │ │ │ │ │ Physical problems with the motor, motor coupling, leadscrew, etc. │ │ │ │ │ Once you have found a speed at which the axis does not stall or lose steps during this testing procedure, │ │ │ │ │ @@ -8038,15 +8038,15 @@ │ │ │ │ │ Velocity. Once you have found a value at which the axis does not stall or lose steps during this testing │ │ │ │ │ procedure, reduce it by 10 % and use that as the axis Maximum Acceleration. │ │ │ │ │ │ │ │ │ │ 3.1.8. Spindle Configuration │ │ │ │ │ │ │ │ │ │ Figura 3.8: Spindle Configuration Page │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 107 / 1278 │ │ │ │ │ │ │ │ │ │ This page only appears when Spindle PWM is chosen in the Parallel Port Pinout page for one of the │ │ │ │ │ outputs. │ │ │ │ │ 3.1.8.1. Spindle Speed Control │ │ │ │ │ If Spindle PWM appears on the pinout, the following information should be entered: │ │ │ │ │ @@ -8090,29 +8090,29 @@ │ │ │ │ │ Change the spindle speed by entering a different S-number: S800. Valid numbers (at this point) range │ │ │ │ │ from 1 to 1000. │ │ │ │ │ For two different S-numbers, measure the actual spindle speed in RPM. Record the S-numbers and │ │ │ │ │ actual spindle speeds. Run StepConf again. For Speed enter the measured speed, and for PWM enter │ │ │ │ │ the S-number divided by 1000. │ │ │ │ │ Because most spindle drivers are somewhat nonlinear in their response curves, it is best to: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 108 / 1278 │ │ │ │ │ │ │ │ │ │ Make sure the two calibration speeds are not too close together in RPM. │ │ │ │ │ Make sure the two calibration speeds are in the range of speeds you will typically use while milling. │ │ │ │ │ For instance, if your spindle will go from 0 RPM to 8000 RPM, but you generally use speeds from 400 │ │ │ │ │ RPM (10 %) to 4000 RPM (100 %), then find the PWM values that give 1600 RPM (40 %) and 2800 │ │ │ │ │ RPM (70 %). │ │ │ │ │ │ │ │ │ │ 3.1.9. Options │ │ │ │ │ │ │ │ │ │ Figura 3.9: Advanced Options Configuration │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 109 / 1278 │ │ │ │ │ │ │ │ │ │ Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more │ │ │ │ │ information on. │ │ │ │ │ Include PyVCP - This option adds the PyVCP panel base file or a sample file to work on. See the │ │ │ │ │ PyVCP Chapter for more information. │ │ │ │ │ @@ -8137,15 +8137,15 @@ │ │ │ │ │ Before the hard stop there is a limit switch. If the limit switch is encountered during normal operation, │ │ │ │ │ LinuxCNC shuts down the motor amplifier. The distance between the hard stop and limit switch must │ │ │ │ │ be long enough to allow an unpowered motor to coast to a stop. │ │ │ │ │ Before the limit switch there is a soft limit. This is a limit enforced in software after homing. If a MDI │ │ │ │ │ command or G-code program would pass the soft limit, it is not executed. If a jog would pass the soft │ │ │ │ │ limit, it is terminated at the soft limit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 110 / 1278 │ │ │ │ │ │ │ │ │ │ The home switch can be placed anywhere within the travel (between hard stops). As long as external │ │ │ │ │ hardware does not deactivate the motor amplifiers when the limit switch is reached, one of the limit │ │ │ │ │ switches can be used as a home switch. │ │ │ │ │ The zero position is the location on the axis that is 0 in the machine coordinate system. Usually the zero │ │ │ │ │ @@ -8172,15 +8172,15 @@ │ │ │ │ │ LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be │ │ │ │ │ checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input │ │ │ │ │ high until the connection to ground is made and then the input goes low. Otherwise the input might │ │ │ │ │ float between on and off when the circuit is open. Typically for a parallel port you might use 47 kΩ;. │ │ │ │ │ │ │ │ │ │ Figura 3.11: Normally Closed Switches (N/C) wiring in series (simplified diagram) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 111 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.12: Normally Open Switches (N/O) wiring in parallel (simplified diagram) │ │ │ │ │ The following combinations of switches are permitted in StepConf: │ │ │ │ │ Combine home switches for all axes │ │ │ │ │ Combine limit switches for all axes │ │ │ │ │ @@ -8203,15 +8203,15 @@ │ │ │ │ │ everything to tailor it to your needs. This would be the choice if you need extensive modifications │ │ │ │ │ beyond PnCconf’s scope or just want to tinker with / learn about LinuxCNC. │ │ │ │ │ You navigate the wizard pages with the forward, back, and cancel buttons there is also a help button │ │ │ │ │ that gives some help information about the pages, diagrams and an output page. │ │ │ │ │ sugerencia │ │ │ │ │ PnCconf’s help page should have the most up to date info and has additional details. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 112 / 1278 │ │ │ │ │ │ │ │ │ │ 3.2.1. Step by Step Instructions │ │ │ │ │ │ │ │ │ │ Figura 3.13: PnCconf Splash │ │ │ │ │ │ │ │ │ │ @@ -8223,15 +8223,15 @@ │ │ │ │ │ places a note in those files. It also allows you to select desktop shortcut / launcher options. A desktop │ │ │ │ │ shortcut will place a folder icon on the desktop that points to your new configuration files. Otherwise │ │ │ │ │ you would have to look in your home folder under linuxcnc/configs. │ │ │ │ │ A Desktop launcher will add an icon to the desktop for starting your config directly. You can also │ │ │ │ │ launch it from the main menu by using the Configuration Selector LinuxCNC found in CNC menu and │ │ │ │ │ selecting your config name. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 113 / 1278 │ │ │ │ │ │ │ │ │ │ 3.2.3. Basic Machine Information │ │ │ │ │ │ │ │ │ │ Figura 3.14: PnCconf Basic │ │ │ │ │ │ │ │ │ │ @@ -8243,15 +8243,15 @@ │ │ │ │ │ sugerencia │ │ │ │ │ Los valores predeterminados no se convierten cuando se usa sistema métrico, así que ¡asegúrese │ │ │ │ │ de que sean valores correctos! │ │ │ │ │ │ │ │ │ │ Computer Response Time │ │ │ │ │ The servo period sets the heart beat of the system. Latency refers to the amount of time the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 114 / 1278 │ │ │ │ │ │ │ │ │ │ computer can be longer then that period. Just like a railroad, LinuxCNC requires everything │ │ │ │ │ on a very tight and consistent time line or bad things happen. LinuxCNC requires and uses a │ │ │ │ │ real time operating system, which just means it has a low latency ( lateness ) response time │ │ │ │ │ when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be │ │ │ │ │ @@ -8298,15 +8298,15 @@ │ │ │ │ │ Up to 3 parallel ports (referred to as parports) can be used as simple I/O. You must set the address │ │ │ │ │ of the parport. You can either enter the Linux parallel port numbering system (0,1,or 2) or enter │ │ │ │ │ the actual address. The address for an on board parport is often 0x0278 or 0x0378 (written in │ │ │ │ │ hexadecimal) but can be found in the BIOS page. The BIOS page is found when you first start │ │ │ │ │ your computer you must press a key to enter it (such as F2). On the BIOS page you can find │ │ │ │ │ the parallel port address and set the mode such as SPP, EPP, etc on some computers this info is │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 115 / 1278 │ │ │ │ │ │ │ │ │ │ displayed for a few seconds during start up. For PCI parallel port cards the address can be found │ │ │ │ │ by pressing the parport address search button. This pops up the help output page with a list of │ │ │ │ │ all the PCI devices that can be found. In there should be a reference to a parallel port device with │ │ │ │ │ a list of addresses. One of those addresses should work. Not all PCI parallel ports work properly. │ │ │ │ │ @@ -8335,15 +8335,15 @@ │ │ │ │ │ has no graphical window │ │ │ │ │ look can be changed with custom themes │ │ │ │ │ QtPlasmaC │ │ │ │ │ fully featured plasmac configuration based on the QtVCP infrastructure. │ │ │ │ │ mouse/keyboard operation or touchscreen operation │ │ │ │ │ no VCP integration │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 116 / 1278 │ │ │ │ │ │ │ │ │ │ 3.2.4. External Configuration │ │ │ │ │ This page allows you to select external controls such as for jogging or overrides. │ │ │ │ │ │ │ │ │ │ Figura 3.15: External Controls │ │ │ │ │ @@ -8354,15 +8354,15 @@ │ │ │ │ │ switch based OEM joystick. │ │ │ │ │ Joystick jogging │ │ │ │ │ Requires a custom device rule to be installed in the system. This is a file that LinuxCNC uses to │ │ │ │ │ connect to Linux’s device list. PnCconf will help to prepare this file. │ │ │ │ │ Search for device rule will search the system for rules, you can use this to find the name of │ │ │ │ │ devices you have already built with PnCconf. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 117 / 1278 │ │ │ │ │ │ │ │ │ │ Add a device rule will allow you to configure a new device by following the prompts. You will │ │ │ │ │ need your device available. │ │ │ │ │ test device allows you to load a device, see its pin names and check its functions with halmeter. │ │ │ │ │ joystick jogging uses HALUI and hal_input components. │ │ │ │ │ @@ -8379,15 +8379,15 @@ │ │ │ │ │ PnCconf allows overrides of feed rates and/or spindle speed using a pulse generator (MPG) or │ │ │ │ │ switches (eg. rotary). │ │ │ │ │ │ │ │ │ │ 3.2.5. GUI Configuration │ │ │ │ │ Here you can set defaults for the display screens, add virtual control panels (VCP), and set some │ │ │ │ │ LinuxCNC options.. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 118 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.16: GUI Configuration │ │ │ │ │ │ │ │ │ │ Front-end GUI Options │ │ │ │ │ The default options allows general defaults to be chosen for any display screen. │ │ │ │ │ @@ -8398,15 +8398,15 @@ │ │ │ │ │ Touchy defaults are options specific to Touchy. Most of Touchy’s options can be changed while Touchy │ │ │ │ │ is running using the preference page. Touchy uses GTK to draw its screen, and GTK supports themes. │ │ │ │ │ Themes controls the basic look and feel of a program. You can download themes from the net or edit │ │ │ │ │ them yourself. There are a list of the current themes on the computer that you can pick from. To help │ │ │ │ │ some of the text to stand out PnCconf allows you to override the Themes’s defaults. The position and │ │ │ │ │ force max options can be used to move Touchy to a second monitor if the system is capable. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 119 / 1278 │ │ │ │ │ │ │ │ │ │ QtPlasmaC options are specific to QtPlasmac, any common options that are not required will be disabled. If QtPlasmac is selected then the following screen will be a user button setup screen that is │ │ │ │ │ specific to QtPlasmaC and VCP options will not be available. │ │ │ │ │ VCP options │ │ │ │ │ Virtual Control Panels allow one to add custom controls and displays to the screen. AXIS and │ │ │ │ │ @@ -8446,15 +8446,15 @@ │ │ │ │ │ You can select a GTK theme which sets the basic look and feel of the panel. You Usually want this to │ │ │ │ │ match the front-end screen. These options will be used if you press the Display sample button. With │ │ │ │ │ GladeVCP depending on the front-end screen, you can select where the panel will display. │ │ │ │ │ You can force it to be stand-alone or with AXIS it can be in the center or on the right side, with Touchy │ │ │ │ │ it can be in the center. │ │ │ │ │ Defaults and Options │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 120 / 1278 │ │ │ │ │ │ │ │ │ │ Require homing before MDI / Running │ │ │ │ │ • If you want to be able to move the machine before homing uncheck this checkbox. │ │ │ │ │ Popup Tool Prompt │ │ │ │ │ • Choose between an on screen prompt for tool changes or export standard signal names for │ │ │ │ │ @@ -8470,15 +8470,15 @@ │ │ │ │ │ custom HAL code to support tool changers. │ │ │ │ │ │ │ │ │ │ 3.2.6. Mesa Configuration │ │ │ │ │ The Mesa configuration pages allow one to utilize different firmwares. On the basic page you selected │ │ │ │ │ a Mesa card here you pick the available firmware and select what and how many components are │ │ │ │ │ available. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 121 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.17: Mesa Board Configuration │ │ │ │ │ Parport address is used only with Mesa parport card, the 7i43. An on board parallel port usually uses │ │ │ │ │ 0x278 or 0x378 though you should be able to find the address from the BIOS page. The 7i43 requires │ │ │ │ │ the parallel port to use the EPP mode, again set in the BIOS page. If using a PCI parallel port the │ │ │ │ │ @@ -8488,15 +8488,15 @@ │ │ │ │ │ │ │ │ │ │ PDM PWM and 3PWM base frequency sets the balance between ripple and linearity. If using Mesa │ │ │ │ │ daughter boards the docs for the board should give recommendations │ │ │ │ │ │ │ │ │ │ importante │ │ │ │ │ It’s important to follow these to avoid damage and get the best performance. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 122 / 1278 │ │ │ │ │ │ │ │ │ │ The 7i33 requires PDM and a PDM base frequency of 6 MHz │ │ │ │ │ The 7i29 requires PWM and a PWM base frequency of 20 kHz │ │ │ │ │ The 7i30 requires PWM and a PWM base frequency of 20 kHz │ │ │ │ │ The 7i40 requires PWM and a PWM base frequency of 50 kHz │ │ │ │ │ @@ -8520,49 +8520,49 @@ │ │ │ │ │ the I/O setup pages. Only I/O tabs will be shown for available connectors, depending on the Mesa │ │ │ │ │ board. │ │ │ │ │ │ │ │ │ │ 3.2.7. Mesa I/O Setup │ │ │ │ │ The tabs are used to configure the input and output pins of the Mesa boards. PnCconf allows one to │ │ │ │ │ create custom signal names for use in custom HAL files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 123 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.18: Mesa I/O C2 Setup │ │ │ │ │ On this tab with this firmware the components are setup for a 7i33 daughter board, usually used with │ │ │ │ │ closed loop servos. Note the component numbers of the encoder counters and PWM drivers are not │ │ │ │ │ in numerical order. This follows the daughter board requirements. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 124 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.19: Mesa I/O C3 Setup │ │ │ │ │ On this tab all the pins are GPIO. Note the 3 digit numbers - they will match the HAL pin number. │ │ │ │ │ GPIO pins can be selected as input or output and can be inverted. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 125 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.20: Mesa I/O C4 Setup │ │ │ │ │ On this tab there are a mix of step generators and GPIO. Step generators output and direction pins │ │ │ │ │ can be inverted. Note that inverting a Step Gen-A pin (the step output pin) changes the step timing. │ │ │ │ │ It should match what your controller expects. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3.2.8. Parallel port configuration │ │ │ │ │ │ │ │ │ │ The parallel port can be used for simple I/O similar to Mesa’s GPIO pins. │ │ │ │ │ │ │ │ │ │ 126 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 127 / 1278 │ │ │ │ │ │ │ │ │ │ 3.2.9. Axis Configuration │ │ │ │ │ │ │ │ │ │ Figura 3.21: Axis Drive Configuration │ │ │ │ │ This page allows configuring and testing of the motor and/or encoder combination. If using a servo │ │ │ │ │ @@ -8574,15 +8574,15 @@ │ │ │ │ │ Handbook 1 standards or AXIS graphical display will not make much sense. Hopefully the help │ │ │ │ │ page and diagrams can help figure this out. Note that axis directions are based on TOOL movement not table movement. There is no acceleration ramping with the open loop test so start with │ │ │ │ │ lower DAC numbers. By moving the axis a known distance one can confirm the encoder scaling. │ │ │ │ │ The encoder should count even without the amp enabled depending on how power is supplied to │ │ │ │ │ the encoder. │ │ │ │ │ 1 ”axis nomenclature” in the chapter ”Numerical Control” in the ”Machinery’s Handbook” published by Industrial Press. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 128 / 1278 │ │ │ │ │ │ │ │ │ │ aviso │ │ │ │ │ If the motor and encoder do not agree on counting direction then the servo will run away when │ │ │ │ │ using PID control. │ │ │ │ │ │ │ │ │ │ @@ -8628,15 +8628,15 @@ │ │ │ │ │ Note that we want raw output such that our measured result is identical to the commanded output. │ │ │ │ │ This means │ │ │ │ │ • cmd=a*raw+b │ │ │ │ │ • raw=(cmd-b)/a │ │ │ │ │ As a result, the a and b coefficients from the linear fit can be used as the scale and offset for the │ │ │ │ │ controller directly. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 129 / 1278 │ │ │ │ │ │ │ │ │ │ MAX OUTPUT │ │ │ │ │ The maximum value for the output of the PID compensation that is written to the motor amplifier, in volts. The computed output value is clamped to this limit. The limit is applied before │ │ │ │ │ scaling to raw output units. The value is applied symmetrically to both the plus and the minus │ │ │ │ │ side. │ │ │ │ │ @@ -8653,25 +8653,25 @@ │ │ │ │ │ speed. │ │ │ │ │ Brushless Motor Control │ │ │ │ │ These options are used to allow low level control of brushless motors using special firmware and │ │ │ │ │ daughter boards. It also allows conversion of HALL sensors from one manufacturer to another. │ │ │ │ │ It is only partially supported and will require one to finish the HAL connections. Contact the │ │ │ │ │ mail-list or forum for more help. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 130 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.22: Axis Scale Calculation │ │ │ │ │ The scale settings can be directly entered or one can use the calculate scale button to assist. Use the │ │ │ │ │ check boxes to select appropriate calculations. Note that pulley teeth requires the number of teeth │ │ │ │ │ not the gear ratio. Worm turn ratio is just the opposite it requires the gear ratio. If your happy with │ │ │ │ │ the scale press apply otherwise push cancel and enter the scale directly. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 131 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.23: Axis Configuration │ │ │ │ │ Also refer to the diagram tab for two examples of home and limit switches. These are two examples │ │ │ │ │ of many different ways to set homing and limits. │ │ │ │ │ │ │ │ │ │ @@ -8682,15 +8682,15 @@ │ │ │ │ │ Remember positive and negative directions refer to the TOOL not the table as per the Machinists │ │ │ │ │ handbook. │ │ │ │ │ On a typical knee or bed mill │ │ │ │ │ when the TABLE moves out that is the positive Y direction │ │ │ │ │ when the TABLE moves left that is the positive X direction │ │ │ │ │ when the TABLE moves down that is the positive Z direction │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 132 / 1278 │ │ │ │ │ │ │ │ │ │ when the HEAD moves up that is the positive Z direction │ │ │ │ │ On a typical lathe │ │ │ │ │ when the TOOL moves right, away from the chuck │ │ │ │ │ that is the positive Z direction │ │ │ │ │ @@ -8734,15 +8734,15 @@ │ │ │ │ │ will be zero. │ │ │ │ │ (machine) ORIGIN │ │ │ │ │ The Origin is the MACHINE zero point. (not the zero point you set your cutter / material at). │ │ │ │ │ LinuxCNC uses this point to reference everything else from. It should be inside the software │ │ │ │ │ limits. LinuxCNC uses the home switch location to calculate the origin position (when using │ │ │ │ │ home switches or must be manually set if not using home switches. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 133 / 1278 │ │ │ │ │ │ │ │ │ │ Travel distance │ │ │ │ │ This is the maximum distance the axis can travel in each direction. This may or may not be able │ │ │ │ │ to be measured directly from origin to limit switch. The positive and negative travel distances │ │ │ │ │ should add up to the total travel distance. │ │ │ │ │ @@ -8781,30 +8781,30 @@ │ │ │ │ │ LinuxCNC will search for an encoder index pulse while in the latch stage of homing. │ │ │ │ │ Use Compensation File │ │ │ │ │ Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS Section of the INI chapter. │ │ │ │ │ Use Backlash Compensation │ │ │ │ │ Allows setting of simple backlash compensation. Can not be used with Compensation File. See │ │ │ │ │ AXIS Section of the INI chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 134 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.24: AXIS Help Diagram │ │ │ │ │ The diagram should help to demonstrate an example of limit switches and standard axis movement │ │ │ │ │ directions. In this example the Z axis was two limit switches, the positive switch is shared as a home │ │ │ │ │ switch. The MACHINE ORIGIN (zero point) is located at the negative limit. The left edge of the carriage │ │ │ │ │ is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION to be │ │ │ │ │ 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive limit │ │ │ │ │ we would measure 10 inches between the negative limit and the negative trip pin. │ │ │ │ │ │ │ │ │ │ 3.2.10. Spindle Configuration │ │ │ │ │ If you select spindle signals then this page is available to configure spindle control. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 135 / 1278 │ │ │ │ │ │ │ │ │ │ sugerencia │ │ │ │ │ Many of the option on this page will not show unless the proper option was selected on previous │ │ │ │ │ pages! │ │ │ │ │ │ │ │ │ │ @@ -8816,15 +8816,15 @@ │ │ │ │ │ If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be │ │ │ │ │ shown. │ │ │ │ │ Spindle-at-speed allows LinuxCNC to wait till the spindle is at the requested speed before moving │ │ │ │ │ the axis. This is particularly handy on lathes with constant surface feed and large speed diameter │ │ │ │ │ changes. It requires either encoder feedback or a digital spindle-at-speed signal typically connected │ │ │ │ │ to a VFD drive. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 136 / 1278 │ │ │ │ │ │ │ │ │ │ If using encoder feedback, you may select a spindle-at-speed scale setting that specifies how close │ │ │ │ │ the actual speed must be to the requested speed to be considered at-speed. │ │ │ │ │ If using encoder feedback, the VCP speed display can be erratic - the filter setting can be used to │ │ │ │ │ smooth out the display. The encoder scale must be set for the encoder count / gearing used. │ │ │ │ │ @@ -8839,25 +8839,25 @@ │ │ │ │ │ HALUI Chapter for more info on using custom halcmds. There are several ladder program options. │ │ │ │ │ The Estop program allows an external ESTOP switch or the GUI frontend to throw an Estop. It also │ │ │ │ │ has a timed lube pump signal. The Z auto touch-off is with a touch-off plate, the GladeVCP touch-off │ │ │ │ │ button and special HALUI commands to set the current user origin to zero and rapid clear. The serial │ │ │ │ │ modbus program is basically a blank template program that sets up ClassicLadder for serial modbus. │ │ │ │ │ See the ClassicLadder Chapter in the manual. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 137 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.26: PnCconf, advanced options │ │ │ │ │ │ │ │ │ │ 3.2.12. HAL Components │ │ │ │ │ On this page you can add additional HAL components you might need for custom HAL files. In this │ │ │ │ │ way one should not have to hand edit the main HAL file, while still allowing user needed components. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 138 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 3.27: HAL Components │ │ │ │ │ The first selection is components that pncconf uses internally. You may configure pncconf to load extra │ │ │ │ │ instances of the components for your custom HAL file. │ │ │ │ │ Select the number of instances your custom file will need, PnCconf will add what it needs after them. │ │ │ │ │ @@ -8868,15 +8868,15 @@ │ │ │ │ │ heading Thread command. The components will be added to the thread between reading of inputs │ │ │ │ │ and writing of outputs, in the order you write them in the thread command. │ │ │ │ │ │ │ │ │ │ 3.2.13. Advanced Usage Of PnCconf │ │ │ │ │ PnCconf does its best to allow flexible customization by the user. PnCconf has support for custom │ │ │ │ │ signal names, custom loading of components, custom HAL files and custom firmware. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 139 / 1278 │ │ │ │ │ │ │ │ │ │ There are also signal names that PnCconf always provides regardless of options selected, for user’s │ │ │ │ │ custom HAL files With some thought most customizations should work regardless if you later select │ │ │ │ │ different options in PnCconf. │ │ │ │ │ Eventually if the customizations are beyond the scope of PnCconf’s frame work you can use PnCconf │ │ │ │ │ @@ -8908,15 +8908,15 @@ │ │ │ │ │ Loading Custom Firmware │ │ │ │ │ PnCconf searches for firmware on the system and then looks for the XML file that it can convert │ │ │ │ │ to what it understands. These XML files are only supplied for officially released firmware from │ │ │ │ │ the LinuxCNC team. To utilize custom firmware one must convert it to an array that PnCconf │ │ │ │ │ understands and add its file path to PnCconf’s preference file. By default this path searches the │ │ │ │ │ desktop for a folder named custom_firmware and a file named firmware.py. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 140 / 1278 │ │ │ │ │ │ │ │ │ │ The hidden preference file is in the user’s home file, is named .pncconf-preferences and require one │ │ │ │ │ to select show hidden files in your file manager to see and edit it or on the command line you use ls │ │ │ │ │ with the -a option. The contents of this file can be seen when you first load PnCconf - press the help │ │ │ │ │ button and look at the output page. │ │ │ │ │ @@ -8927,15 +8927,15 @@ │ │ │ │ │ custom.hal is for HAL commands that don’t have to be run after the GUI frontend loads. It is │ │ │ │ │ run after the configuration-named HAL file. │ │ │ │ │ custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP │ │ │ │ │ display loads. │ │ │ │ │ custom_gvcp.hal is for commands that must be run after GladeVCP is loaded. │ │ │ │ │ shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 141 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 4 │ │ │ │ │ │ │ │ │ │ Configuration │ │ │ │ │ 4.1. Integrator Concepts │ │ │ │ │ @@ -8955,15 +8955,15 @@ │ │ │ │ │ /home/fred/linuxcnc/nc_files │ │ │ │ │ /home/fred/linuxcnc/configs/mill │ │ │ │ │ • /home/fred/linuxcnc/configs/mill/mill.ini │ │ │ │ │ • /home/fred/linuxcnc/configs/mill/mill.hal │ │ │ │ │ • /home/fred/linuxcnc/configs/mill/mill.var │ │ │ │ │ • /home/fred/linuxcnc/configs/mill/tool.tbl │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 142 / 1278 │ │ │ │ │ │ │ │ │ │ 4.1.1.2. Command Line │ │ │ │ │ If you run LinuxCNC from the command line and specify the name and location of the INI file the file │ │ │ │ │ locations can be in a different place. To view the options for running LinuxCNC from the command │ │ │ │ │ line run linuxcnc -h. │ │ │ │ │ @@ -8997,15 +8997,15 @@ │ │ │ │ │ requirements affect the shortest period you can use. │ │ │ │ │ Worst case latencies might only happen a few times a minute, and the odds of bad latency happening │ │ │ │ │ just as the motor is changing direction are low. So you can get very rare errors that ruin a part every │ │ │ │ │ once in a while and are impossible to troubleshoot. │ │ │ │ │ 1 This section refers to using stepgen, LinuxCNC’s built-in step generator. Some hardware devices have their own step │ │ │ │ │ generator and do not use LinuxCNC’s built-in one. In that case, refer to your hardware manual. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 143 / 1278 │ │ │ │ │ │ │ │ │ │ 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 choice. For example, if you are running a drive with a 20 µs direction signal hold time requirement, │ │ │ │ │ and your latency test said you have a maximum latency of 11 µs , then if you set the BASE_PERIOD │ │ │ │ │ @@ -9037,15 +9037,15 @@ │ │ │ │ │ system might. These differences exist because servos are a closed loop system, unlike stepper motors │ │ │ │ │ which are generally run open loop. What does closed loop mean? Let’s look at a simplified diagram of │ │ │ │ │ how a servomotor system is connected. │ │ │ │ │ 2 steplen refers to a parameter that adjusts the performance of LinuxCNC’s built-in step generator, stepgen, which is a HAL │ │ │ │ │ component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually. │ │ │ │ │ 3 dirhold refers to a parameter that adjusts the length of the direction hold time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 144 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 4.1: Servo Loop │ │ │ │ │ This diagram shows that the input signal (and the feedback signal) drive the summing amplifier, the │ │ │ │ │ summing amplifier drives the power amplifier, the power amplifier drives the motor, the motor drives │ │ │ │ │ the load (and the feedback device), and the feedback device (and the input signal) drive the motor. │ │ │ │ │ @@ -9063,15 +9063,15 @@ │ │ │ │ │ They are three common mathematical techniques that are applied to the task of getting a working │ │ │ │ │ process to follow a set point. In the case of LinuxCNC the process we want to control is actual axis │ │ │ │ │ position and the set point is the commanded axis position. │ │ │ │ │ 4 If it helps, the closest equivalent to this in the digital world are state machines, sequential machines and so forth, where │ │ │ │ │ what the outputs are doing now depends on what the inputs (and the outputs) were doing before. If it doesn’t help, then │ │ │ │ │ nevermind. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 145 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 4.2: PID Loop │ │ │ │ │ By tuning the three constants in the PID controller algorithm, the controller can provide control action │ │ │ │ │ designed for specific process requirements. The response of the controller can be described in terms │ │ │ │ │ of the responsiveness of the controller to an error, the degree to which the controller overshoots the │ │ │ │ │ @@ -9099,15 +9099,15 @@ │ │ │ │ │ 4.1.4.4. Derivative term │ │ │ │ │ The rate of change of the process error is calculated by determining the slope of the error over time │ │ │ │ │ (i.e., its first derivative with respect to time) and multiplying this rate of change by the derivative gain. │ │ │ │ │ The derivative term slows the rate of change of the controller output and this effect is most noticeable │ │ │ │ │ close to the controller set point. Hence, derivative control is used to reduce the magnitude of the │ │ │ │ │ overshoot produced by the integral component and improve the combined controller-process stability. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 146 / 1278 │ │ │ │ │ │ │ │ │ │ 4.1.4.5. Loop tuning │ │ │ │ │ If the PID controller parameters (the gains of the proportional, integral and derivative terms) are │ │ │ │ │ chosen incorrectly, the controlled process input can be unstable, i.e., its output diverges, with or │ │ │ │ │ without oscillation, and is limited only by saturation or mechanical breakage. Tuning a control loop │ │ │ │ │ @@ -9144,15 +9144,15 @@ │ │ │ │ │ stepping). │ │ │ │ │ Latency is far more important than CPU speed. A lowly Pentium II that responds to interrupts within │ │ │ │ │ 10 microseconds each and every time can give better results than the latest and fastest P4 Hyperthreading beast. │ │ │ │ │ The CPU isn’t the only factor in determining latency. Motherboards, video cards, USB ports, and a │ │ │ │ │ number of other things can hurt the latency. The best way to find out what you are dealing with is to │ │ │ │ │ run the latency test. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 147 / 1278 │ │ │ │ │ │ │ │ │ │ Generating step pulses in software has one very big advantage - it’s free. Just about every PC has a │ │ │ │ │ parallel port that is capable of outputting step pulses that are generated by the software. However, │ │ │ │ │ software step pulses also have some disadvantages: │ │ │ │ │ limited maximum step rate │ │ │ │ │ @@ -9176,15 +9176,15 @@ │ │ │ │ │ │ │ │ │ │ This will start the latency test with a base-thread period of 50uS and a servo-thread period of 1mS. │ │ │ │ │ For available options, on the command line enter: │ │ │ │ │ latency-test -h │ │ │ │ │ │ │ │ │ │ After starting a latency test you should see something like this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 148 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 4.3: HAL Latency Test │ │ │ │ │ While the test is running, you should abuse the computer. Move windows around on the screen. Surf │ │ │ │ │ the web. Copy some large files around on the disk. Play some music. Run an OpenGL program such │ │ │ │ │ as glxgears. The idea is to put the PC through its paces while the latency test checks to see what the │ │ │ │ │ @@ -9206,15 +9206,15 @@ │ │ │ │ │ (several milliseconds) when using the onboard video. But a $5 used video card solved the problem. │ │ │ │ │ LinuxCNC does not require bleeding edge hardware. │ │ │ │ │ │ │ │ │ │ For more information on stepper tuning see the Stepper Tuning Chapter. │ │ │ │ │ Additional command line tools are available for examining latency when LinuxCNC is not │ │ │ │ │ running. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 149 / 1278 │ │ │ │ │ │ │ │ │ │ 4.2.2.2. Latency Plot │ │ │ │ │ latency-plot makes a strip chart recording for a base and a servo thread. It may be useful to see spikes │ │ │ │ │ in latency when other applications are started or used. Usage: │ │ │ │ │ latency-plot --help │ │ │ │ │ @@ -9256,15 +9256,15 @@ │ │ │ │ │ 25000, min: 5000) │ │ │ │ │ (servo thread interval, default: 1000000, min: 25000) │ │ │ │ │ (base bin size, default: 100 │ │ │ │ │ (servo bin size, default: 100 │ │ │ │ │ (base bins, default: 200 │ │ │ │ │ (servo bins, default: 200 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ --logscale │ │ │ │ │ --text │ │ │ │ │ --show │ │ │ │ │ --nobase │ │ │ │ │ --verbose │ │ │ │ │ --nox │ │ │ │ │ @@ -9294,15 +9294,15 @@ │ │ │ │ │ A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive │ │ │ │ │ use of LinuxCNC’s realtime tasks, so that other tasks (both user programs and kernel threads) do not │ │ │ │ │ interfere with LinuxCNC’s access to those CPUs. │ │ │ │ │ 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. │ │ │ │ │ The person installing LinuxCNC will need to experimentally determine the optimal tuning for their │ │ │ │ │ system. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 151 / 1278 │ │ │ │ │ │ │ │ │ │ 4.2.3.1. Tuning the BIOS for latency │ │ │ │ │ PC BIOSes vary wildly in their latency behavior. │ │ │ │ │ Tuning the BIOS is tedious because you have to reboot the computer, make one small tweak in the │ │ │ │ │ BIOS, boot Linux, and run the latency test (potentially for a long time) to see what effects your BIOS │ │ │ │ │ @@ -9338,15 +9338,15 @@ │ │ │ │ │ parallel port that is capable of outputting step pulses that are generated by the software. However, │ │ │ │ │ software step pulses also have some disadvantages: │ │ │ │ │ limited maximum step rate │ │ │ │ │ jitter in the generated pulses │ │ │ │ │ loads the CPU │ │ │ │ │ This chapter has some steps that can help you get the best results from software generated steps. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 152 / 1278 │ │ │ │ │ │ │ │ │ │ 4.3.1.1. Run a Latency Test │ │ │ │ │ The CPU is not the only factor determining latency. Motherboards, graphics cards, USB ports and │ │ │ │ │ many other things can degrade it. The best way to know what to expect from a PC is to run the RT │ │ │ │ │ latency tests. │ │ │ │ │ @@ -9385,15 +9385,15 @@ │ │ │ │ │ Step Pulse ”0” Time: 2.0 µs min (Step on rising edge) │ │ │ │ │ Step Pulse ”1” Time: 1.0 µs min │ │ │ │ │ Direction Setup: │ │ │ │ │ 200 ns (0.2 µs) before step pulse rising edge │ │ │ │ │ 200 ns (0.2 µs) hold after step pulse rising edge │ │ │ │ │ From the Xylotex datasheet: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 153 / 1278 │ │ │ │ │ │ │ │ │ │ Minimum DIR setup time before rising edge of STEP Pulse 200 ns Minimum │ │ │ │ │ DIR hold time after rising edge of STEP pulse 200 ns │ │ │ │ │ Minimum STEP pulse high time 2.0 µs │ │ │ │ │ Minimum STEP pulse low time 1.0 µs │ │ │ │ │ @@ -9439,15 +9439,15 @@ │ │ │ │ │ will lock up. If you are aiming for periods of less than 25 µs, you should start at 25 µs or more, run │ │ │ │ │ LinuxCNC, and see how things respond. If all is well, you can gradually decrease the period. If the │ │ │ │ │ mouse pointer starts getting sluggish, and everything else on the PC slows down, your period is a │ │ │ │ │ little too short. Go back to the previous value that let the computer run smoothly. │ │ │ │ │ In this case, suppose you started at 25 µs, trying to get to 13 µs, but you find that around 16 µs is the │ │ │ │ │ limit - any less and the computer doesn’t respond very well. So you use 16 µs. With a 16 µs period and │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 154 / 1278 │ │ │ │ │ │ │ │ │ │ 11 µs latency, the shortest output time will be 16-11 = 5 µs. The drive only needs 2 µs, so you have │ │ │ │ │ some margin. Margin is good - you don’t want to lose steps because you cut the timing too close. │ │ │ │ │ What is the maximum step rate? Remember, two periods to make a step. You settled on 16 µs for the │ │ │ │ │ period, so a step takes 32 µs. That works out to a not bad 31,250 steps per second. │ │ │ │ │ @@ -9489,15 +9489,15 @@ │ │ │ │ │ step rate that you will be able to generate. │ │ │ │ │ I’ve added a few things to the spreadsheet to calculate max speed and stepper electrical calculations. │ │ │ │ │ │ │ │ │ │ 4.4. INI Configuration │ │ │ │ │ 4.4.1. The INI File Components │ │ │ │ │ A typical INI file follows a rather simple layout that includes; │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 155 / 1278 │ │ │ │ │ │ │ │ │ │ comments │ │ │ │ │ sections │ │ │ │ │ variables │ │ │ │ │ Each of these elements is separated on single lines. Each end of line or newline character creates a │ │ │ │ │ @@ -9536,15 +9536,15 @@ │ │ │ │ │ [RS274NGC] settings used by the G-code interpreter │ │ │ │ │ [EMCMOT] settings used by the real time motion controller │ │ │ │ │ [TASK] settings used by the task controller │ │ │ │ │ [HAL] specifies .hal files │ │ │ │ │ [HALUI] MDI commands used by HALUI │ │ │ │ │ [APPLICATIONS] Other applications to be started by LinuxCNC │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 156 / 1278 │ │ │ │ │ │ │ │ │ │ [TRAJ] additional settings used by the real time motion controller │ │ │ │ │ [JOINT_n] individual joint variables │ │ │ │ │ [AXIS_l] individual axis variables │ │ │ │ │ [KINS] kinematics variables │ │ │ │ │ @@ -9582,15 +9582,15 @@ │ │ │ │ │ TYPE = LINEAR │ │ │ │ │ ... │ │ │ │ │ SCALE = 16000 │ │ │ │ │ │ │ │ │ │ To introduce a custom section with its own variables, add the section and variables to the INI file. │ │ │ │ │ Custom Section Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 157 / 1278 │ │ │ │ │ │ │ │ │ │ [PROBE] │ │ │ │ │ Z_FEEDRATE = 50 │ │ │ │ │ Z_OFFSET = 12 │ │ │ │ │ Z_SAFE_DISTANCE = -10 │ │ │ │ │ @@ -9630,15 +9630,15 @@ │ │ │ │ │ #INCLUDE /home/myusername/myincludes/display.inc │ │ │ │ │ #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc │ │ │ │ │ │ │ │ │ │ The #INCLUDE directives are supported for one level of expansion only — an included file may not │ │ │ │ │ include additional files. The recommended file extension is .inc. Do not use a file extension of .ini for │ │ │ │ │ included files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 158 / 1278 │ │ │ │ │ │ │ │ │ │ 4.4.2. INI File Sections │ │ │ │ │ 4.4.2.1. [EMC] Section │ │ │ │ │ VERSION = 1.1 - The version number for the configuration. Any value other than 1.1 will cause the │ │ │ │ │ configuration checker to run and try to update the configuration to the new style joint axes type of │ │ │ │ │ @@ -9674,15 +9674,15 @@ │ │ │ │ │ value. │ │ │ │ │ CONE_BASESIZE = .25 - Override the default cone/tool base size of .5 in the graphics display │ │ │ │ │ MAX_FEED_OVERRIDE = 1.2 - The maximum feed override the user may select. 1.2 means 120 % │ │ │ │ │ of the programmed feed rate. │ │ │ │ │ MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means │ │ │ │ │ 50 % of the programmed spindle speed. (This is used to set the minimum spindle speed). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 159 / 1278 │ │ │ │ │ │ │ │ │ │ MIN_SPINDLE_0_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means │ │ │ │ │ 50 % of the programmed spindle speed. (This is used to set the minimum spindle speed). On multi │ │ │ │ │ spindle machine there will be entries for each spindle number. Only used by the QtVCP based user │ │ │ │ │ interfaces. │ │ │ │ │ @@ -9720,15 +9720,15 @@ │ │ │ │ │ An under powered CPU may see improvement with a longer setting. Usually the default is fine. │ │ │ │ │ PREVIEW_TIMEOUT = 5 - Timeout (in seconds) for loading graphical preview of G-code. Currently │ │ │ │ │ AXIS only. │ │ │ │ │ nota │ │ │ │ │ The following [DISPLAY] items are used by GladeVCP and PyVCP, see the embedding a tab section of │ │ │ │ │ the GladeVCP Chapter or the PyVCP Chapter for more information. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 160 / 1278 │ │ │ │ │ │ │ │ │ │ EMBED_TAB_NAME = GladeVCP demo │ │ │ │ │ EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui │ │ │ │ │ nota │ │ │ │ │ Different user interface programs use different options, and not every option is supported by every │ │ │ │ │ @@ -9764,15 +9764,15 @@ │ │ │ │ │ variable is omitted the panel will default to the right side. The only valid alternative is BOTTOM. │ │ │ │ │ See the PyVCP Chapter for more information. │ │ │ │ │ LATHE = 1 - Any non-empty value (including ”0”) causes axis to use ”lathe mode” with a top view │ │ │ │ │ and with Radius and Diameter on the DRO. │ │ │ │ │ BACK_TOOL_LATHE = 1 - Any non-empty value (including ”0”) causes axis to use ”back tool lathe │ │ │ │ │ mode” with inverted X axis. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 161 / 1278 │ │ │ │ │ │ │ │ │ │ FOAM = 1 - Any non-empty value (including ”0”) causes axis to change the display for foam-cutter │ │ │ │ │ mode. │ │ │ │ │ GEOMETRY = XYZABCUVW - Controls the preview and backplot of motion. This item consists of │ │ │ │ │ a sequence of axis letters and control characters, optionally preceded with a ”-” sign: │ │ │ │ │ @@ -9814,15 +9814,15 @@ │ │ │ │ │ JOG_AXES = - The order in which jog keys are assigned to axis letters. The left and right arrows are │ │ │ │ │ assigned to the first axis letter, up and down to the second, page up/page down to the third, and left │ │ │ │ │ and right bracket to the fourth. If unspecified, the default is determined from the [TRAJ]COORDINATES, │ │ │ │ │ [DISPLAY]LATHE and [DISPLAY]FOAM values. │ │ │ │ │ JOG_INVERT = - For each axis letter, the jog direction is inverted. The default is ”X” for lathes and │ │ │ │ │ blank otherwise. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 162 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ The settings for JOG_AXES and JOG_INVERT apply to world mode jogging by axis coordinate letter │ │ │ │ │ and are in effect while in world mode after successful homing. When operating in joint mode prior │ │ │ │ │ to homing, keyboard jog keys are assigned in a fixed sequence: left/right: joint0, up/down: joint1, │ │ │ │ │ @@ -9861,15 +9861,15 @@ │ │ │ │ │ The program file associated with an extension must have either the full path to the program or be │ │ │ │ │ located in a directory that is on the system path. │ │ │ │ │ │ │ │ │ │ It is also possible to specify an interpreter: │ │ │ │ │ PROGRAM_EXTENSION = .py Python Script │ │ │ │ │ py = python │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 163 / 1278 │ │ │ │ │ │ │ │ │ │ In this way, any Python script can be opened, and its output is treated as G-code. One such example │ │ │ │ │ script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes │ │ │ │ │ along the circumference of a circle. Many more G-code generators are on the LinuxCNC Wiki site │ │ │ │ │ https://wiki.linuxcnc.org/. │ │ │ │ │ @@ -9912,15 +9912,15 @@ │ │ │ │ │ the parameters used by the interpreter (saved between runs). │ │ │ │ │ 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. │ │ │ │ │ RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92 G94 G97 G98 - A string │ │ │ │ │ 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 │ │ │ │ │ by G-code interpreted earlier in the session. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 164 / 1278 │ │ │ │ │ │ │ │ │ │ SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Specifies a colon (:) separated list of up to 10 directories to be searched when single-file subroutines are specified in G-code. │ │ │ │ │ These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified) and │ │ │ │ │ before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order that │ │ │ │ │ they are listed. The first matching subroutine file found in the search is used. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no │ │ │ │ │ @@ -9957,15 +9957,15 @@ │ │ │ │ │ OWORD_WARNONLY = 0 Default 0 │ │ │ │ │ Warn rather than error in case of errors in O-word subroutines. │ │ │ │ │ DISABLE_G92_PERSISTENCE = 0 Default 0 Allow to clear the G92 offset automatically when config │ │ │ │ │ start-up. │ │ │ │ │ DISABLE_FANUC_STYLE_SUB = 0 Default 0 If there is reason to disable Fanuc subroutines set it │ │ │ │ │ to 1. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 165 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ The above six options were controlled by the FEATURES bitmask in versions of LinuxCNC prior to 2.8. │ │ │ │ │ This INI tag will no longer work. │ │ │ │ │ For reference: │ │ │ │ │ @@ -10001,15 +10001,15 @@ │ │ │ │ │ such as communicate with the UIs over NML, communicate with the realtime motion planner over │ │ │ │ │ non-HAL shared memory, and interpret G-code. Currently there is only one task executable that │ │ │ │ │ makes sense for 99.9 % of users, milltask. │ │ │ │ │ CYCLE_TIME = 0.010 - The period, in seconds, at which TASK will run. This parameter affects the │ │ │ │ │ polling interval when waiting for motion to complete, when executing a pause instruction, and when │ │ │ │ │ accepting a command from a user interface. There is usually no need to change this number. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 166 / 1278 │ │ │ │ │ │ │ │ │ │ 4.4.2.7. [HAL] section │ │ │ │ │ HALFILE = example.hal - Execute the file example.hal at start up. │ │ │ │ │ If HALFILE is specified multiple times, the files are executed in the order they appear in the INI file. │ │ │ │ │ Almost all configurations will have at least one HALFILE, and stepper systems typically have two │ │ │ │ │ @@ -10050,15 +10050,15 @@ │ │ │ │ │ the second pass (pass1), the HALFILES are reread and all commands except the previously executed │ │ │ │ │ load commands are executed. │ │ │ │ │ TWOPASS = nodelete verbose - The TWOPASS feature can be activated with any non-null string │ │ │ │ │ including the keywords verbose and nodelete. The verbose keyword causes printing of details to │ │ │ │ │ stdout. The nodelete keyword preserves temporary files in /tmp. │ │ │ │ │ For more information see the HAL TWOPASS chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 167 / 1278 │ │ │ │ │ │ │ │ │ │ HALCMD = command - Execute command as a single HAL command. If HALCMD is specified multiple times, the commands are executed in the order they appear in the INI file. HALCMD lines are │ │ │ │ │ executed after all HALFILE lines. │ │ │ │ │ SHUTDOWN = shutdown.hal - Execute the file shutdown.hal when LinuxCNC is exiting. Depending │ │ │ │ │ on the hardware drivers used, this may make it possible to set outputs to defined values when │ │ │ │ │ @@ -10095,15 +10095,15 @@ │ │ │ │ │ │ │ │ │ │ • Alternatively, a watchlist file identified with a full pathname could be specified: │ │ │ │ │ APP = halshow ~/saved_shows/spindle.halshow │ │ │ │ │ │ │ │ │ │ • Open halscope using a previously saved configuration: │ │ │ │ │ APP = halscope -i my.halscope │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 168 / 1278 │ │ │ │ │ │ │ │ │ │ 4.4.2.10. [TRAJ] Section │ │ │ │ │ aviso │ │ │ │ │ The new Trajectory Planner (TP) is on by default. If you have no TP settings in your [TRAJ] │ │ │ │ │ section - LinuxCNC defaults to: │ │ │ │ │ @@ -10148,15 +10148,15 @@ │ │ │ │ │ play with it a bit to find a good value. I’d start at 1/2 of the min_length, then work up as needed. │ │ │ │ │ * ARC_BLEND_GAP_CYCLES = 4 How short the previous segment must be before the trajectory │ │ │ │ │ planner consumes it. │ │ │ │ │ Often, a circular arc blend will leave short line segments in between the blends. Since the geometry │ │ │ │ │ has to be circular, we can’t blend over all of a line if the next one is a little shorter. Since the │ │ │ │ │ trajectory planner has to touch each segment at least once, it means that very tiny segments will │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 169 / 1278 │ │ │ │ │ │ │ │ │ │ slow things down significantly. My fix to this way to ”consume” the short segment by making it a │ │ │ │ │ part of the blend arc. Since the line+blend is one segment, we don’t have to slow down to hit the │ │ │ │ │ very short segment. Likely, you won’t need to touch this setting. * ARC_BLEND_RAMP_FREQ = 20 │ │ │ │ │ - This is a cutoff frequency for using ramped velocity. │ │ │ │ │ @@ -10202,15 +10202,15 @@ │ │ │ │ │ deg, degree (360 per circle), rad, radian (2*π per circle), grad, or gon (400 per circle). This does │ │ │ │ │ not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in │ │ │ │ │ degrees. │ │ │ │ │ DEFAULT_LINEAR_VELOCITY = 0.0167 - The initial rate for jogs of linear axes, in machine units │ │ │ │ │ per second. The value shown in Axis equals machine units per minute. │ │ │ │ │ DEFAULT_LINEAR_ACCELERATION = 2.0 - In machines with nontrivial kinematics, the acceleration used for ”teleop” (Cartesian space) jogs, in machine units per second per second. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 170 / 1278 │ │ │ │ │ │ │ │ │ │ MAX_LINEAR_VELOCITY = 5.0 - The maximum velocity for any axis or coordinated move, in machine units per second. The value shown equals 300 units per minute. │ │ │ │ │ MAX_LINEAR_ACCELERATION = 20.0 - The maximum acceleration for any axis or coordinated axis │ │ │ │ │ move, in machine units per second per second. │ │ │ │ │ POSITION_FILE = position.txt - If set to a non-empty value, the joint positions are stored between │ │ │ │ │ @@ -10248,15 +10248,15 @@ │ │ │ │ │ by a GUI to set the number of joints (num_joints) specified to the motion module (motmod)). │ │ │ │ │ KINEMATICS = trivkins - Specify a kinematics module for the motion module. Guis may use this │ │ │ │ │ variable to specify the loadrt line in HAL files for the motmod module. For more information on │ │ │ │ │ kinematics modules see the manpage: $ man kins │ │ │ │ │ 4.4.2.12. [AXIS_] Section │ │ │ │ │ The specifies one of: X Y Z A B C U V W │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 171 / 1278 │ │ │ │ │ │ │ │ │ │ MAX_VELOCITY = 1.2 - Maximum velocity for this axis in machine units per second. │ │ │ │ │ MAX_ACCELERATION = 20.0 - Maximum acceleration for this axis in machine units per second │ │ │ │ │ squared. │ │ │ │ │ MIN_LIMIT = -1000 - The minimum limit (soft limit) for axis motion, in machine units. When this │ │ │ │ │ @@ -10296,15 +10296,15 @@ │ │ │ │ │ Typically (for systems using trivkins kinematics, there is a 1:1 correspondence between a joint and an │ │ │ │ │ axis coordinate letter): │ │ │ │ │ JOINT_0 = X │ │ │ │ │ JOINT_1 = Y │ │ │ │ │ JOINT_2 = Z │ │ │ │ │ JOINT_3 = A │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 172 / 1278 │ │ │ │ │ │ │ │ │ │ JOINT_4 = B │ │ │ │ │ JOINT_5 = C │ │ │ │ │ JOINT_6 = U │ │ │ │ │ JOINT_7 = V │ │ │ │ │ @@ -10345,15 +10345,15 @@ │ │ │ │ │ 1.000 1.003 0.998 │ │ │ │ │ │ │ │ │ │ • Type 1: The second value specifies positive offset from nominal while traveling in the positive │ │ │ │ │ direction. The third value specifies the negative offset from nominal while traveling in a negative │ │ │ │ │ direction. │ │ │ │ │ Type 1 Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 173 / 1278 │ │ │ │ │ │ │ │ │ │ -1.000 0.005 -0.005 │ │ │ │ │ 0.000 0.002 -0.003 │ │ │ │ │ 1.000 0.003 -0.004 │ │ │ │ │ │ │ │ │ │ @@ -10388,15 +10388,15 @@ │ │ │ │ │ HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence. │ │ │ │ │ HOME_OFFSET = 0.0 - The joint position of the home switch or index pulse, in machine units. When │ │ │ │ │ the home point is found during the homing process, this is the position that is assigned to that point. │ │ │ │ │ When sharing home and limit switches and using a home sequence that will leave the home/limit │ │ │ │ │ switch in the toggled state the home offset can be used define the home switch position to be other │ │ │ │ │ than 0 if your HOME position is desired to be 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 174 / 1278 │ │ │ │ │ │ │ │ │ │ HOME_SEARCH_VEL = 0.0 - Initial homing velocity in machine units per second. Sign denotes │ │ │ │ │ direction of travel. A value of zero means assume that the current location is the home position for │ │ │ │ │ the machine. If your machine has no home switches you will want to leave this value at zero. │ │ │ │ │ HOME_LATCH_VEL = 0.0 - Homing velocity in machine units per second to the home switch latch │ │ │ │ │ @@ -10437,15 +10437,15 @@ │ │ │ │ │ settings in one place. For more information on custom INI file entries see the Custom Sections │ │ │ │ │ and Variables subsection. │ │ │ │ │ │ │ │ │ │ The following items might be used by a PID component and the assumption is that the output is volts. │ │ │ │ │ DEADBAND = 0.000015 - How close is close enough to consider the motor in position, in machine │ │ │ │ │ units. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 175 / 1278 │ │ │ │ │ │ │ │ │ │ This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict │ │ │ │ │ rules. Looser (larger) settings allow less servo hunting at the expense of lower accuracy. Tighter │ │ │ │ │ (smaller) settings attempt higher accuracy at the expense of more servo hunting. Is it really more │ │ │ │ │ accurate if it’s also more uncertain? As a general rule, it’s good to avoid, or at least limit, servo │ │ │ │ │ @@ -10476,15 +10476,15 @@ │ │ │ │ │ FF2 = 0 - The 2nd order feed forward gain. This number is multiplied by the change in commanded position per second per second, resulting in a contribution to the computed voltage for the │ │ │ │ │ motor amplifier. The units on the FF2 gain are volts per machine unit per second per second, e.g., │ │ │ │ │ │ │ │ │ │ OUTPUT_SCALE = 1.000 │ │ │ │ │ OUTPUT_OFFSET = 0.000 │ │ │ │ │ These two values are the scale and offset factors for the joint output to the motor amplifiers. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 176 / 1278 │ │ │ │ │ │ │ │ │ │ The second value (offset) is subtracted from the computed output (in volts), and divided by the first │ │ │ │ │ value (scale factor), before being written to the D/A converters. The units on the scale value are │ │ │ │ │ in true volts per DAC output volts. The units on the offset value are in volts. These can be used to │ │ │ │ │ linearize a DAC. Specifically, when writing outputs, the LinuxCNC first converts the desired output │ │ │ │ │ @@ -10530,15 +10530,15 @@ │ │ │ │ │ MAX_OUTPUT = 10 - The maximum value for the output of the PID compensation that is written │ │ │ │ │ to the motor amplifier, in volts. The computed output value is clamped to this limit. The limit is │ │ │ │ │ applied before scaling to raw output units. The value is applied symmetrically to both the plus and │ │ │ │ │ the minus side. │ │ │ │ │ INPUT_SCALE = 20000 - in Sample configs │ │ │ │ │ ENCODER_SCALE = 20000 - in PnCconf built configs │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 177 / 1278 │ │ │ │ │ │ │ │ │ │ Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] │ │ │ │ │ section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an │ │ │ │ │ angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is │ │ │ │ │ ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units │ │ │ │ │ @@ -10575,15 +10575,15 @@ │ │ │ │ │ loop”. If you have added backlash compensation to an joint then this should be 1.5 to 2 times greater │ │ │ │ │ than MAX_ACCELERATION. │ │ │ │ │ STEPGEN_MAXVEL = 1.4 - Older configuration files have a velocity limit for the step generator as │ │ │ │ │ well. If specified, it should also be 1 % to 10 % larger than the joint MAX_VELOCITY. Subsequent │ │ │ │ │ testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of StepGen’s position │ │ │ │ │ loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 178 / 1278 │ │ │ │ │ │ │ │ │ │ 4.4.2.14. [SPINDLE_] Section(s) │ │ │ │ │ The specifies the spindle number 0 … (num_spindles-1) The value of num_spindles is set by │ │ │ │ │ [TRAJ]SPINDLES= │ │ │ │ │ MAX_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle. Optional. │ │ │ │ │ @@ -10622,15 +10622,15 @@ │ │ │ │ │ when the value is 1. This is the same as issuing a G0 G53 Z0. │ │ │ │ │ TOOL_CHANGE_AT_G30 = 1 - The machine is moved to reference point defined by parameters │ │ │ │ │ 5181-5186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30G30.1. │ │ │ │ │ RANDOM_TOOLCHANGER = 1 - This is for machines that cannot place the tool back into the pocket │ │ │ │ │ it came from. For example, machines that exchange the tool in the active pocket with the tool in the │ │ │ │ │ spindle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 179 / 1278 │ │ │ │ │ │ │ │ │ │ 4.5. Homing Configuration │ │ │ │ │ 4.5.1. Overview │ │ │ │ │ Homing sets the zero origin of the G53 machine coordinates. Soft limits are defined relative to the │ │ │ │ │ machine origin. The soft limits automatically decelerate and stop the axes before they hit the limits │ │ │ │ │ @@ -10668,15 +10668,15 @@ │ │ │ │ │ the dog relative to the switch (ie before or after the switch), and must stay that way even if the dog │ │ │ │ │ coasts past the switch in the same direction. │ │ │ │ │ nota │ │ │ │ │ While it is possible to use LinuxCNC with the G53 machine origin outside the soft machine limits, if │ │ │ │ │ you use G28 or G30 without setting the parameters it goes to the origin by default. This would trip │ │ │ │ │ the limit switches before getting to position. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 180 / 1278 │ │ │ │ │ │ │ │ │ │ 4.5.3. Separate Home Switch Example Layout │ │ │ │ │ This example shows minimum and maximum limit switches with a separate home switch. │ │ │ │ │ │ │ │ │ │ Figura 4.6: Demonstrative Separate Switch Layout │ │ │ │ │ @@ -10695,15 +10695,15 @@ │ │ │ │ │ Note that there is distance between the limit switches and actual physical hard contact for coasting │ │ │ │ │ after the amplifier is disabled. │ │ │ │ │ nota │ │ │ │ │ Homing sets the G53 coordinate system, while the machine origin (zero point) can be anywhere, │ │ │ │ │ setting the zero point at the negative soft limit makes all G53 coordinates positive, which is probably │ │ │ │ │ easiest to remember. Do this by setting MIN_LIMIT = 0 and make sure MAX_LIMIT is positive. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 181 / 1278 │ │ │ │ │ │ │ │ │ │ 4.5.4. Shared Limit/Home Switch Example Layout │ │ │ │ │ This example shows a maximum limit switch and a combined minimum limit/home switch. │ │ │ │ │ │ │ │ │ │ Figura 4.7: Demonstrative Shared Switch Layout │ │ │ │ │ @@ -10724,21 +10724,21 @@ │ │ │ │ │ │ │ │ │ │ 4.5.5. Homing Sequence │ │ │ │ │ There are four possible homing sequences defined by the sign of HOME_SEARCH_VEL and HOME_LATCH_VEL, along with the associated configuration parameters as shown in the following table. │ │ │ │ │ Two basic conditions exist, HOME_SEARCH_VEL and HOME_LATCH_VEL are the same sign or they │ │ │ │ │ are opposite signs. For a more detailed description of what each configuration parameter does, see │ │ │ │ │ the following section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 4.8: Homing Sequences │ │ │ │ │ │ │ │ │ │ 182 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 183 / 1278 │ │ │ │ │ │ │ │ │ │ 4.5.6. Configuration │ │ │ │ │ The following determines exactly how the home sequence behaves. They are defined in an [JOINT_n] │ │ │ │ │ section of the INI file. │ │ │ │ │ Homing Type │ │ │ │ │ @@ -10792,15 +10792,15 @@ │ │ │ │ │ value is zero. │ │ │ │ │ 4.5.6.3. HOME_FINAL_VEL │ │ │ │ │ This variable has units of machine-units per second. │ │ │ │ │ It specifies the speed that LinuxCNC uses when it makes its move from HOME_OFFSET to the HOME │ │ │ │ │ position. If the HOME_FINAL_VEL is missing from the INI file, then the maximum joint speed is used │ │ │ │ │ to make this move. The value must be a positive number. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 184 / 1278 │ │ │ │ │ │ │ │ │ │ 4.5.6.4. HOME_IGNORE_LIMITS │ │ │ │ │ Can hold the values YES / NO. The default value for this parameter is NO. This flag determines whether │ │ │ │ │ LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore │ │ │ │ │ limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the │ │ │ │ │ @@ -10832,15 +10832,15 @@ │ │ │ │ │ switch or home switch then index pulse (depending on configuration), and setting the coordinate of │ │ │ │ │ that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing │ │ │ │ │ process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET, │ │ │ │ │ the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small │ │ │ │ │ move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped). │ │ │ │ │ This final move will be made at the joint’s maximum velocity unless HOME_FINAL_VEL has been set. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 185 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ The distinction between HOME_OFFSET and HOME is that HOME_OFFSET first establishes the origin │ │ │ │ │ location and scale on the machine by applying the HOME_OFFSET value to the location where home │ │ │ │ │ was found, and then HOME says where the joint should move to on that scale. │ │ │ │ │ @@ -10876,15 +10876,15 @@ │ │ │ │ │ The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers │ │ │ │ │ must increment by one — skipping sequence numbers is not supported. If a sequence number is omitted, HOME ALL homing will stop upon completion of the last valid sequence number. │ │ │ │ │ Negative HOME_SEQUENCE values indicate that joints in the sequence should synchronize the │ │ │ │ │ final move to [JOINT_n]HOME by waiting until all joints in the sequence are ready. If any joint has a │ │ │ │ │ negative HOME_SEQUENCE value, then all joints with the same absolute value (positive or negative) │ │ │ │ │ of the HOME_SEQUENCE item value will synchronize the final move. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 186 / 1278 │ │ │ │ │ │ │ │ │ │ A negative HOME_SEQUENCE also applies to commands to home a single joint. If the HOME_SEQUENCE │ │ │ │ │ value is negative, all joints having the same absolute value of that HOME_SEQUENCE will be homed together with a synchronized final move. If the HOME_SEQUENCE value is zero or positive, │ │ │ │ │ a command to home the joint will home only the specified joint. │ │ │ │ │ Joint mode jogging of joints having a negative HOME_SEQUENCE is disallowed. In common gantry │ │ │ │ │ @@ -10927,15 +10927,15 @@ │ │ │ │ │ 4.5.6.13. LOCKING_INDEXER │ │ │ │ │ If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward. │ │ │ │ │ 4.5.6.14. Immediate Homing │ │ │ │ │ If a joint does not have home switches or does not have a logical home position like a rotary joint and │ │ │ │ │ you want that joint to home at the current position when the ”Home All” button is pressed in the Axis │ │ │ │ │ gui, then the following INI entries for that joint are needed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 187 / 1278 │ │ │ │ │ │ │ │ │ │ HOME_SEARCH_VEL = 0 │ │ │ │ │ HOME_LATCH_VEL = 0 │ │ │ │ │ HOME_USE_INDEX = NO │ │ │ │ │ HOME_OFFSET = 0 (Or the home position offset (HOME)) │ │ │ │ │ @@ -10981,15 +10981,15 @@ │ │ │ │ │ net hsequence_select => motion.homing-inhibit │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ INI HAL pins (like ini.N.home_sequence) are not available until milltask starts so execution of the │ │ │ │ │ above HAL commands should be deferred using a postgui HAL file or a delayed [APPLICATION]APP= │ │ │ │ │ script. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 188 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for │ │ │ │ │ the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale, joint.N.counts). │ │ │ │ │ │ │ │ │ │ @@ -11020,15 +11020,15 @@ │ │ │ │ │ │ │ │ │ │ 4.6.2. Usage │ │ │ │ │ INI file options: │ │ │ │ │ [EMCIO] section │ │ │ │ │ PROTOCOL_VERSION = 2 │ │ │ │ │ Defaults to 2. Setting to 1 will emulate old iocontrol behaviour. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 189 / 1278 │ │ │ │ │ │ │ │ │ │ EMCIO = iov2 -support-start-change │ │ │ │ │ You need to explicitly enable the start-change protocol by adding the -support-start-change option; otherwise the start-change pin remains low and start-change-ack is ignored. The reason for │ │ │ │ │ this is better backwards compatibility. │ │ │ │ │ [TASK] section │ │ │ │ │ @@ -11061,15 +11061,15 @@ │ │ │ │ │ iocontrol.0.user-request-enable (Bit, Out) TRUE when the user has requested that estop be cleared │ │ │ │ │ Additional pins added by I/O Control V2 │ │ │ │ │ emc-abort: (Bit, Out) signals emc-originated abort to toolchanger. │ │ │ │ │ emc-abort-ack: (Bit, In) Acknowledge line from toolchanger for previous signal, or jumpered to │ │ │ │ │ abort-tool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until │ │ │ │ │ emc-abort-ack is raised. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 190 / 1278 │ │ │ │ │ │ │ │ │ │ emc-reason: (S32, Out) convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort TRUE. │ │ │ │ │ start-change: (Bit, Out) asserted at the very beginning of an M6 operation, before any spindle-off, │ │ │ │ │ quill-up, or move-to-toolchange-position oeprations are executed. │ │ │ │ │ start-change-ack: (Bit, In) acknowledgment line for start-change. │ │ │ │ │ @@ -11105,15 +11105,15 @@ │ │ │ │ │ EMC_ABORT_AUX_ESTOP = 2, │ │ │ │ │ EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3, │ │ │ │ │ EMC_ABORT_TASK_STATE_OFF = 4, │ │ │ │ │ EMC_ABORT_TASK_STATE_ESTOP_RESET = 5, │ │ │ │ │ EMC_ABORT_TASK_STATE_ESTOP = 6, │ │ │ │ │ EMC_ABORT_TASK_STATE_NOT_ON = 7, │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 191 / 1278 │ │ │ │ │ │ │ │ │ │ EMC_ABORT_TASK_ABORT = 8, │ │ │ │ │ EMC_ABORT_USER = 100 │ │ │ │ │ iov2 adds one more code, namely EMC_ABORT_BY_TOOLCHANGER_FAULT = 101 which is signaled │ │ │ │ │ when an M6 aborts due to the toolchanger-faulted pin being TRUE. │ │ │ │ │ @@ -11148,15 +11148,15 @@ │ │ │ │ │ [DISPLAY] │ │ │ │ │ DISPLAY = axis │ │ │ │ │ LATHE = 1 │ │ │ │ │ ... │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 192 / 1278 │ │ │ │ │ │ │ │ │ │ JOINTS = 3 │ │ │ │ │ [TRAJ] │ │ │ │ │ COORDINATES = X Z │ │ │ │ │ ... │ │ │ │ │ @@ -11198,15 +11198,15 @@ │ │ │ │ │ The Latency Test determines how late your computer processor is in responding to a request. Some │ │ │ │ │ hardware can interrupt the processing which could cause missed steps when running a CNC machine. │ │ │ │ │ This is the first thing you need to do. Follow the instructions here to run the latency test. │ │ │ │ │ │ │ │ │ │ 4.8.2. Sherline │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 193 / 1278 │ │ │ │ │ │ │ │ │ │ 4.8.3. Xylotex │ │ │ │ │ If you have a Xylotex you can skip the following sections and go straight to the Stepper Config Wizard. │ │ │ │ │ LinuxCNC has provided quick setup for the Xylotex machines. │ │ │ │ │ │ │ │ │ │ @@ -11305,15 +11305,15 @@ │ │ │ │ │ │ │ │ │ │ Leadscrew │ │ │ │ │ Teeth │ │ │ │ │ │ │ │ │ │ Leadscrew │ │ │ │ │ Pitch │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Axis │ │ │ │ │ │ │ │ │ │ Steps/Rev. │ │ │ │ │ │ │ │ │ │ Micro Steps │ │ │ │ │ │ │ │ │ │ @@ -11363,15 +11363,15 @@ │ │ │ │ │ Leadscrew Pitch = │ │ │ │ │ 5.00 mm per turn │ │ │ │ │ From the above information: - The leadscrew moves 5.00 mm per turn. - The motor turns 3.000 times │ │ │ │ │ per 1 leadscrew turn. - The drive takes 8 microstep inputs to make the stepper step once. - The drive │ │ │ │ │ needs 1600 steps to turn the stepper one revolution. │ │ │ │ │ So the scale needed is: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 195 / 1278 │ │ │ │ │ │ │ │ │ │ 4.9. Stepper Configuration │ │ │ │ │ 4.9.1. Introduction │ │ │ │ │ The preferred way to set up a standard stepper machine is with the Step Configuration Wizard. See │ │ │ │ │ the Stepper Configuration Wizard Chapter. │ │ │ │ │ @@ -11408,15 +11408,15 @@ │ │ │ │ │ The ones relevant for our pinout are: │ │ │ │ │ signals: Xstep, Xdir & Xen │ │ │ │ │ pins: parport.0.pin-XX-out & parport.0.pin-XX-in │ │ │ │ │ │ │ │ │ │ Depending on what you have chosen in your INI file you are using either standard_pinout.hal or xylotex_pinout.hal. These are two files that instruct the HAL how to link the various signals & pins. Further │ │ │ │ │ on we’ll investigate the standard_pinout.hal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4.9.3.1. Standard Pinout HAL │ │ │ │ │ This file contains several HAL commands, and usually looks like this: │ │ │ │ │ # standard pinout config file for 3-axis steppers │ │ │ │ │ # using a parport for I/O │ │ │ │ │ # │ │ │ │ │ # first load the parport driver │ │ │ │ │ @@ -11462,15 +11462,15 @@ │ │ │ │ │ ### that’s ok, hook the same signal to all the axes, but be sure to │ │ │ │ │ ### set HOME_IS_SHARED and HOME_SEQUENCE in the INI file. │ │ │ │ │ ### │ │ │ │ │ # net homeswitches <= parport.0.pin-10-in │ │ │ │ │ │ │ │ │ │ 196 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 197 / 1278 │ │ │ │ │ │ │ │ │ │ # net homeswitches => joint.0.home-sw-in │ │ │ │ │ # net homeswitches => joint.1.home-sw-in │ │ │ │ │ # net homeswitches => joint.2.home-sw-in │ │ │ │ │ ### │ │ │ │ │ @@ -11506,15 +11506,15 @@ │ │ │ │ │ net Xstep parport.0.pin-02-out │ │ │ │ │ net Xdir parport.0.pin-03-out │ │ │ │ │ │ │ │ │ │ or basically any other out pin you like. │ │ │ │ │ Hint: make sure you don’t have more than one signal connected to the same pin. │ │ │ │ │ 5 the fastest thread in the LinuxCNC setup, usually ther code gets executed every few tens of microseconds │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 198 / 1278 │ │ │ │ │ │ │ │ │ │ 4.9.3.4. Changing polarity of a signal │ │ │ │ │ If external hardware expects an ”active low” signal, set the corresponding -invert parameter. For │ │ │ │ │ instance, to invert the spindle control signal: │ │ │ │ │ setp parport.0.pin-09-invert TRUE │ │ │ │ │ @@ -11548,15 +11548,15 @@ │ │ │ │ │ 4.10. Stepper Diagnostics │ │ │ │ │ If what you get is not what you expect many times you just got some experience. Learning from the │ │ │ │ │ experience increases your understanding of the whole. Diagnosing problems is best done by divide │ │ │ │ │ and conquer. By this I mean if you can remove 1/2 of the variables from the equation each time you │ │ │ │ │ will find the problem the fastest. In the real world this is not always the case, but it’s usually a good │ │ │ │ │ place to start. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 199 / 1278 │ │ │ │ │ │ │ │ │ │ 4.10.1. Common Problems │ │ │ │ │ 4.10.1.1. Stepper Moves One Step │ │ │ │ │ The most common reason in a new installation for a stepper motor not to move is that the step and │ │ │ │ │ direction signals are exchanged. If you press the jog forward and jog backward keys, alternately , and │ │ │ │ │ @@ -11586,15 +11586,15 @@ │ │ │ │ │ If you added backlash you need to increase the STEPGEN_MAXACCEL up to double the MAX_ACCELERATIO │ │ │ │ │ in the AXIS section of the INI file for each axis you added backlash to. LinuxCNC uses ”extra acceleration” at a reversal to take up the backlash. Without backlash correction, step generator acceleration │ │ │ │ │ can be just a few percent above the motion planner acceleration. │ │ │ │ │ 4.10.2.2. RTAPI Error │ │ │ │ │ When you get this error: │ │ │ │ │ RTAPI: ERROR: Unexpected realtime delay on task n │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 200 / 1278 │ │ │ │ │ │ │ │ │ │ This error is generated by rtapi based on an indication from RTAI that a deadline was missed. It is │ │ │ │ │ usually an indication that the BASE_PERIOD in the [EMCMOT] section of the ini file is set too low. You │ │ │ │ │ should run the Latency Test for an extended period of time to see if you have any delays that would │ │ │ │ │ cause this problem. If you used the Stepconf Wizard, run it again, and test the Base Period Jitter again, │ │ │ │ │ @@ -11640,15 +11640,15 @@ │ │ │ │ │ G0 Z1.000 │ │ │ │ │ G0 Z0.500 │ │ │ │ │ #1000 = [#1000 - 1] │ │ │ │ │ o101 endwhile │ │ │ │ │ ( msg, Done...Z should be exactly .5” above table ) │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 201 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 5 │ │ │ │ │ │ │ │ │ │ HAL (Hardware Abstraction Layer) │ │ │ │ │ 5.1. HAL Introduction │ │ │ │ │ @@ -11663,15 +11663,15 @@ │ │ │ │ │ HAL is based on the same principles that are used to design hardware circuits and systems, so it is │ │ │ │ │ useful to examine those principles first. │ │ │ │ │ Any system, including a CNC machine, consists of interconnected components. For the CNC machine, │ │ │ │ │ those components might be the main controller, servo amps or stepper drives, motors, encoders, limit │ │ │ │ │ switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc. │ │ │ │ │ The machine builder must select, mount and wire these pieces together to make a complete system. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 202 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.1: HAL Concept - Connecting like electrical circuits. │ │ │ │ │ Figure one would be written in HAL code like this: │ │ │ │ │ net signal-blue │ │ │ │ │ net signal-red │ │ │ │ │ @@ -11691,15 +11691,15 @@ │ │ │ │ │ about which specific components to use is based on what that component does and the specifications │ │ │ │ │ supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the │ │ │ │ │ choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed │ │ │ │ │ by the amp and the velocity or position signals that must be sent to the amp from a control. │ │ │ │ │ In the HAL world, the integrator must decide what HAL components are needed. Usually every interface card will require a driver. Additional components may be needed for software generation of step │ │ │ │ │ pulses, PLC functionality, and a wide variety of other tasks. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 203 / 1278 │ │ │ │ │ │ │ │ │ │ 5.1.1.2. Interconnection Design │ │ │ │ │ The designer of a hardware system not only selects the parts, he also decides how those parts will be │ │ │ │ │ interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a │ │ │ │ │ servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit │ │ │ │ │ @@ -11723,15 +11723,15 @@ │ │ │ │ │ HAL provides the software equivalents of a voltmeter, oscilloscope, signal generator, and other tools │ │ │ │ │ needed for testing and tuning a system. The same commands used to build the system can be used to │ │ │ │ │ make changes as needed. │ │ │ │ │ 5.1.1.5. Summary │ │ │ │ │ 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 │ │ │ │ │ section in the HAL UI Examples documentation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 204 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.2: Remote Start Example (Schema) │ │ │ │ │ The traditional hardware design as described above ends at the edge of the main control. Outside the │ │ │ │ │ control are a bunch of relatively simple boxes, connected together to do whatever is needed. Inside, │ │ │ │ │ the control is a big mystery — one huge black box that we hope works. │ │ │ │ │ @@ -11756,15 +11756,15 @@ │ │ │ │ │ because these terms are not arranged in alphabetical order. They are arranged by their relationship │ │ │ │ │ or flow in the HAL way of things. │ │ │ │ │ Component │ │ │ │ │ When we talked about hardware design, we referred to the individual pieces as parts, building │ │ │ │ │ blocks, black boxes, etc. The HAL equivalent is a component or HAL component. (This document │ │ │ │ │ uses HAL component when there is likely to be confusion with other kinds of components, but │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 205 / 1278 │ │ │ │ │ │ │ │ │ │ normally just uses component.) A HAL component is a piece of software with well-defined inputs, │ │ │ │ │ outputs, and behavior, that can be installed and interconnected as needed. │ │ │ │ │ nota │ │ │ │ │ Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be │ │ │ │ │ @@ -11806,15 +11806,15 @@ │ │ │ │ │ input of a servo amp. HAL pins have the same restrictions, which are based upon their type. │ │ │ │ │ Both pins and signals have types, and signals can only be connected to pins of the same type. │ │ │ │ │ Currently there are 4 types, as follows: │ │ │ │ │ bit - a single TRUE/FALSE or ON/OFF value │ │ │ │ │ float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits │ │ │ │ │ of dynamic range. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 206 / 1278 │ │ │ │ │ │ │ │ │ │ u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295 │ │ │ │ │ s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647 │ │ │ │ │ Function │ │ │ │ │ Real hardware components tend to act immediately on their inputs. For example, if the input │ │ │ │ │ @@ -11856,15 +11856,15 @@ │ │ │ │ │ then when it finishes that pass, the coil is ON. The fact that turning on the coil opens the contact │ │ │ │ │ feeding it is ignored until the next pass. On the next pass, the PLC sees that the contact is open, and │ │ │ │ │ de-energizes the coil. So the relay still switches rapidly between on and off, but at a rate determined │ │ │ │ │ by how often the PLC evaluates the rung. │ │ │ │ │ In HAL, the function is the code that evaluates the rung(s). In fact, the HAL-aware realtime version │ │ │ │ │ of ClassicLadder exports a function to do exactly that. Meanwhile, a thread is the thing that runs the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 207 / 1278 │ │ │ │ │ │ │ │ │ │ function at specific time intervals. Just like you can choose to have a PLC evaluate all its rungs every │ │ │ │ │ 10 ms, or every second, you can define HAL threads with different periods. │ │ │ │ │ What distinguishes one thread from another is not what the thread does - that is determined by which │ │ │ │ │ functions are connected to it. The real distinction is simply how often a thread runs. │ │ │ │ │ @@ -11881,15 +11881,15 @@ │ │ │ │ │ 5.2.1. HAL Commands │ │ │ │ │ More detailed information can be found in the man page for halcmd: run man halcmd in a terminal │ │ │ │ │ window. │ │ │ │ │ To see the HAL configuration and check the status of pins and parameters use the HAL Configuration │ │ │ │ │ window on the Machine menu in AXIS. To watch a pin status open the Watch tab and click on each │ │ │ │ │ pin you wish to watch and it will be added to the watch window. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 208 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.3: HAL Configuration Window │ │ │ │ │ │ │ │ │ │ 5.2.1.1. loadrt │ │ │ │ │ The command loadrt loads a real time HAL component. Real time component functions need to be │ │ │ │ │ @@ -11903,15 +11903,15 @@ │ │ │ │ │ The addf command adds a function to a real-time thread. If the StepConf wizard was used to create │ │ │ │ │ the configuration, two threads have been created ( ̀ ̀base-thread ̀ ̀ and ̀ ̀servo-thread ̀ ̀). │ │ │ │ │ addf adds function functname to thread threadname. Default is to add the function in the order they │ │ │ │ │ are in the file. If position is specified, adds the function to that spot in the thread. Negative position │ │ │ │ │ means position with respect to the end of the thread. For example 1 is start of thread, -1 is the end of │ │ │ │ │ the thread, -3 is third from the end. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 209 / 1278 │ │ │ │ │ │ │ │ │ │ For some functions it is important to load them in a certain order, like the parport read and write │ │ │ │ │ functions. The function name is usually the component name plus a number. In the following example │ │ │ │ │ the component or2 is loaded and show function shows the name of the or2 function │ │ │ │ │ $ halrun │ │ │ │ │ @@ -11974,15 +11974,15 @@ │ │ │ │ │ the same name as the first argument of the command. │ │ │ │ │ │ │ │ │ │ -Wn │ │ │ │ │ │ │ │ │ │ to wait for the component, which will have the given . This only applies │ │ │ │ │ if the component has a name option. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ -w │ │ │ │ │ │ │ │ │ │ to wait for the program to exit │ │ │ │ │ │ │ │ │ │ -i │ │ │ │ │ │ │ │ │ │ @@ -12017,15 +12017,15 @@ │ │ │ │ │ A pin can be connected to a signal if it obeys the following rules: │ │ │ │ │ An IN pin can always be connected to a signal. │ │ │ │ │ An IO pin can be connected unless there’s an OUT pin on the signal. │ │ │ │ │ An OUT pin can be connected only if there are no other OUT or IO pins on the signal. │ │ │ │ │ The same signal-name can be used in multiple net commands to connect additional pins, as long as │ │ │ │ │ the rules above are obeyed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 211 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.4: Signal Direction │ │ │ │ │ This example shows the signal xStep with the source being stepgen.0.out and with two readers, │ │ │ │ │ parport.0.pin-02-out and parport.0.pin-08-out. Basically the value of stepgen.0.out is sent to the signal │ │ │ │ │ xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out. │ │ │ │ │ @@ -12048,15 +12048,15 @@ │ │ │ │ │ 5.2.1.5. setp │ │ │ │ │ The command setp sets the value of a pin or parameter. The valid values will depend on the type of │ │ │ │ │ the pin or parameter. It is an error if the data types do not match. │ │ │ │ │ Some components have parameters that need to be set before use. Parameters can be set before use │ │ │ │ │ or while running as needed. You cannot use setp on a pin that is connected to a signal. │ │ │ │ │ setp Syntax and Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 212 / 1278 │ │ │ │ │ │ │ │ │ │ setp │ │ │ │ │ setp parport.0.pin-08-out TRUE │ │ │ │ │ │ │ │ │ │ 5.2.1.6. sets │ │ │ │ │ @@ -12093,15 +12093,15 @@ │ │ │ │ │ linkps parport.0.pin-02-out X-Step │ │ │ │ │ │ │ │ │ │ The linkps command has been superseded by the net command. │ │ │ │ │ the command newsig creates a new HAL signal by the name and the data type of . │ │ │ │ │ Type must be bit, s32, u32 or float. Error if all ready exists. │ │ │ │ │ newsig Syntax and Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 213 / 1278 │ │ │ │ │ │ │ │ │ │ newsig │ │ │ │ │ newsig Xstep bit │ │ │ │ │ │ │ │ │ │ More information can be found in the HAL manual or the man pages for halrun. │ │ │ │ │ @@ -12130,15 +12130,15 @@ │ │ │ │ │ you used the Stepper Config Wizard. │ │ │ │ │ custom.hal This file is loaded next and before the GUI loads. This is where you put your custom HAL │ │ │ │ │ commands that you want loaded before the GUI is loaded. │ │ │ │ │ custom_postgui.hal This file is loaded after the GUI loads. This is where you put your custom HAL │ │ │ │ │ commands that you want loaded after the GUI is loaded. Any HAL commands that use PyVCP widgets │ │ │ │ │ need to be placed here. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 214 / 1278 │ │ │ │ │ │ │ │ │ │ 5.2.4. HAL Parameter │ │ │ │ │ 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. │ │ │ │ │ .time │ │ │ │ │ @@ -12186,15 +12186,15 @@ │ │ │ │ │ │ │ │ │ │ out │ │ │ │ │ False │ │ │ │ │ False │ │ │ │ │ False │ │ │ │ │ True │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 215 / 1278 │ │ │ │ │ │ │ │ │ │ 5.2.5.2. not │ │ │ │ │ The not component is a bit inverter. │ │ │ │ │ Syntax │ │ │ │ │ not [count=n] | [names=name1[,name2...]] │ │ │ │ │ @@ -12244,15 +12244,15 @@ │ │ │ │ │ │ │ │ │ │ out │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ False │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 216 / 1278 │ │ │ │ │ │ │ │ │ │ 5.2.5.4. xor2 │ │ │ │ │ The xor2 component is a two input XOR (exclusive OR) gate. │ │ │ │ │ Syntax │ │ │ │ │ xor2[count=n] | [names=name1[,name2...]] │ │ │ │ │ @@ -12301,15 +12301,15 @@ │ │ │ │ │ 5.2.7.1. weighted_sum │ │ │ │ │ The weighted sum converts a group of bits into an integer. The conversion is the sum of the weights of │ │ │ │ │ the bits present plus any offset. It’s similar to binary coded decimal but with more options. The hold │ │ │ │ │ bit interrupts the input processing, so that the sum value no longer changes. │ │ │ │ │ weighted_sum component loading syntax │ │ │ │ │ loadrt weighted_sum wsum_sizes=size[,size,...] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 217 / 1278 │ │ │ │ │ │ │ │ │ │ Creates groups of ̀weighted_sum ̀s, each with the given number of input bits (size). │ │ │ │ │ To update the weighted_sum, the process_wsums must be attached to a thread. │ │ │ │ │ add process_wsums function │ │ │ │ │ addf process_wsums servo-thread │ │ │ │ │ @@ -12390,15 +12390,15 @@ │ │ │ │ │ It can be a maintenance problem to keep track of the components and their names since when you │ │ │ │ │ add (or remove) a component, you must find and update the single loadrt directive applicable to the │ │ │ │ │ component. │ │ │ │ │ TWOPASS processing is enabled by including an INI file parameter in the [HAL] section: │ │ │ │ │ [HAL] │ │ │ │ │ TWOPASS = anystring │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 218 / 1278 │ │ │ │ │ │ │ │ │ │ Where ”anystring” can be any non-null string. With this setting, you can have multiple specifications │ │ │ │ │ like: │ │ │ │ │ loadrt and2 names=aa │ │ │ │ │ ... │ │ │ │ │ @@ -12440,15 +12440,15 @@ │ │ │ │ │ Many comps supplied with the distribution are created with the halcompile utility and support the │ │ │ │ │ names= option. These include the common logic components that are the glue of many LinuxCNC │ │ │ │ │ configurations. │ │ │ │ │ User-created comps that use the halcompile utility automatically support the names= option as well. │ │ │ │ │ In addition to comps generated with the halcompile utility, numerous other comps support the names=option. Comps that support names= option include: at_pid, encoder, encoder_ratio, pid, siggen, │ │ │ │ │ and sim_encoder. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 219 / 1278 │ │ │ │ │ │ │ │ │ │ Two-step processing occurs before the GUI is loaded. When using a [HAL]POSTGUI_HALFILE, it is │ │ │ │ │ convenient to place all the [HAL]POSTGUI_HALFILE loadrt declarations for the necessary components in a preloaded HAL file. │ │ │ │ │ Example of a HAL section when using a POSTGUI_HALFILE │ │ │ │ │ [HAL] │ │ │ │ │ @@ -12489,15 +12489,15 @@ │ │ │ │ │ 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. │ │ │ │ │ Ordinarily, the loadrt ordering of realtime components is not critical, but loadrt ordering for special │ │ │ │ │ components can be enforced by placing the such loadrt directives in an excluded file. │ │ │ │ │ nota │ │ │ │ │ While the order of loadrt directives is not usually critical, ordering of addf directives is often very │ │ │ │ │ important for proper operation of servo loop components. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 220 / 1278 │ │ │ │ │ │ │ │ │ │ Excluded .hal file example │ │ │ │ │ $ cat twopass_excluded.hal │ │ │ │ │ # The following magic comment causes this file to │ │ │ │ │ # be excluded from twopass processing: │ │ │ │ │ @@ -12531,15 +12531,15 @@ │ │ │ │ │ 5.4.2. Halcmd │ │ │ │ │ halcmd is a command line tool for manipulating HAL. A more complete man page exists for halcmd │ │ │ │ │ and installed together with LinuxCNC, from source or from a package. If LinuxCNC has been compiled │ │ │ │ │ as run-in-place, the man page is not installed but is accessible in the LinuxCNC main directory with │ │ │ │ │ the following command: │ │ │ │ │ $ man -M docs/man halcmd │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 221 / 1278 │ │ │ │ │ │ │ │ │ │ 5.4.2.1. Notation │ │ │ │ │ For this tutorial, commands for the operating system are typically shown without the prompt provided │ │ │ │ │ by the UNIX shell, i.e typically a dollar sign ($) or a hash/double cross (#). When communicating │ │ │ │ │ directly with the HAL through halcmd or halrun, the prompts are shown in the examples. The terminal │ │ │ │ │ @@ -12580,15 +12580,15 @@ │ │ │ │ │ a RIP 1 , invoke the rip-environment script to prepare your shell. In that case, all you need to do is load │ │ │ │ │ the required RTOS and RTAPI modules into memory. Just run the following command from a terminal │ │ │ │ │ window: │ │ │ │ │ Loading HAL │ │ │ │ │ 1 Run In Place, when the source files have been downloaded to a user directory and are compiled and executed directly from │ │ │ │ │ there. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 222 / 1278 │ │ │ │ │ │ │ │ │ │ cd linuxcnc │ │ │ │ │ halrun │ │ │ │ │ halcmd: │ │ │ │ │ │ │ │ │ │ @@ -12667,15 +12667,15 @@ │ │ │ │ │ siggen.0.frequency │ │ │ │ │ siggen.0.offset │ │ │ │ │ siggen.0.sawtooth │ │ │ │ │ siggen.0.sine │ │ │ │ │ siggen.0.square │ │ │ │ │ siggen.0.triangle │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 223 / 1278 │ │ │ │ │ │ │ │ │ │ This command displays all of the pins in the current HAL. A complex system could have dozens or │ │ │ │ │ hundreds of pins. But right now there are only nine pins. Of these pins eight are floating point and │ │ │ │ │ one is bit (boolean). Six carry data out of the siggen component and three are used to transfer settings │ │ │ │ │ into the component. Since we have not yet executed the code contained within the component, some │ │ │ │ │ @@ -12751,15 +12751,15 @@ │ │ │ │ │ │ │ │ │ │ Time, Max-Time ) │ │ │ │ │ 0, │ │ │ │ │ 0 ) │ │ │ │ │ │ │ │ │ │ 2 CodeAddr and Arg fields were used during development and should probably disappear. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 224 / 1278 │ │ │ │ │ │ │ │ │ │ It did. The period is not exactly 1,000,000 ns because of hardware limitations, but we have a thread │ │ │ │ │ that runs at approximately the correct rate, and which can handle floating point functions. The next │ │ │ │ │ step is to connect the function to the thread: │ │ │ │ │ Add Function │ │ │ │ │ @@ -12867,15 +12867,15 @@ │ │ │ │ │ 3 float OUT │ │ │ │ │ 3 float OUT │ │ │ │ │ │ │ │ │ │ We did two show pin commands in quick succession, and you can see that the outputs are no longer │ │ │ │ │ zero. The sine, cosine, sawtooth, and triangle outputs are changing constantly. The square output is │ │ │ │ │ also working, however it simply switches from +1.0 to -1.0 every cycle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 225 / 1278 │ │ │ │ │ │ │ │ │ │ 5.4.3.4. Changing Parameters │ │ │ │ │ The real power of HAL is that you can change things. For example, we can use the setp command to │ │ │ │ │ set the value of a parameter. Let’s change the amplitude of the signal generator from 1.0 to 5.0: │ │ │ │ │ Set Pin │ │ │ │ │ @@ -12959,15 +12959,15 @@ │ │ │ │ │ # realtime thread/function links │ │ │ │ │ addf siggen.0.update test-thread │ │ │ │ │ │ │ │ │ │ The output of the save command is a sequence of HAL commands. If you start with an empty HAL │ │ │ │ │ and run all these commands, you will get the configuration that existed when the save command was │ │ │ │ │ issued. To save these commands for later use, we simply redirect the output to a file: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 226 / 1278 │ │ │ │ │ │ │ │ │ │ Save configuration to a file with halcmd │ │ │ │ │ halcmd: save all saved.hal │ │ │ │ │ │ │ │ │ │ 5.4.3.6. Exiting halrun │ │ │ │ │ @@ -13002,15 +13002,15 @@ │ │ │ │ │ halmeter │ │ │ │ │ │ │ │ │ │ Two windows will appear. The selection window is the largest and includes three tabs: │ │ │ │ │ One lists all the pins currently defined in HAL, │ │ │ │ │ one lists all the signals, │ │ │ │ │ one lists all the parameters. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 227 / 1278 │ │ │ │ │ │ │ │ │ │ Click on a tab, then click on one of the items to select it. The small window will show the name and │ │ │ │ │ value of the selected item. The display is updated approximately 10 times per second. To free screen │ │ │ │ │ space, the selection window can be closed with the Close button. On the little window, hidden under │ │ │ │ │ the selection window at program launch, the Select button, re-opens the selection window and the │ │ │ │ │ @@ -13036,27 +13036,27 @@ │ │ │ │ │ │ │ │ │ │ At this point we have the siggen component loaded and running. It’s time to start halmeter. │ │ │ │ │ Starting Halmeter │ │ │ │ │ halcmd: loadusr halmeter │ │ │ │ │ │ │ │ │ │ The first window you will see is the ”Select Item to Probe” window. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 228 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.5: Halmeter Select Window │ │ │ │ │ This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one │ │ │ │ │ displays all the signals, and the third displays all the parameters. We would like to look at the pin │ │ │ │ │ siggen.0.cosine first, so click on it then click the ”Close” button. The probe selection dialog will │ │ │ │ │ close, and the meter looks something like the following figure. │ │ │ │ │ │ │ │ │ │ Figura 5.6: Halmeter Window │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 229 / 1278 │ │ │ │ │ │ │ │ │ │ To change what the meter displays press the ”Select” button which brings back the ”Select Item to │ │ │ │ │ Probe” window. │ │ │ │ │ You should see the value changing as siggen generates its cosine wave. Halmeter refreshes its display │ │ │ │ │ about 5 times per second. │ │ │ │ │ @@ -13130,15 +13130,15 @@ │ │ │ │ │ siggen.0.sawtooth │ │ │ │ │ siggen.0.sine │ │ │ │ │ siggen.0.square │ │ │ │ │ siggen.0.triangle │ │ │ │ │ stepgen.0.counts │ │ │ │ │ stepgen.0.dir │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ 3 │ │ │ │ │ @@ -13304,15 +13304,15 @@ │ │ │ │ │ input of the first step pulse generator. The first step is to connect the signal to the signal generator │ │ │ │ │ output. To connect a signal to a pin we use the net command. │ │ │ │ │ net command │ │ │ │ │ halcmd: net X-vel <= siggen.0.cosine │ │ │ │ │ │ │ │ │ │ To see the effect of the net command, we show the signals again. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 231 / 1278 │ │ │ │ │ │ │ │ │ │ halcmd: show sig │ │ │ │ │ Signals: │ │ │ │ │ Type │ │ │ │ │ float │ │ │ │ │ @@ -13391,15 +13391,15 @@ │ │ │ │ │ Every time it is executed, it calculates the values of the sine, cosine, triangle, and square outputs. To │ │ │ │ │ make smooth signals, it needs to run at specific intervals. │ │ │ │ │ The other three functions are related to the step pulse generators. │ │ │ │ │ The first one, stepgen.capture_position, is used for position feedback. It captures the value of an │ │ │ │ │ internal counter that counts the step pulses as they are generated. Assuming no missed steps, this │ │ │ │ │ counter indicates the position of the motor. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 232 / 1278 │ │ │ │ │ │ │ │ │ │ The main function for the step pulse generator is stepgen.make_pulses. Every time make_pulses runs │ │ │ │ │ it decides if it is time to take a step, and if so sets the outputs accordingly. For smooth step pulses, it │ │ │ │ │ should run as frequently as possible. Because it needs to run so fast, make_pulses is highly optimized │ │ │ │ │ and performs only a few calculations. Unlike the others, it does not need floating point math. │ │ │ │ │ @@ -13474,15 +13474,15 @@ │ │ │ │ │ pulse generator isn’t quite right. By default, it generates an output frequency of 1 step per second │ │ │ │ │ with an input of 1.0. It is unlikely that one step per second will give us one inch per second of table │ │ │ │ │ movement. Let’s assume instead that we have a 5 turn per inch leadscrew, connected to a 200 step │ │ │ │ │ per rev stepper with 10x microstepping. So it takes 2000 steps for one revolution of the screw, and │ │ │ │ │ 5 revolutions to travel one inch. That means the overall scaling is 10000 steps per inch. We need │ │ │ │ │ to multiply the velocity input to the step pulse generator by 10000 to get the proper output. That is │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 233 / 1278 │ │ │ │ │ │ │ │ │ │ exactly what the parameter stepgen.n.velocity-scale is for. In this case, both the X and Y axis have │ │ │ │ │ the same scaling, so we set the scaling parameters for both to 10000. │ │ │ │ │ halcmd: setp stepgen.0.position-scale 10000 │ │ │ │ │ halcmd: setp stepgen.1.position-scale 10000 │ │ │ │ │ @@ -13517,24 +13517,24 @@ │ │ │ │ │ halcmd loadusr halscope │ │ │ │ │ │ │ │ │ │ If LinuxCNC is not running or the autosave.halscope file does not match the pins available in the │ │ │ │ │ current running LinuxCNC the scope GUI window will open, immediately followed by a Realtime │ │ │ │ │ function not linked dialog that looks like the following figure. To change the sample rate left click on │ │ │ │ │ the samples box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 234 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.7: Realtime function not linked dialog │ │ │ │ │ This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once │ │ │ │ │ per millisecond, so click on the 989 µs thread slow and leave the multiplier at 1. We will also leave the │ │ │ │ │ record length at 4000 samples, so that we can use up to four channels at one time. When you select │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 235 / 1278 │ │ │ │ │ │ │ │ │ │ a thread and then click OK, the dialog disappears, and the scope window looks something like the │ │ │ │ │ following figure. │ │ │ │ │ │ │ │ │ │ Figura 5.8: Initial scope window │ │ │ │ │ @@ -13546,33 +13546,33 @@ │ │ │ │ │ length - more channels means shorter records, since the memory available for the record is fixed at │ │ │ │ │ approximately 16,000 samples. │ │ │ │ │ The channel buttons run across the bottom of the halscope screen. Click button 1, and you will see the │ │ │ │ │ Select Channel Source dialog as shown in the following figure. This dialog is very similar to the one │ │ │ │ │ used by Halmeter. We would like to look at the signals we defined earlier, so we click on the Signals │ │ │ │ │ tab, and the dialog displays all of the signals in the HAL (only two for this example). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 236 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.9: Select Channel Source │ │ │ │ │ To choose a signal, just click on it. In this case, we want channel 1 to display the signal X-vel. Click on │ │ │ │ │ the Signals tab then click on X-vel and the dialog closes and the channel is now selected. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 237 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.10: Select Signal │ │ │ │ │ The channel 1 button is pressed in, and channel number 1 and the name X-vel appear below the row │ │ │ │ │ of buttons. That display always indicates the selected channel - you can have many channels on the │ │ │ │ │ screen, but the selected one is highlighted, and the various controls like vertical position and scale │ │ │ │ │ always work on the selected one. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 238 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.11: Halscope │ │ │ │ │ To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then │ │ │ │ │ click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals │ │ │ │ │ connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and │ │ │ │ │ @@ -13583,15 +13583,15 @@ │ │ │ │ │ a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope about │ │ │ │ │ 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen will show │ │ │ │ │ the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven’t configured │ │ │ │ │ one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger section at the │ │ │ │ │ top right. You should see the remainder of the buffer fill, then the screen will display the captured │ │ │ │ │ waveforms. The result will look something like the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 239 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.12: Captured Waveforms │ │ │ │ │ The Selected Channel box at the bottom tells you that the purple trace is the currently selected one, │ │ │ │ │ channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1 │ │ │ │ │ through 3 to highlight the other three traces. │ │ │ │ │ @@ -13599,29 +13599,29 @@ │ │ │ │ │ The traces are rather hard to distinguish since all four are on top of each other. To fix this, we use │ │ │ │ │ the Vertical controls in the box to the right of the screen. These controls act on the currently selected │ │ │ │ │ channel. When adjusting the gain, notice that it covers a huge range - unlike a real scope, this one │ │ │ │ │ can display signals ranging from very tiny (pico-units) to very large (Tera-units). The position control │ │ │ │ │ moves the displayed trace up and down over the height of the screen only. For larger adjustments the │ │ │ │ │ offset button should be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 240 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.13: Vertical Adjustment │ │ │ │ │ The large Selected Channel button at the bottom indicates that channel 1 is currently selected channel │ │ │ │ │ and that it matches the X-vel signal. Try clicking on the other channels to put their traces in evidence │ │ │ │ │ and to be able to move them with the Pos cursor. │ │ │ │ │ 5.4.6.4. Triggering │ │ │ │ │ Using the Force button is a rather unsatisfying way to trigger the scope. To set up real triggering, click │ │ │ │ │ on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is simply a │ │ │ │ │ list of all the probes that are currently connected. Select a probe to use for triggering by clicking on │ │ │ │ │ it. For this example we will use channel 3, the triangle wave as shown in the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 241 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.14: Trigger Source Dialog │ │ │ │ │ After setting the trigger source, you can adjust the trigger level and trigger position using the sliders │ │ │ │ │ in the Trigger box along the right edge. The level can be adjusted from the top to the bottom of the │ │ │ │ │ screen, and is displayed below the sliders. The position is the location of the trigger point within │ │ │ │ │ @@ -13631,15 +13631,15 @@ │ │ │ │ │ trigger point is visible as a vertical line in the progress box above the screen. The trigger polarity can │ │ │ │ │ be changed by clicking the button just below the trigger level display. It will then become descendant. │ │ │ │ │ Note that changing the trigger position stops the scope once the position has been adjusted, you │ │ │ │ │ relaunch the scope by clicking on the Normal button of Run mode the group. │ │ │ │ │ Now that we have adjusted the vertical controls and triggering, the scope display looks something │ │ │ │ │ like the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 242 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.15: Waveforms with Triggering │ │ │ │ │ │ │ │ │ │ 5.4.6.5. Horizontal Adjustments │ │ │ │ │ To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand │ │ │ │ │ @@ -13648,15 +13648,15 @@ │ │ │ │ │ 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 µs long, sampling at 1 kHz isn’t fast enough. To │ │ │ │ │ change the sample rate, click on the button that displays the number of samples and sample rate to │ │ │ │ │ bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 µs thread, │ │ │ │ │ fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth │ │ │ │ │ of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 243 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.16: Sample Rate Dialog │ │ │ │ │ │ │ │ │ │ 5.4.6.6. More Channels │ │ │ │ │ Now let’s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at │ │ │ │ │ @@ -13665,15 +13665,15 @@ │ │ │ │ │ do the same for channel 4. Even though the channels are turned off, they still remember what they are │ │ │ │ │ connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels, │ │ │ │ │ select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then │ │ │ │ │ click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You │ │ │ │ │ should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the │ │ │ │ │ direction pin changes state and the step pulses speed up again. You might want toincrease the gain on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 244 / 1278 │ │ │ │ │ │ │ │ │ │ channel 1 to about 20 milli per division to better see the change in the velocity command. The result │ │ │ │ │ should look like the following figure. │ │ │ │ │ │ │ │ │ │ Figura 5.17: Step Pulses │ │ │ │ │ @@ -13685,15 +13685,15 @@ │ │ │ │ │ If the scope_rt component was not already loaded, halscope will load it and request 80000 total samples, so that when sampling 4 channels at a time there will be 20000 samples per channel. (If scope_rt │ │ │ │ │ was already loaded, the numeric argument to halscope will have no effect). │ │ │ │ │ │ │ │ │ │ 5.5. HAL Examples │ │ │ │ │ All of these examples assume you are starting with a stepconf based configuration and have two │ │ │ │ │ threads base-thread and servo-thread. The stepconf wizard will create an empty custom.hal and a │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 245 / 1278 │ │ │ │ │ │ │ │ │ │ custom_postgui.hal file. The custom.hal file will be loaded after the configuration HAL file and the │ │ │ │ │ custom_postgui.hal file is loaded after the GUI has been loaded. │ │ │ │ │ │ │ │ │ │ 5.5.1. Connecting Two Outputs │ │ │ │ │ @@ -13753,15 +13753,15 @@ │ │ │ │ │ input. The output from or2 goes to the input of the led. │ │ │ │ │ │ │ │ │ │ 5.5.2. Manual Toolchange │ │ │ │ │ In this example it is assumed that you’re rolling your own configuration and wish to add the HAL Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable tools │ │ │ │ │ and you store the offsets in the tool table. If you need to touch off for each tool change then it is best │ │ │ │ │ just to split up your G-code. To use the HAL Manual Toolchange window you basically have to load the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 246 / 1278 │ │ │ │ │ │ │ │ │ │ hal_manualtoolchange component then send the iocontrol tool change to the hal_manualtoolchange │ │ │ │ │ change and send the hal_manualtoolchange changed back to the iocontrol tool changed. A pin is provided for an external input to indicate the tool change is complete. │ │ │ │ │ This is an example of manual toolchange with the HAL Manual Toolchange component: │ │ │ │ │ loadusr -W hal_manualtoolchange │ │ │ │ │ @@ -13806,15 +13806,15 @@ │ │ │ │ │ The xpos-cmd sends the commanded position to the ddt.0.in. The ddt computes the derivative of the │ │ │ │ │ change of the input. │ │ │ │ │ The ddt2.0.out is multiplied by 60 to give IPM. │ │ │ │ │ The mult2.0.out is sent to the abs to get the absolute value. │ │ │ │ │ The following figure shows the result when the X axis is moving at 15 IPM in the minus direction. │ │ │ │ │ Notice that we can get the absolute value from either the abs.0.out pin or the X-IPM signal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 247 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.18: HAL: Velocity Example │ │ │ │ │ │ │ │ │ │ 5.5.4. Soft Start Details │ │ │ │ │ This example shows how the HAL components lowpass, limit2 or limit3 can be used to limit how fast │ │ │ │ │ @@ -13827,15 +13827,15 @@ │ │ │ │ │ limit2 limits the range and first derivative of a signal. │ │ │ │ │ limit3 limits the range, first and second derivatives of a signal. │ │ │ │ │ lowpass uses an exponentially-weighted moving average to track an input signal. │ │ │ │ │ To find more information on these HAL components check the man pages. │ │ │ │ │ Place the following in a text file called softstart.hal. If you’re not familiar with Linux place the file in │ │ │ │ │ your home directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 248 / 1278 │ │ │ │ │ │ │ │ │ │ loadrt threads period1=1000000 name1=thread │ │ │ │ │ loadrt siggen │ │ │ │ │ loadrt lowpass │ │ │ │ │ loadrt limit2 │ │ │ │ │ @@ -13865,15 +13865,15 @@ │ │ │ │ │ Next to set up a trigger signal click on the Source None button and select square. The button will │ │ │ │ │ change to Source Chan 1. │ │ │ │ │ Next click on Single in the Run Mode radio buttons box. This will start a run and when it finishes you │ │ │ │ │ will see your traces. │ │ │ │ │ To separate the signals so you can see them better click on a channel then use the Pos slider in the │ │ │ │ │ Vertical box to set the positions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 249 / 1278 │ │ │ │ │ │ │ │ │ │ To see the effect of changing the set point values of any of the components you can change them in │ │ │ │ │ the terminal window. To see what different gain settings do for lowpass just type the following in the │ │ │ │ │ terminal window and try different settings. │ │ │ │ │ setp lowpass.0.gain *.01 │ │ │ │ │ @@ -13887,15 +13887,15 @@ │ │ │ │ │ 5.5.5. Stand Alone HAL │ │ │ │ │ In some cases you might want to run a GladeVCP screen with just HAL. For example say you had a │ │ │ │ │ stepper driven device that all you need is to run a stepper motor. A simple Start/Stop interface is all │ │ │ │ │ you need for your application so no need to load up and configure a full blown CNC application. │ │ │ │ │ In the following example we have created a simple GladeVCP panel with one stepper. │ │ │ │ │ Basic Syntax │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 250 / 1278 │ │ │ │ │ │ │ │ │ │ # load the winder.glade GUI and name it winder │ │ │ │ │ loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade │ │ │ │ │ # load realtime components │ │ │ │ │ loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000 │ │ │ │ │ @@ -13934,15 +13934,15 @@ │ │ │ │ │ default is 4 each. The number of Spindles is set with num_spindles, default is 1. │ │ │ │ │ Pin and parameter names starting with axis.L and joint.N are read and updated by the motion-controller │ │ │ │ │ function. │ │ │ │ │ Motion is loaded with the motmod command. A kins should be loaded before motion. │ │ │ │ │ loadrt motmod base_period_nsec=[’period’] servo_period_nsec=[’period’] │ │ │ │ │ traj_period_nsec=[’period’] num_joints=[’0-9’] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 251 / 1278 │ │ │ │ │ │ │ │ │ │ num_dio=[’1-64’] num_aio=[’1-16’] unlock_joints_mask=[’0xNN’] │ │ │ │ │ num_spindles=[’1-8’] │ │ │ │ │ │ │ │ │ │ base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the │ │ │ │ │ @@ -13981,15 +13981,15 @@ │ │ │ │ │ motion.adaptive-feed - (float, in) When adaptive feed is enabled with M52 P1 , the commanded │ │ │ │ │ velocity is multiplied by this value. This effect is multiplicative with the NML-level feed override │ │ │ │ │ value and motion.feed-hold. As of version 2.9 of LinuxCNC it is possible to use a negative adaptive │ │ │ │ │ feed value to run the G-code path in reverse. │ │ │ │ │ motion.analog-in-00 - (float, in) These pins (00, 01, 02, 03 or more if configured) are controlled by │ │ │ │ │ M66. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 252 / 1278 │ │ │ │ │ │ │ │ │ │ motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled │ │ │ │ │ by M67 or M68. │ │ │ │ │ motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a │ │ │ │ │ soft limit │ │ │ │ │ @@ -14028,15 +14028,15 @@ │ │ │ │ │ acceleration limits. The value on this pin does not reflect the feed override or any other adjustments. │ │ │ │ │ motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated │ │ │ │ │ mode │ │ │ │ │ motion.tooloffset.x … motion.tooloffset.w - (float, out, one per axis) shows the tool offset in effect; │ │ │ │ │ it could come from the tool table (G43 active), or it could come from the G-code (G43.1 active) │ │ │ │ │ motion.on-soft-limit - (bit, out) TRUE when the machine is on a soft limit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 253 / 1278 │ │ │ │ │ │ │ │ │ │ motion.probe-input - (bit, in) G38.n uses the value on this pin to determine when the probe has │ │ │ │ │ made contact. TRUE for probe contact closed (touching), FALSE for probe contact open. │ │ │ │ │ motion.program-line - (s32, out) The current program line while executing. Zero if not running or │ │ │ │ │ between lines while single stepping. │ │ │ │ │ @@ -14066,15 +14066,15 @@ │ │ │ │ │ to determine whether the realtime motion controller is meeting its timing constraints │ │ │ │ │ motion.servo.last-period-ns - (float, RO) │ │ │ │ │ 5.6.1.4. Functions │ │ │ │ │ Generally, these functions are both added to the servo-thread in the order shown. │ │ │ │ │ motion-command-handler - Processes motion commands coming from user space │ │ │ │ │ motion-controller - Runs the LinuxCNC motion controller │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 254 / 1278 │ │ │ │ │ │ │ │ │ │ 5.6.2. Spindle │ │ │ │ │ LinuxCNC can control upto eight spindles. Motion will produce the following pins: The N (integer │ │ │ │ │ between 0 and 7) substitutes the spindle number. │ │ │ │ │ 5.6.2.1. Pins │ │ │ │ │ @@ -14112,15 +14112,15 @@ │ │ │ │ │ spindle.N.orient-angle - (float,out) Desired spindle orientation for M19. Value of the M19 R word │ │ │ │ │ parameter plus the value of the [RS274NGC]ORIENT_OFFSET INI parameter. │ │ │ │ │ spindle.N.orient-mode - (s32,out) Desired spindle rotation mode M19. Default 0. │ │ │ │ │ spindle.N.orient - (out,bit) Indicates start of spindle orient cycle. Set by M19. Cleared by any of M3, │ │ │ │ │ M4, or M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails with │ │ │ │ │ an error message. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 255 / 1278 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ spindle-locked pin is asserted. Also, the spindle-brake pin is asserted. │ │ │ │ │ spindle.N.orient-fault - (s32, in) Fault code input for orient cycle. Any value other than zero will │ │ │ │ │ cause the orient cycle to abort. │ │ │ │ │ @@ -14158,15 +14158,15 @@ │ │ │ │ │ See the motion man page motion(9) for details on the pins and parameters. │ │ │ │ │ │ │ │ │ │ 5.6.4. iocontrol │ │ │ │ │ iocontrol - accepts NML I/O commands, interacts with HAL in userspace. │ │ │ │ │ The signals are turned on and off in userspace - if you have strict timing requirements or simply need │ │ │ │ │ more i/o, consider using the realtime synchronized i/o provided by motion instead. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 256 / 1278 │ │ │ │ │ │ │ │ │ │ 5.6.4.1. Pins │ │ │ │ │ iocontrol.0.coolant-flood - (bit, out) TRUE when flood coolant is requested. │ │ │ │ │ iocontrol.0.coolant-mist - (bit, out) TRUE when mist coolant is requested. │ │ │ │ │ iocontrol.0.emc-enable-in - (bit, in) Should be driven FALSE when an external E-Stop condition │ │ │ │ │ @@ -14196,15 +14196,15 @@ │ │ │ │ │ ini.N.home - (float, in) [JOINT_N]HOME │ │ │ │ │ ini.N.home_offset - (float, in) [JOINT_N]HOME_OFFSET │ │ │ │ │ ini.N.home_offset - (s32, in) [JOINT_N]HOME_SEQUENCE │ │ │ │ │ ini.L.min_limit - (float, in) [AXIS_L]MIN_LIMIT │ │ │ │ │ ini.L.max_limit - (float, in) [AXIS_L]MAX_LIMIT │ │ │ │ │ ini.L.max_velocity - (float, in) [AXIS_L]MAX_VELOCITY │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 257 / 1278 │ │ │ │ │ │ │ │ │ │ ini.L.max_acceleration - (float, in) [AXIS_L]MAX_ACCELERATION │ │ │ │ │ nota │ │ │ │ │ The per-axis min_limit and max_limit pins are honored continuously after homing. The per-axis ferror │ │ │ │ │ and min_ferror pins are honored when the machine is on and not in position. The per-axis max_velocity │ │ │ │ │ @@ -14235,15 +14235,15 @@ │ │ │ │ │ for realtime components) │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ See also the Man Pages section of the docs main page or the directory listing. │ │ │ │ │ │ │ │ │ │ ←- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 258 / 1278 │ │ │ │ │ │ │ │ │ │ 5.7.1.1. User Interfaces (Userspace) │ │ │ │ │ axis │ │ │ │ │ axis-remote │ │ │ │ │ gmoccapy │ │ │ │ │ @@ -14324,15 +14324,15 @@ │ │ │ │ │ 5.7.1.3. Hardware Drivers │ │ │ │ │ elbpcom │ │ │ │ │ gs2_vfd │ │ │ │ │ │ │ │ │ │ Communicate with Mesa ethernet cards │ │ │ │ │ HAL userspace component for Automation Direct GS2 VFDs │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ hal_parport │ │ │ │ │ hy_gt_vfd │ │ │ │ │ hy_vfd │ │ │ │ │ mb2hal │ │ │ │ │ mitsub_vfd │ │ │ │ │ monitorxhc-hb04 │ │ │ │ │ @@ -14414,15 +14414,15 @@ │ │ │ │ │ pluto_servo │ │ │ │ │ Pluto-P driver and firmware for the parallel port FPGA, for servos │ │ │ │ │ pluto_step │ │ │ │ │ Pluto-P driver for the parallel port FPGA, for steppers │ │ │ │ │ serport │ │ │ │ │ Hardware driver for the digital I/O bits of the 8250 and 16550 serial port │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ sserial │ │ │ │ │ thc │ │ │ │ │ │ │ │ │ │ 260 / 1278 │ │ │ │ │ │ │ │ │ │ hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics │ │ │ │ │ @@ -14504,15 +14504,15 @@ │ │ │ │ │ 8-bit binary match detector │ │ │ │ │ Single-, double-, triple-, and quadruple-click detector │ │ │ │ │ Toggles between a specified number of output bits │ │ │ │ │ Inverter │ │ │ │ │ One-shot pulse generator │ │ │ │ │ Two-input OR gate │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 261 / 1278 │ │ │ │ │ │ │ │ │ │ select8 │ │ │ │ │ tof │ │ │ │ │ toggle │ │ │ │ │ toggle2nist │ │ │ │ │ @@ -14607,15 +14607,15 @@ │ │ │ │ │ updown │ │ │ │ │ Counts up or down, with optional limits and wraparound behavior. │ │ │ │ │ wcomp │ │ │ │ │ Window comparator. │ │ │ │ │ weighted_sumConvert a group of bits to an integer. │ │ │ │ │ xhc_hb04_util xhc-hb04 convenience utility │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 262 / 1278 │ │ │ │ │ │ │ │ │ │ bin2gray │ │ │ │ │ Converts a number to the gray-code representation │ │ │ │ │ bitslice │ │ │ │ │ Converts an unsigned-32 input into individual bits │ │ │ │ │ @@ -14683,15 +14683,15 @@ │ │ │ │ │ │ │ │ │ │ Proportional/integral/derivative controller with auto tuning. │ │ │ │ │ │ │ │ │ │ 3 When the input is a position, this means that the position is limited. │ │ │ │ │ 4 When the input is a position, this means that position and velocity are limited. │ │ │ │ │ 5 When the input is a position, this means that the position, velocity, and acceleration are limited. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ bldc │ │ │ │ │ clarke2 │ │ │ │ │ clarke3 │ │ │ │ │ clarkeinv │ │ │ │ │ encoder │ │ │ │ │ pid │ │ │ │ │ @@ -14762,15 +14762,15 @@ │ │ │ │ │ hal_get_lock.3hal │ │ │ │ │ hal_init.3hal │ │ │ │ │ hal_link.3hal │ │ │ │ │ hal_malloc.3hal │ │ │ │ │ hal_param_bit_new.3hal │ │ │ │ │ hal_param_bit_newf.3hal │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ hal_param_float_new.3hal │ │ │ │ │ hal_param_float_newf.3hal │ │ │ │ │ hal_param_new.3hal │ │ │ │ │ hal_param_s32_new.3hal │ │ │ │ │ hal_param_s32_newf.3hal │ │ │ │ │ hal_param_u32_new.3hal │ │ │ │ │ @@ -14821,15 +14821,15 @@ │ │ │ │ │ rtapi_get_time.3rtapi │ │ │ │ │ rtapi_inb.3rtapi │ │ │ │ │ rtapi_init.3rtapi │ │ │ │ │ rtapi_module_param.3rtapi │ │ │ │ │ │ │ │ │ │ 264 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 265 / 1278 │ │ │ │ │ │ │ │ │ │ RTAPI_MP_ARRAY_INT.3rtapi │ │ │ │ │ RTAPI_MP_ARRAY_LONG.3rtapi │ │ │ │ │ RTAPI_MP_ARRAY_STRING.3rtapi │ │ │ │ │ RTAPI_MP_INT.3rtapi │ │ │ │ │ @@ -14867,21 +14867,21 @@ │ │ │ │ │ limits. It is a realtime component only, and depending on CPU speed, etc, is capable of maximum step │ │ │ │ │ rates of 10 kHz to perhaps 50 kHz. The step pulse generator block diagram shows three block diagrams, each is a single step pulse generator. The first diagram is for step type 0, (step and direction). │ │ │ │ │ The second is for step type 1 (up/down, or pseudo-PWM), and the third is for step types 2 through │ │ │ │ │ 14 (various stepping patterns). The first two diagrams show position mode control, and the third one │ │ │ │ │ shows velocity mode. Control mode and step type are set independently, and any combination can be │ │ │ │ │ selected. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 5.19: Step Pulse Generator Block Diagram position mode │ │ │ │ │ │ │ │ │ │ 266 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 267 / 1278 │ │ │ │ │ │ │ │ │ │ Loading stepgen component │ │ │ │ │ halcmd: loadrt stepgen step_type= [ctrl_type=] │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -14916,15 +14916,15 @@ │ │ │ │ │ (bit) stepgen..down - DOWN pseudo-PWM output (step type 1 only). │ │ │ │ │ (bit) stepgen..phase-A - Phase A output (step types 2-14 only). │ │ │ │ │ (bit) stepgen..phase-B - Phase B output (step types 2-14 only). │ │ │ │ │ (bit) stepgen..phase-C - Phase C output (step types 3-14 only). │ │ │ │ │ (bit) stepgen..phase-D - Phase D output (step types 5-14 only). │ │ │ │ │ (bit) stepgen..phase-E - Phase E output (step types 11-14 only). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 268 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.1.2. Parameters │ │ │ │ │ (float) stepgen..position-scale - Steps per position unit. This parameter is used for both │ │ │ │ │ output and feedback. │ │ │ │ │ (float) stepgen..maxvel - Maximum velocity, in position units per second. If 0.0, has no effect. │ │ │ │ │ @@ -14962,15 +14962,15 @@ │ │ │ │ │ takes effect the first time the code runs. Since one step requires steplen ns high and stepspace ns low, │ │ │ │ │ the maximum frequency is 1,000,000,000 divided by (steplen+stepspace). If maxfreq is set higher │ │ │ │ │ than that limit, it will be lowered automatically. If maxfreq is zero, it will remain zero, but the output │ │ │ │ │ frequency will still be limited. │ │ │ │ │ When using the parallel port driver the step frequency can be doubled using the parport reset function │ │ │ │ │ together with stepgen’s doublefreq setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 269 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.20: Step and Direction Timing │ │ │ │ │ Step Type 1 Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending │ │ │ │ │ on the direction of travel. Each pulse is steplen ns long, and the pulses are separated by at least │ │ │ │ │ stepspace ns. The maximum frequency is the same as for step type 0. If maxfreq is set higher than │ │ │ │ │ @@ -14982,33 +14982,33 @@ │ │ │ │ │ │ │ │ │ │ Step Type 2 - 14 Step types 2 through 14 are state based, and have from two to five outputs. On │ │ │ │ │ each step, a state counter is incremented or decremented. The Two-and-Three-Phase, Four-Phase, │ │ │ │ │ and Five-Phase show the output patterns as a function of the state counter. The maximum frequency │ │ │ │ │ is 1,000,000,000 divided by steplen, and as in the other modes, maxfreq will be lowered if it is above │ │ │ │ │ the limit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 5.21: Two-and-Three-Phase Step Types │ │ │ │ │ │ │ │ │ │ 270 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 5.22: Four-Phase Step Types │ │ │ │ │ │ │ │ │ │ 271 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 5.23: Five-Phase Step Types │ │ │ │ │ │ │ │ │ │ 272 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 273 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.1.4. Functions │ │ │ │ │ The component exports three functions. Each function acts on all of the step pulse generators - running │ │ │ │ │ different generators in different threads is not supported. │ │ │ │ │ (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point). │ │ │ │ │ @@ -15042,15 +15042,15 @@ │ │ │ │ │ use a type 1 output (PWM and direction) and the third will use a type 2 output (UP and DOWN). There │ │ │ │ │ is no default value, if is not not specified, no PWM generator will be installed. The maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator │ │ │ │ │ is independent, but all are updated by the same function(s), at the same time. In the descriptions that │ │ │ │ │ follow, is the number of specific generators. The numbering of PWM generators starts at 0. │ │ │ │ │ Unloading PWMgen │ │ │ │ │ unloadrt pwmgen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 274 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.2.1. Output Types │ │ │ │ │ The PWM generator supports three different output types. │ │ │ │ │ Output type 0 - PWM output pin only. Only positive commands are accepted, negative values are │ │ │ │ │ treated as zero (and will be affected by the parameter min-dc if it is non-zero). │ │ │ │ │ @@ -15082,15 +15082,15 @@ │ │ │ │ │ or duty cycles that are unobtainable with pure PWM. If false, both the PWM frequency and the duty │ │ │ │ │ cycle will be rounded to values that can be achieved exactly. │ │ │ │ │ (float) pwmgen..min-dc - Minimum duty cycle, between 0.0 and 1.0 (duty cycle will go to │ │ │ │ │ zero when disabled, regardless of this setting). │ │ │ │ │ (float) pwmgen..max-dc - Maximum duty cycle, between 0.0 and 1.0. │ │ │ │ │ (float) pwmgen..curr-dc - Current duty cycle - after all limiting and rounding (read only). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 275 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.2.4. Functions │ │ │ │ │ The component exports two functions. Each function acts on all of the PWM generators - running │ │ │ │ │ different generators in different threads is not supported. │ │ │ │ │ (funct) pwmgen.make-pulses - High speed function to generate PWM waveforms (no floating point). │ │ │ │ │ @@ -15111,15 +15111,15 @@ │ │ │ │ │ The base thread should be 1/2 count speed to allow for noise and timing variation. For example if you │ │ │ │ │ have a 100 pulse per revolution encoder on the spindle and your maximum RPM is 3000 the maximum │ │ │ │ │ base thread should be 25 µs. A 100 pulse per revolution encoder will have 400 counts. The spindle │ │ │ │ │ speed of 3000 RPM = 50 RPS (revolutions per second). 400 * 50 = 20,000 counts per second or 50 µs │ │ │ │ │ between counts. │ │ │ │ │ The Encoder Counter Block Diagram is a block diagram of one channel of an encoder counter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 276 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.24: Encoder Counter Block Diagram │ │ │ │ │ Loading Encoder │ │ │ │ │ halcmd: loadrt encoder [num_chan=] │ │ │ │ │ │ │ │ │ │ @@ -15133,15 +15133,15 @@ │ │ │ │ │ │ │ │ │ │ 5.8.3.1. Pins │ │ │ │ │ encoder..counter-mode (bit, I/O) (default: FALSE) - Enables counter mode. When true, the │ │ │ │ │ counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is useful for │ │ │ │ │ counting the output of a single channel (non-quadrature) sensor. When false, it counts in quadrature │ │ │ │ │ mode. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 277 / 1278 │ │ │ │ │ │ │ │ │ │ encoder..missing-teeth (s32, In) (default: 0) - Enables the use of missing-tooth index. This │ │ │ │ │ allows a single IO pin to provide both position and index information. If the encoder wheel has 58 │ │ │ │ │ teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then the │ │ │ │ │ position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should be │ │ │ │ │ @@ -15182,15 +15182,15 @@ │ │ │ │ │ that greatly reduces quantization noise as compared to simply differentiating the position output. │ │ │ │ │ When the magnitude of the true velocity is below min-speed-estimate, the velocity output is 0. │ │ │ │ │ encoder..x4-mode (bit, I/O) (default: TRUE) - Enables times-4 mode. When true, the counter │ │ │ │ │ counts each edge of the quadrature waveform (four counts per full cycle). When false, it only counts │ │ │ │ │ once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for some │ │ │ │ │ jogwheels. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 278 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.3.2. Parameters │ │ │ │ │ encoder..capture-position.time (s32, RO) │ │ │ │ │ encoder..capture-position.tmax (s32, RW) │ │ │ │ │ encoder..update-counters.time (s32, RO) │ │ │ │ │ @@ -15203,15 +15203,15 @@ │ │ │ │ │ │ │ │ │ │ 5.8.4. PID │ │ │ │ │ This component provides Proportional/Integral/Derivative control loops. It is a realtime component │ │ │ │ │ only. For simplicity, this discussion assumes that we are talking about position loops, however this │ │ │ │ │ component can be used to implement other feedback loops such as speed, torch height, temperature, │ │ │ │ │ etc. The PID Loop Block Diagram is a block diagram of a single PID loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 279 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.25: PID Loop Block Diagram │ │ │ │ │ Loading PID │ │ │ │ │ halcmd: loadrt pid [num_chan=] [debug=1] │ │ │ │ │ │ │ │ │ │ @@ -15223,15 +15223,15 @@ │ │ │ │ │ cluttering the pin list. │ │ │ │ │ Unloading PID │ │ │ │ │ halcmd: unloadrt pid │ │ │ │ │ │ │ │ │ │ 5.8.4.1. Pins │ │ │ │ │ The three most important pins are │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 280 / 1278 │ │ │ │ │ │ │ │ │ │ (float) pid..command - The desired position, as commanded by another system component. │ │ │ │ │ (float) pid..feedback - The present position, as measured by a feedback device such as │ │ │ │ │ an encoder. │ │ │ │ │ (float) pid..output - A velocity command that attempts to move from the present position │ │ │ │ │ @@ -15265,15 +15265,15 @@ │ │ │ │ │ (float) pid..deadband - Amount of error that will be ignored │ │ │ │ │ (float) pid..maxerror - Limit on error │ │ │ │ │ (float) pid..maxerrorI - Limit on error integrator │ │ │ │ │ (float) pid..maxerrorD - Limit on error derivative │ │ │ │ │ (float) pid..maxcmdD - Limit on command derivative │ │ │ │ │ (float) pid..maxcmdDD - Limit on command 2nd derivative │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 281 / 1278 │ │ │ │ │ │ │ │ │ │ (float) pid..maxoutput - Limit on output value │ │ │ │ │ All max* limits are implemented so that if the value of this parameter is zero, there is no limit. │ │ │ │ │ If debug=1 was specified when the component was installed, four additional pins will be exported: │ │ │ │ │ (float) pid..errorI - Integral of error. │ │ │ │ │ @@ -15303,15 +15303,15 @@ │ │ │ │ │ 5.8.5.1. Pins │ │ │ │ │ (float) sim-encoder..speed - The speed command for the simulated shaft. │ │ │ │ │ (bit) sim-encoder..phase-A - Quadrature output. │ │ │ │ │ (bit) sim-encoder..phase-B - Quadrature output. │ │ │ │ │ (bit) sim-encoder..phase-Z - Index pulse output. │ │ │ │ │ When .speed is positive, .phase-A leads .phase-B. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 282 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.5.2. Parameters │ │ │ │ │ (u32) sim-encoder..ppr - Pulses Per Revolution. │ │ │ │ │ (float) sim-encoder..scale - Scale Factor for speed. The default is 1.0, which means that │ │ │ │ │ speed is in revolutions per second. Change to 60 for RPM, to 360 for degrees per second, 6.283185 │ │ │ │ │ @@ -15343,15 +15343,15 @@ │ │ │ │ │ halcmd: unloadrt debounce │ │ │ │ │ │ │ │ │ │ 5.8.6.1. Pins │ │ │ │ │ Each individual filter has two pins. │ │ │ │ │ (bit) debounce...in - Input of filter in group . │ │ │ │ │ (bit) debounce...out - Output of filter in group . │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 283 / 1278 │ │ │ │ │ │ │ │ │ │ 5.8.6.2. Parameters │ │ │ │ │ Each group of filters has one parameter6 . │ │ │ │ │ (s32) debounce..delay - Filter delay for all filters in group . │ │ │ │ │ The filter delay is in units of thread periods. The minimum delay is zero. The output of a zero delay │ │ │ │ │ @@ -15383,15 +15383,15 @@ │ │ │ │ │ (float) siggen..cosine - Cosine output. │ │ │ │ │ (float) siggen..sawtooth - Sawtooth output. │ │ │ │ │ (float) siggen..triangle - Triangle wave output. │ │ │ │ │ (float) siggen..square - Square wave output. │ │ │ │ │ 6 Each individual filter also has an internal state variable. There is a compile time switch that can export that variable as a │ │ │ │ │ parameter. This is intended for testing, and simply wastes shared memory under normal circumstances. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 284 / 1278 │ │ │ │ │ │ │ │ │ │ All five outputs have the same frequency, amplitude, and offset. │ │ │ │ │ In addition to the output pins, there are three control pins: │ │ │ │ │ (float) siggen.:.frequency - Sets the frequency in Hertz, default value is 1 Hz. │ │ │ │ │ (float) siggen..amplitude - Sets the peak amplitude of the output waveforms, default is 1. │ │ │ │ │ @@ -15469,15 +15469,15 @@ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Output │ │ │ │ │ │ │ │ │ │ 7 Prior to version 2.1, frequency, amplitude, and offset were parameters. They were changed to pins to allow control by other │ │ │ │ │ components. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 285 / 1278 │ │ │ │ │ │ │ │ │ │ Cuadro 5.5: (continued) │ │ │ │ │ Bit 4 │ │ │ │ │ 0 │ │ │ │ │ 0 │ │ │ │ │ @@ -15655,15 +15655,15 @@ │ │ │ │ │ function is 0xa. The hexadecimal prefix is 0x. │ │ │ │ │ │ │ │ │ │ 5.9. HAL Component Generator │ │ │ │ │ 5.9.1. Introduction │ │ │ │ │ Writing a HAL component can be a tedious process, most of it in setup calls to rtapi_ and hal_ functions │ │ │ │ │ and associated error checking. halcompile will write all this code for you, automatically. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 286 / 1278 │ │ │ │ │ │ │ │ │ │ Compiling a HAL component is also much easier when using halcompile, whether the component is │ │ │ │ │ part of the LinuxCNC source tree, or outside it. │ │ │ │ │ For instance, when coded in C, a simple component such as ”ddt” is around 80 lines of code. The │ │ │ │ │ equivalent component is very short when written using the halcompile preprocessor: │ │ │ │ │ @@ -15708,15 +15708,15 @@ │ │ │ │ │ equal (they all have the same pins, parameters, functions, and data) but behave independently when │ │ │ │ │ their pins, parameters, and data have different values. │ │ │ │ │ singleton - It is possible for a component to be a ”singleton”, in which case exactly one instance is │ │ │ │ │ created. It seldom makes sense to write a singleton component, unless there can literally only be │ │ │ │ │ a single object of that kind in the system (for instance, a component whose purpose is to provide a │ │ │ │ │ pin with the current UNIX time, or a hardware driver for the internal PC speaker) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 287 / 1278 │ │ │ │ │ │ │ │ │ │ 5.9.5. Instance creation │ │ │ │ │ For a singleton, the one instance is created when the component is loaded. │ │ │ │ │ For a non-singleton, the count module parameter determines how many numbered instances are created. If count is not specified, the names module parameter determines how many named instances │ │ │ │ │ are created. If neither count nor names is specified, a single numbered instance is created. │ │ │ │ │ @@ -15748,15 +15748,15 @@ │ │ │ │ │ Parentheses indicate optional items. A vertical bar indicates alternatives. Words in CAPITALS indicate │ │ │ │ │ variable text, as follows: │ │ │ │ │ NAME - A standard C identifier │ │ │ │ │ STARREDNAME - A C identifier with zero or more * before it. This syntax can be used to declare │ │ │ │ │ instance variables that are pointers. Note that because of the grammar, there may not be whitespace │ │ │ │ │ between the * and the variable name. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 288 / 1278 │ │ │ │ │ │ │ │ │ │ HALNAME - An extended identifier. When used to create a HAL identifier, any underscores are │ │ │ │ │ replaced with dashes, and any trailing dash or period is removed, so that ”this_name_” will be │ │ │ │ │ turned into ”this-name”, and if the name is ”_”, then a trailing period is removed as well, so that │ │ │ │ │ ”function _” gives a HAL function name like ”component.” instead of ”component..” │ │ │ │ │ @@ -15809,15 +15809,15 @@ │ │ │ │ │ Or a string may be preceded by the literal character r, in which case the string is interpreted like a │ │ │ │ │ Python raw-string. │ │ │ │ │ The documentation string is in ”groff -man” format. For more information on this markup format, │ │ │ │ │ see groff_man(7). Remember that halcompile interprets backslash escapes in strings, so for instance │ │ │ │ │ to set the italic font for the word example, write: │ │ │ │ │ ”\\fIexample\\fB” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 289 / 1278 │ │ │ │ │ │ │ │ │ │ In this case, r-strings are particularly useful, because the backslashes in an r-string need not be │ │ │ │ │ doubled: │ │ │ │ │ r”\fIexample\fB” │ │ │ │ │ │ │ │ │ │ @@ -15855,15 +15855,15 @@ │ │ │ │ │ When implementing your own rtapi_app_main(), call the function int export(char *prefix, │ │ │ │ │ long extra_arg) to register the pins, parameters, and functions for prefix. │ │ │ │ │ option data TYPE - (default: none) deprecated │ │ │ │ │ If specified, each instance of the component will have an associated data block of type TYPE (which │ │ │ │ │ can be a simple type like float or the name of a type created with typedef ). In new components, │ │ │ │ │ variable should be used instead. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 290 / 1278 │ │ │ │ │ │ │ │ │ │ option extra_setup yes - (default: no) │ │ │ │ │ If specified, call the function defined by EXTRA_SETUP for each instance. If using the automatically │ │ │ │ │ defined rtapi_app_main, extra_arg is the number of this instance. │ │ │ │ │ option extra_cleanup yes - (default: no) │ │ │ │ │ @@ -15903,15 +15903,15 @@ │ │ │ │ │ LICENSE - Specify the license of the module for the documentation and for the MODULE_LICENSE() │ │ │ │ │ module declaration. For example, to specify that the module’s license is GPL v2 or later: │ │ │ │ │ license ”GPL”; // indicates GPL v2 or later │ │ │ │ │ For additional information on the meaning of MODULE_LICENSE() and additional license identifiers, see or the manual page rtapi_module_param(3). │ │ │ │ │ This declaration is required. │ │ │ │ │ AUTHOR - Specify the author of the module for the documentation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 291 / 1278 │ │ │ │ │ │ │ │ │ │ 5.9.7.4. Per-instance data storage │ │ │ │ │ │ │ │ │ │ variable CTYPE STARREDNAME; + variable CTYPE STARREDNAME[SIZE]; + variable CTYPE STARRED │ │ │ │ │ = DEFAULT; + variable CTYPE STARREDNAME[SIZE] = DEFAULT; │ │ │ │ │ @@ -15945,15 +15945,15 @@ │ │ │ │ │ │ │ │ │ │ Based on the items in the declaration section, halcompile creates a C structure called struct __comp_state. │ │ │ │ │ However, instead of referring to the members of this structure (e.g., *(inst->name)), they will generally be referred to using the macros below. The details of struct __comp_state and these macros │ │ │ │ │ may change from one version of halcompile to the next. │ │ │ │ │ FUNCTION(name) - Use this macro to begin the definition of a realtime function, which was previously declared with function NAME. The function includes a parameter period which is the integer │ │ │ │ │ number of nanoseconds between calls to the function. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 292 / 1278 │ │ │ │ │ │ │ │ │ │ EXTRA_SETUP() - Use this macro to begin the definition of the function called to perform extra │ │ │ │ │ setup of this instance. Return a negative Unix errno value to indicate failure (e.g., return -EBUSY │ │ │ │ │ on failure to reserve an I/O port), or 0 to indicate success. │ │ │ │ │ EXTRA_CLEANUP() - Use this macro to begin the definition of the function called to perform extra │ │ │ │ │ @@ -15990,15 +15990,15 @@ │ │ │ │ │ To alter the allowed number of personality items for user-built components, use the --personality │ │ │ │ │ option with halcompile. For example, to allow up to 128 personality times: │ │ │ │ │ [sudo] halcompile --personality=128 --install ... │ │ │ │ │ │ │ │ │ │ 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: │ │ │ │ │ loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 293 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ If a loadrt line specifies more instances than personalities, the instances with unspecified personalities are assigned a personality of 0. If the requested number of instances exceeds the number of │ │ │ │ │ allowed personalities, personalities are assigned by indexing modulo the number of allowed personalities. A message is printed denoting such assignments. │ │ │ │ │ │ │ │ │ │ @@ -16031,15 +16031,15 @@ │ │ │ │ │ halcompile --document rtexample.comp │ │ │ │ │ │ │ │ │ │ The resulting manpage, example.9 can be viewed with │ │ │ │ │ man ./example.9 │ │ │ │ │ │ │ │ │ │ or copied to a standard location for manual pages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 294 / 1278 │ │ │ │ │ │ │ │ │ │ 5.9.14. Compiling userspace components outside the source tree │ │ │ │ │ halcompile can process, compile, install, and document userspace components: │ │ │ │ │ halcompile usrexample.comp │ │ │ │ │ halcompile --compile usrexample.comp │ │ │ │ │ @@ -16079,15 +16079,15 @@ │ │ │ │ │ pin in float theta; │ │ │ │ │ function _; │ │ │ │ │ license ”GPL”; // indicates GPL v2 or later │ │ │ │ │ ;; │ │ │ │ │ #include │ │ │ │ │ FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 295 / 1278 │ │ │ │ │ │ │ │ │ │ 5.9.15.3. out8 │ │ │ │ │ This component is a driver for a fictional card called ”out8”, which has 8 pins of digital output which │ │ │ │ │ are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they │ │ │ │ │ can be at various addresses. The pin is called out_ because out is an identifier used in . It │ │ │ │ │ @@ -16130,15 +16130,15 @@ │ │ │ │ │ } │ │ │ │ │ FUNCTION(_) { outb(out_, ioaddr); } │ │ │ │ │ │ │ │ │ │ 5.9.15.4. hal_loop │ │ │ │ │ component hal_loop; │ │ │ │ │ pin out float example; │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 296 / 1278 │ │ │ │ │ │ │ │ │ │ This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the │ │ │ │ │ name of a standard Linux kernel module, so a loop component might not successfully load if the Linux │ │ │ │ │ loop module was also present on the system. │ │ │ │ │ When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by │ │ │ │ │ @@ -16182,15 +16182,15 @@ │ │ │ │ │ function _ nofp; │ │ │ │ │ description ””” │ │ │ │ │ Experimental general ’logic function’ component. Can perform ’and’, ’or’ │ │ │ │ │ and ’xor’ of up to 16 inputs. Determine the proper value for ’personality’ │ │ │ │ │ by adding: │ │ │ │ │ .IP \\(bu 4 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 297 / 1278 │ │ │ │ │ │ │ │ │ │ The number of input pins, usually from 2 to 16 │ │ │ │ │ .IP \\(bu │ │ │ │ │ 256 (0x100) if the ’and’ output is desired │ │ │ │ │ .IP \\(bu │ │ │ │ │ @@ -16235,15 +16235,15 @@ │ │ │ │ │ void unset(hal_bit_t *p){ │ │ │ │ │ *p = 0; │ │ │ │ │ } │ │ │ │ │ //main function │ │ │ │ │ FUNCTION(_) { │ │ │ │ │ if (in < 0){ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 298 / 1278 │ │ │ │ │ │ │ │ │ │ set(&out1); │ │ │ │ │ unset(&out2); │ │ │ │ │ }else if (in >0){ │ │ │ │ │ unset(&out2); │ │ │ │ │ @@ -16283,15 +16283,15 @@ │ │ │ │ │ The halcmd language used in HAL files has a simple syntax that is actually a subset of the more │ │ │ │ │ powerful general-purpose Tcl scripting language. │ │ │ │ │ │ │ │ │ │ 5.10.2. Haltcl Commands │ │ │ │ │ Haltcl files use the Tcl scripting language augmented with the specific commands of the LinuxCNC │ │ │ │ │ hardware abstraction layer (HAL). The HAL-specific commands are: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 299 / 1278 │ │ │ │ │ │ │ │ │ │ addf, alias, │ │ │ │ │ delf, delsig, │ │ │ │ │ getp, gets │ │ │ │ │ ptype, │ │ │ │ │ @@ -16341,15 +16341,15 @@ │ │ │ │ │ without whitespace are in this group), then it is possible to treat $::SECTION(ITEM) as though it is │ │ │ │ │ not a list. │ │ │ │ │ When the value could contain special characters—quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl—it is necessary to distinguish │ │ │ │ │ between the list of values and the initial (and possibly only) value in the list. │ │ │ │ │ In Tcl, this is written [lindex $::SECTION(ITEM) 0]. │ │ │ │ │ For example: given the following INI values │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 300 / 1278 │ │ │ │ │ │ │ │ │ │ [HOSTMOT2] │ │ │ │ │ DRIVER=hm2_eth │ │ │ │ │ IPADDR=”10.10.10.10” │ │ │ │ │ BOARD=7i92 │ │ │ │ │ @@ -16387,15 +16387,15 @@ │ │ │ │ │ Whitespace in the bare expression is not allowed, use quotes for that: │ │ │ │ │ setp scale.0.gain ”6.28 / 360.0 * $::JOINT_0(radius) * 60.0” │ │ │ │ │ │ │ │ │ │ In other contexts, such as loadrt, you must explicitly use the Tcl expr command ([expr {}]) for computational expressions. │ │ │ │ │ Example │ │ │ │ │ loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 301 / 1278 │ │ │ │ │ │ │ │ │ │ 5.10.6. Haltcl Examples │ │ │ │ │ Consider the topic of stepgen headroom. Software stepgen runs best with an acceleration constraint │ │ │ │ │ that is ”a bit higher” than the one used by the motion planner. So, when using halcmd files, we force │ │ │ │ │ INI files to have a manually calculated value. │ │ │ │ │ @@ -16434,15 +16434,15 @@ │ │ │ │ │ $ halrun -T haltclfile.tcl │ │ │ │ │ │ │ │ │ │ 5.10.8. Haltcl Distribution Examples (sim) │ │ │ │ │ The configs/sim/axis/simtcl directory includes an INI file that uses a .tcl file to demonstrate a haltcl │ │ │ │ │ configuration in conjunction with the usage of twopass processing. The example shows the use of Tcl │ │ │ │ │ procedures, looping, the use of comments and output to the terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 302 / 1278 │ │ │ │ │ │ │ │ │ │ 5.11. Creating Userspace Python Components │ │ │ │ │ 5.11.1. Basic usage │ │ │ │ │ A userspace component begins by creating its pins and parameters, then enters a loop which will │ │ │ │ │ periodically drive all the outputs from the inputs. The following component copies the value seen on │ │ │ │ │ @@ -16504,15 +16504,15 @@ │ │ │ │ │ much longer if the memory used by the passthrough component is swapped to disk, the assignment │ │ │ │ │ could be delayed until that memory is swapped back in. │ │ │ │ │ Thus, userspace components are suitable for user-interactive elements such as control panels (delays │ │ │ │ │ in the range of milliseconds are not noticed, and longer delays are acceptable), but not for sending │ │ │ │ │ step pulses to a stepper driver board (delays must always be in the range of microseconds, no matter │ │ │ │ │ what). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 303 / 1278 │ │ │ │ │ │ │ │ │ │ 5.11.3. Create pins and parameters │ │ │ │ │ h = hal.component(”passthrough”) │ │ │ │ │ │ │ │ │ │ The component itself is created by a call to the constructor hal.component. The arguments are the │ │ │ │ │ @@ -16564,15 +16564,15 @@ │ │ │ │ │ │ │ │ │ │ 5.11.4.1. Driving output (HAL_OUT) pins │ │ │ │ │ Periodically, usually in response to a timer, all HAL_OUT pins should be ”driven” by assigning them a │ │ │ │ │ new value. This should be done whether or not the value is different than the last one assigned. When │ │ │ │ │ a pin is connected to a signal, its old output value is not copied into the signal, so the proper value │ │ │ │ │ will only appear on the signal once the component assigns a new value. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 304 / 1278 │ │ │ │ │ │ │ │ │ │ 5.11.4.2. Driving bidirectional (HAL_IO) pins │ │ │ │ │ The above rule does not apply to bidirectional pins. Instead, a bidirectional pin should only be driven │ │ │ │ │ by the component when the component wishes to change the value. For instance, in the canonical │ │ │ │ │ encoder interface, the encoder component only sets the index-enable pin to FALSE (when an index │ │ │ │ │ @@ -16602,15 +16602,15 @@ │ │ │ │ │ hal.component_is_ready(”testpanel”) │ │ │ │ │ │ │ │ │ │ 5.11.6.5. get_msg_level │ │ │ │ │ Get the current Realtime msg level. │ │ │ │ │ 5.11.6.6. set_msg_level │ │ │ │ │ Set the current Realtime msg level. used for debugging information. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.7. connect │ │ │ │ │ Connect a pin to a signal. │ │ │ │ │ Example │ │ │ │ │ hal.connect(”pinname”,”signal_name”) │ │ │ │ │ │ │ │ │ │ 5.11.6.8. disconnect │ │ │ │ │ @@ -16643,15 +16643,15 @@ │ │ │ │ │ listOfDicts = hal.get_info_params() │ │ │ │ │ paramName1 = listOfDicts[0].get(’NAME’) │ │ │ │ │ paramValue1 = listOfDicts[0].get(’VALUE’) │ │ │ │ │ paramDirection1 = listOfDicts[0].get(’DIRECTION’) │ │ │ │ │ │ │ │ │ │ 305 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.13. new_sig │ │ │ │ │ Create a new signal of the type specified. │ │ │ │ │ Example │ │ │ │ │ hal.new_sig(”signalname”,hal.HAL_BIT) │ │ │ │ │ │ │ │ │ │ 5.11.6.14. pin_has_writer │ │ │ │ │ @@ -16680,15 +16680,15 @@ │ │ │ │ │ │ │ │ │ │ 5.11.6.19. set │ │ │ │ │ Set the HAL object value. │ │ │ │ │ h.out.set(10) │ │ │ │ │ │ │ │ │ │ 306 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.20. is_pin │ │ │ │ │ Is the object a pin or parameter? │ │ │ │ │ Returns True or False. │ │ │ │ │ h.in.is_pin() │ │ │ │ │ │ │ │ │ │ 5.11.6.21. sampler_base │ │ │ │ │ @@ -16717,15 +16717,15 @@ │ │ │ │ │ MSG_DBG │ │ │ │ │ MSG_ERR │ │ │ │ │ MSG_INFO │ │ │ │ │ MSG_WARN │ │ │ │ │ │ │ │ │ │ 307 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 308 / 1278 │ │ │ │ │ │ │ │ │ │ 5.11.8. System Information │ │ │ │ │ Read these to acquire information about the realtime system. │ │ │ │ │ is_kernelspace │ │ │ │ │ is_rt │ │ │ │ │ @@ -16763,15 +16763,15 @@ │ │ │ │ │ Then make a pin and connect a value_changed (the watcher) signal to a function call: │ │ │ │ │ ######################## │ │ │ │ │ # **** INITIALIZE **** # │ │ │ │ │ ######################## │ │ │ │ │ # widgets allows access to widgets from the qtvcp files │ │ │ │ │ # at this point the widgets and HAL pins are not instantiated │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 309 / 1278 │ │ │ │ │ │ │ │ │ │ def __init__(self, halcomp,widgets,paths): │ │ │ │ │ self.hal = halcomp │ │ │ │ │ self.testPin = self.hal.newpin(’test-pin’, hal.HAL_BIT, hal.HAL_IN) │ │ │ │ │ self.testPin.value_changed.connect(lambda s: self.setTestPin(s)) │ │ │ │ │ @@ -16810,15 +16810,15 @@ │ │ │ │ │ 5.12.2.1. Pins │ │ │ │ │ │ │ │ │ │ (bit) in │ │ │ │ │ State of the hardware input. │ │ │ │ │ (bit) in-not │ │ │ │ │ Inverted state of the input. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 310 / 1278 │ │ │ │ │ │ │ │ │ │ 5.12.2.2. Parameters │ │ │ │ │ None │ │ │ │ │ 5.12.2.3. Functions │ │ │ │ │ │ │ │ │ │ @@ -16844,15 +16844,15 @@ │ │ │ │ │ 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. │ │ │ │ │ 5.12.4.1. Pins │ │ │ │ │ │ │ │ │ │ (float) value │ │ │ │ │ The hardware reading, scaled according to the scale and offset parameters. │ │ │ │ │ value = ((input reading, in hardware-dependent units) * scale) - offset │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 311 / 1278 │ │ │ │ │ │ │ │ │ │ 5.12.4.2. Parameters │ │ │ │ │ │ │ │ │ │ (float) scale │ │ │ │ │ The input voltage (or current) will be multiplied by scale before being output to value. │ │ │ │ │ @@ -16887,15 +16887,15 @@ │ │ │ │ │ (float) scale │ │ │ │ │ This should be set so that an input of 1 on the value pin will cause the analog output pin to read │ │ │ │ │ 1 volt. │ │ │ │ │ (float) high_limit (optional) │ │ │ │ │ When calculating the value to output to the hardware, if value + offset is greater than high_limit, │ │ │ │ │ then high_limit will be used instead. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 312 / 1278 │ │ │ │ │ │ │ │ │ │ (float) low_limit (optional) │ │ │ │ │ When calculating the value to output to the hardware, if value + offset is less than low_limit, │ │ │ │ │ then low_limit will be used instead. │ │ │ │ │ (float) bit_weight (optional) │ │ │ │ │ @@ -16935,15 +16935,15 @@ │ │ │ │ │ disappear, and the small window will display the name and value of the selected item. The display is │ │ │ │ │ updated approximately 10 times per second. If you click ”Accept” instead of ”OK”, the small window │ │ │ │ │ will display the name and value of the selected item, but the large window will remain on the screen. │ │ │ │ │ This is convenient if you want to look at a number of different items quickly. │ │ │ │ │ You can have many halmeters running at the same time, if you want to monitor several items. If │ │ │ │ │ you want to launch a halmeter without tying up a shell window, type halmeter & to run it in the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 313 / 1278 │ │ │ │ │ │ │ │ │ │ background. You can also make halmeter start displaying a specific item immediately, by adding │ │ │ │ │ ”pin|sig|par[am] ” to the command line. It will display the pin, signal, or parameter as soon as it starts - if there is no such item, it will simply start normally. And finally, if you │ │ │ │ │ specify an item to display, you can add -s before the pin|sig|param to tell halmeter to use a small │ │ │ │ │ window. The item name will be displayed in the title bar instead of under the value, and there will be │ │ │ │ │ @@ -16956,15 +16956,15 @@ │ │ │ │ │ upper left corner of your screen. For example: │ │ │ │ │ loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500 │ │ │ │ │ │ │ │ │ │ See the man page for more options and the section Halmeter. │ │ │ │ │ │ │ │ │ │ Figura 5.26: Halmeter selection window │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 314 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.27: Halmeter watch window │ │ │ │ │ │ │ │ │ │ 5.13.3. Halshow │ │ │ │ │ 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 │ │ │ │ │ @@ -16979,15 +16979,15 @@ │ │ │ │ │ (this help) │ │ │ │ │ --fformat format_string_for_float │ │ │ │ │ --iformat format_string_for_int │ │ │ │ │ Notes: │ │ │ │ │ Create watchfile in halshow using: ’File/Save Watch List’. │ │ │ │ │ LinuxCNC must be running for standalone usage. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 315 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.28: Halshow Watch Tab │ │ │ │ │ A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens │ │ │ │ │ ”pin+”, ”param+”, ”sig=+” followed by the appropriate pin, param, or signal name. The token-name │ │ │ │ │ pairs are separated by a space character. │ │ │ │ │ @@ -17000,15 +17000,15 @@ │ │ │ │ │ pin+joint.0.pos-hard-limit │ │ │ │ │ pin+joint.1.pos-hard-limit │ │ │ │ │ sig+estop-loop │ │ │ │ │ │ │ │ │ │ When loading a watchfile with the File/Load Watch List menu item, the token-name pairs may appear │ │ │ │ │ as single or multiple lines. Blank lines and lines beginning with a # character are ignored. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 316 / 1278 │ │ │ │ │ │ │ │ │ │ 5.13.4. Halscope │ │ │ │ │ Halscope is an oscilloscope for the HAL. It lets you capture the value of pins, signals, and parameters │ │ │ │ │ as a function of time. Complete operating instructions should be located here eventually. For now, │ │ │ │ │ refer to section Sección 5.4.6 in the tutorial chapter, which explains the basics. │ │ │ │ │ @@ -17058,15 +17058,15 @@ │ │ │ │ │ For complete information, see the man page: │ │ │ │ │ man sim_pin │ │ │ │ │ │ │ │ │ │ sim_pin Example (with LinuxCNC running) │ │ │ │ │ halcmd loadrt mux2 names=example; halcmd net sig_example example.in0 │ │ │ │ │ sim_pin example.sel example.in1 sig_example & │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 317 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.29: sim_pin Window │ │ │ │ │ │ │ │ │ │ 5.13.6. Simulate Probe │ │ │ │ │ simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage: │ │ │ │ │ @@ -17074,15 +17074,15 @@ │ │ │ │ │ │ │ │ │ │ Figura 5.30: simulate_probe Window │ │ │ │ │ │ │ │ │ │ 5.13.7. HAL Histogram │ │ │ │ │ hal-histogram is a command line utility to display histograms for HAL pins. │ │ │ │ │ Usage: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 318 / 1278 │ │ │ │ │ │ │ │ │ │ hal-histogram --help | -? │ │ │ │ │ or │ │ │ │ │ hal-histogram [Options] [pinname] │ │ │ │ │ │ │ │ │ │ @@ -17122,15 +17122,15 @@ │ │ │ │ │ 1. LinuxCNC (or another HAL application) must be running. │ │ │ │ │ 2. If no pinname is specified, default is: motion-command-handler.time. │ │ │ │ │ 3. This app may be opened for 5 pins. │ │ │ │ │ 4. Pintypes float, s32, u32, bit are supported. │ │ │ │ │ 5. The pin must be associated with a thread supporting floating point For a base thread, this may │ │ │ │ │ require using loadrt motmod ... base_thread_fp=1 . │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 319 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 5.31: hal-histogram Window │ │ │ │ │ │ │ │ │ │ 5.13.8. Halreport │ │ │ │ │ halreport is a command-line utility that generates a report about HAL connections for a running │ │ │ │ │ @@ -17141,15 +17141,15 @@ │ │ │ │ │ 3. Each pin’s component_function, thread, and addf-order. │ │ │ │ │ 4. Userspace component pins having non-ordered functions. │ │ │ │ │ 5. Identification of unknown functions for unhandled components. │ │ │ │ │ 6. Signals with no output. │ │ │ │ │ 7. Signals with no inputs. │ │ │ │ │ 8. Functions with no addf. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 320 / 1278 │ │ │ │ │ │ │ │ │ │ 9. Warning tags for components marked as deprecated/obsolete in docs. │ │ │ │ │ 10. Real names for pins that use alias names. │ │ │ │ │ The report can be generated from the command line and directed to an output file (or stdout if no │ │ │ │ │ outfilename is specified): │ │ │ │ │ @@ -17226,15 +17226,15 @@ │ │ │ │ │ │ │ │ │ │ servo-thread 004 │ │ │ │ │ servo-thread 008 │ │ │ │ │ │ │ │ │ │ In the example above, the HALFILE uses halcmd aliases to simplify pin names for an hostmot2 FPGA │ │ │ │ │ board with commands like: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 321 / 1278 │ │ │ │ │ │ │ │ │ │ alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Questionable component function detection may occur for │ │ │ │ │ @@ -17247,15 +17247,15 @@ │ │ │ │ │ Component pins that cannot be associated with a known thread function report the function as ”Unknown”. │ │ │ │ │ │ │ │ │ │ halreport generates a connections report (without pin types, and current values) for a running HAL │ │ │ │ │ application to aid in designing and verifying connections. This helps with the understanding what the │ │ │ │ │ source of a pin value is. Use this information with applications like halshow, halmeter, halscope or │ │ │ │ │ the halcmd show command in a terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 322 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 6 │ │ │ │ │ │ │ │ │ │ Hardware Drivers │ │ │ │ │ 6.1. Parallel Port Driver │ │ │ │ │ @@ -17288,15 +17288,15 @@ │ │ │ │ │ The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c). The ports are │ │ │ │ │ numbered starting at zero. │ │ │ │ │ │ │ │ │ │ 6.1.1. Loading │ │ │ │ │ The hal_parport driver is a real time component so it must be loaded into the real time thread with │ │ │ │ │ loadrt. The configuration string describes the parallel ports to be used, and (optionally) their types. If │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 323 / 1278 │ │ │ │ │ │ │ │ │ │ the configuration string does not describe at least one port, it is an error. │ │ │ │ │ loadrt hal_parport cfg=”port [type] [port [type] ...]” │ │ │ │ │ │ │ │ │ │ Specifying the Port Numbers below 16 refer to parallel ports detected by the system. This is the │ │ │ │ │ @@ -17318,15 +17318,15 @@ │ │ │ │ │ 2 to 9 explicitly specified as outputs. Note that you must know the base address of the parallel ports │ │ │ │ │ to configure the drivers correctly. For ISA bus ports, this is usually not a problem, since the ports │ │ │ │ │ are almost always at a well-known address, such as 0x278 or 0x378 which are typically configured │ │ │ │ │ in the BIOS. The addresses of PCI bus cards are usually found with lspci -v in an I/O ports line, or │ │ │ │ │ in a kernel message after running sudo modprobe -a parport_pc. There is no default address, so if │ │ │ │ │ does not contain at least one address, it is an error. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 324 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 6.1: Parport block diagram │ │ │ │ │ Type For each parallel port handled by the hal_parport driver, a type can optionally be specified. The │ │ │ │ │ type is one of in, out, epp, or x. │ │ │ │ │ Cuadro 6.1: Parallel Port Direction │ │ │ │ │ @@ -17386,15 +17386,15 @@ │ │ │ │ │ out │ │ │ │ │ out │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 325 / 1278 │ │ │ │ │ │ │ │ │ │ Cuadro 6.1: (continued) │ │ │ │ │ Pin │ │ │ │ │ 14 │ │ │ │ │ 15 │ │ │ │ │ @@ -17457,15 +17457,15 @@ │ │ │ │ │ direction. │ │ │ │ │ loadrt hal_parport cfg=”0x378 0xc000” │ │ │ │ │ │ │ │ │ │ Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their │ │ │ │ │ settings depending on which slot you put them into, so if you like to ’get under the hood’ and re-arrange │ │ │ │ │ things, be sure to check these values before you start LinuxCNC. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 326 / 1278 │ │ │ │ │ │ │ │ │ │ 6.1.3. Pins │ │ │ │ │ parport.

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

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

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

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

│ │ │ │ │ @@ -43433,15 +43433,15 @@ │ │ │ │ │ │ │ │ │ │ ”spindle-speed” │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example showing each tab selected. │ │ │ │ │ │ │ │ │ │ 959 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 960 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.29: Simple Tabs Example │ │ │ │ │ │ │ │ │ │ 12.2. PyVCP Examples │ │ │ │ │ 12.2.1. AXIS │ │ │ │ │ @@ -43479,15 +43479,15 @@ │ │ │ │ │ Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to │ │ │ │ │ LinuxCNC. │ │ │ │ │ The following is an example of a loadusr command to load two PyVCP panels and name each one so │ │ │ │ │ the connection names in HAL will be known. │ │ │ │ │ loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml │ │ │ │ │ loadusr -Wn sppanel pyvcp -c sppanel panel2.xml │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 961 / 1278 │ │ │ │ │ │ │ │ │ │ The -Wn makes HAL Wait for name to be loaded before proceeding. │ │ │ │ │ The pyvcp -c makes PyVCP name the panel. │ │ │ │ │ The HAL pins from panel1.xml will be named btnpanel.<_pin name_>. │ │ │ │ │ The HAL pins from panel2.xml will be named sppanel.<_pin name_>. │ │ │ │ │ @@ -43496,27 +43496,27 @@ │ │ │ │ │ 12.2.3. Jog Buttons Example │ │ │ │ │ In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be │ │ │ │ │ built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure │ │ │ │ │ our machine, then on the Advanced Configuration Options page we make a couple of selections to add │ │ │ │ │ a blank PyVCP panel as shown in the following figure. For this example we named the configuration │ │ │ │ │ pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 962 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.30: XYZ Wizard Configuration │ │ │ │ │ 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. │ │ │ │ │ 12.2.3.1. Create the Widgets │ │ │ │ │ Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between │ │ │ │ │ the tags we will add the widgets for our panel. │ │ │ │ │ Look in the PyVCP Widgets Reference section of the manual for more detailed information on each │ │ │ │ │ widget documentation des widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ In your custompanel.xml file we will add the description of the widgets. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ (”Helvetica”,16) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43570,15 +43570,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 963 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 964 / 1278 │ │ │ │ │ │ │ │ │ │ RAISED │ │ │ │ │ 3 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above gives us a PyVCP panel that looks like the following. │ │ │ │ │ │ │ │ │ │ 969 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 970 / 1278 │ │ │ │ │ │ │ │ │ │ 12.2.5.2. The Connections │ │ │ │ │ To make it work we add the following code to the custom_postgui.hal file. │ │ │ │ │ # display the rpm based on freq * rpm per hz │ │ │ │ │ loadrt mult2 │ │ │ │ │ @@ -43930,15 +43930,15 @@ │ │ │ │ │ custom.hal file whereas the rev led needs to use the spindle-rev bit. You can’t link the spindle-fwd bit │ │ │ │ │ twice so you use the signal that it was linked to. │ │ │ │ │ │ │ │ │ │ 12.2.6. Rapid to Home Button │ │ │ │ │ This example creates a button on the PyVCP side panel when pressed will send all the axis back to │ │ │ │ │ the home position. This example assumes you don’t have a PyVCP panel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 971 / 1278 │ │ │ │ │ │ │ │ │ │ In your configuration directory create the XML file. In this example it’s named rth.xml. In the rth.xml │ │ │ │ │ file add the following code to create the button. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43954,15 +43954,15 @@ │ │ │ │ │ │ │ │ │ │ If you don’t have a [HALUI] section in the INI file create it and add the following MDI command. │ │ │ │ │ MDI_COMMAND = G53 G0 X0 Y0 Z0 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Information about G53 and G0 G-codes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 972 / 1278 │ │ │ │ │ │ │ │ │ │ In the [HAL] section if you don’t have a post gui file add the following and create a file called postgui.hal. │ │ │ │ │ POSTGUI_HALFILE = postgui.hal │ │ │ │ │ │ │ │ │ │ In the postgui.hal file add the following code to link the PyVCP button to the MDI command. │ │ │ │ │ @@ -43993,15 +43993,15 @@ │ │ │ │ │ Widget set: uses TkInter widgets. │ │ │ │ │ User interface creation: ”edit XML file / run result / evaluate looks” cycle. │ │ │ │ │ No support for embedding user-defined event handling. │ │ │ │ │ No LinuxCNC interaction beyond HAL pin I/O supported. │ │ │ │ │ GladeVCP: │ │ │ │ │ Widget set: relies on the GTK+ widget set. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 973 / 1278 │ │ │ │ │ │ │ │ │ │ User interface creation: uses the Glade WYSIWYG user interface editor. │ │ │ │ │ Any HAL pin change may be directed to call back into a user-defined Python event handler. │ │ │ │ │ Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python. │ │ │ │ │ Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a │ │ │ │ │ @@ -44025,31 +44025,31 @@ │ │ │ │ │ make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the │ │ │ │ │ LinuxCNC wiki page. │ │ │ │ │ │ │ │ │ │ Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_panel.ini │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Run the same panel, but as a tab inside AXIS: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_tab.ini │ │ │ │ │ │ │ │ │ │ 974 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ To run this panel inside Touchy: │ │ │ │ │ $ cd configs/sim/touchy/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_touchy.ini │ │ │ │ │ │ │ │ │ │ 975 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 976 / 1278 │ │ │ │ │ │ │ │ │ │ Functionally these setups are identical - they only differ in screen real estate requirements and visibility. Since it is possible to run several GladeVCP components in parallel (with different HAL component │ │ │ │ │ names), mixed setups are possible as well - for instance a panel on the right hand side, and one or │ │ │ │ │ more tabs for less-frequently used parts of the interface. │ │ │ │ │ 12.3.2.1. Exploring the example panel │ │ │ │ │ @@ -44063,15 +44063,15 @@ │ │ │ │ │ and M6 commands in the MDI window will change the current and prepared tool number fields. │ │ │ │ │ The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI │ │ │ │ │ command in the interpreter. The third button Execute Oword subroutine is an advanced example - it │ │ │ │ │ takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword │ │ │ │ │ subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body. │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 977 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.2.2. Exploring the User Interface description │ │ │ │ │ The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed. │ │ │ │ │ To edit the user interface, run the command │ │ │ │ │ $ glade configs/axis/gladevcp/manual-example.ui │ │ │ │ │ @@ -44106,15 +44106,15 @@ │ │ │ │ │ Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian │ │ │ │ │ Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error. │ │ │ │ │ 12.3.3.2. Running Glade to create a new user interface │ │ │ │ │ This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on │ │ │ │ │ Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube. │ │ │ │ │ Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 978 / 1278 │ │ │ │ │ │ │ │ │ │ If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up │ │ │ │ │ with /scripts/rip-environment, otherwise Glade won’t find the LinuxCNC-specific │ │ │ │ │ widgets. │ │ │ │ │ When asked for unsaved preferences, just accept the defaults and hit Close. │ │ │ │ │ @@ -44129,15 +44129,15 @@ │ │ │ │ │ File→Save as, give it a name like myui.ui and make sure it’s saved as GtkBuilder file (radio button │ │ │ │ │ left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but │ │ │ │ │ there is no point in using it. The convention for GtkBuilder file extension is .ui. │ │ │ │ │ 12.3.3.3. Testing a panel │ │ │ │ │ You’re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with: │ │ │ │ │ gladevcp myui.ui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 979 / 1278 │ │ │ │ │ │ │ │ │ │ GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless │ │ │ │ │ overridden by the -c option. If running AXIS, just try Show HAL configuration and │ │ │ │ │ inspect its pins. │ │ │ │ │ You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive). │ │ │ │ │ @@ -44175,15 +44175,15 @@ │ │ │ │ │ It is possible to create a custom HAL component name by adding the -c option: │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel where PyVCP used to live: │ │ │ │ │ GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui │ │ │ │ │ │ │ │ │ │ The command line actually run by AXIS for the above is: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 980 / 1278 │ │ │ │ │ │ │ │ │ │ halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example ←.ui │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located in │ │ │ │ │ @@ -44219,15 +44219,15 @@ │ │ │ │ │ nota │ │ │ │ │ Make sure the UI file is the last option passed to GladeVCP in both the GLADEVCP= and │ │ │ │ │ EMBED_TAB_COMMAND= statements. │ │ │ │ │ │ │ │ │ │ 12.3.3.7. Integrating into Touchy │ │ │ │ │ To do add a GladeVCP tab to Touchy, edit your INI file as follows: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 981 / 1278 │ │ │ │ │ │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel as a tab │ │ │ │ │ EMBED_TAB_NAME=GladeVCP demo │ │ │ │ │ EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal ←./manual-example.ui │ │ │ │ │ @@ -44266,15 +44266,15 @@ │ │ │ │ │ -H FILE:: │ │ │ │ │ Execute HAL statements from FILE with halcmd after the │ │ │ │ │ component is set up and ready │ │ │ │ │ -m MAXIMUM:: │ │ │ │ │ Force panel window to maximize. Together with the -g geometry option │ │ │ │ │ one can move the panel to a second monitor and force it to use all of the screen │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 982 / 1278 │ │ │ │ │ │ │ │ │ │ -t THEME:: │ │ │ │ │ Set gtk theme. Default is system theme. Different panels can have different themes. │ │ │ │ │ An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? ←GTK_Themes[EMC Wiki]. │ │ │ │ │ -x XID:: │ │ │ │ │ @@ -44313,15 +44313,15 @@ │ │ │ │ │ So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded │ │ │ │ │ fashion): │ │ │ │ │ You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the │ │ │ │ │ right point in time, so comment that out in the INI file. │ │ │ │ │ Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H │ │ │ │ │ option (see previous section). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 983 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.6. HAL Widget reference │ │ │ │ │ GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended │ │ │ │ │ to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used │ │ │ │ │ with the Glade user interface editor. With proper installation, the HAL Widgets should show up in │ │ │ │ │ @@ -44351,15 +44351,15 @@ │ │ │ │ │ General→Name). │ │ │ │ │ Exceptions to this rule currently are: │ │ │ │ │ │ │ │ │ │ HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a (s32) pin │ │ │ │ │ HAL_ProgressBar, which has a -value input pin, and a -scale input │ │ │ │ │ pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 984 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.6.2. Python attributes and methods of HAL Widgets │ │ │ │ │ HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the │ │ │ │ │ applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties │ │ │ │ │ and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual. │ │ │ │ │ @@ -44397,15 +44397,15 @@ │ │ │ │ │ callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin’s │ │ │ │ │ value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback │ │ │ │ │ into your Python code when - well, a HAL pin changes its value. This means there’s no more need for │ │ │ │ │ permanent polling of HAL pin changes in your code, the widgets do that in the background and let │ │ │ │ │ you know. │ │ │ │ │ Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 985 / 1278 │ │ │ │ │ │ │ │ │ │ The example in configs/apps/gladevcp/complex shows how this is handled in Python. │ │ │ │ │ 12.3.6.5. Buttons │ │ │ │ │ This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton, │ │ │ │ │ HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical │ │ │ │ │ @@ -44416,15 +44416,15 @@ │ │ │ │ │ Important common methods: set_active(), get_active() │ │ │ │ │ Important properties: label, image │ │ │ │ │ │ │ │ │ │ Figura 12.31: Check button │ │ │ │ │ │ │ │ │ │ Figura 12.32: Radio buttons │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 986 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.33: Toggle button │ │ │ │ │ sugerencia │ │ │ │ │ Defining radio button groups in Glade: │ │ │ │ │ Decide on default active button. │ │ │ │ │ @@ -44447,15 +44447,15 @@ │ │ │ │ │ 12.3.6.7. SpinButton │ │ │ │ │ HAL SpinButton is derived from GtkSpinButton and holds two pins: │ │ │ │ │ -f │ │ │ │ │ out FLOAT pin │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 987 / 1278 │ │ │ │ │ │ │ │ │ │ To be useful, Spinbuttons need an adjustment value like scales, see above. │ │ │ │ │ │ │ │ │ │ Figura 12.35: Example SpinButton │ │ │ │ │ │ │ │ │ │ @@ -44489,15 +44489,15 @@ │ │ │ │ │ Set the content of the label which may be shown over the counts value. │ │ │ │ │ If the label given is longer than 15 Characters, it will be cut to 15 Characters. │ │ │ │ │ default = blank │ │ │ │ │ center_color │ │ │ │ │ This allows one to change the color of the wheel. It uses a GDK color string. │ │ │ │ │ default = #bdefbdefbdef (gray) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 988 / 1278 │ │ │ │ │ │ │ │ │ │ count_type_shown │ │ │ │ │ There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts. │ │ │ │ │ default = 1 │ │ │ │ │ count is based on the CPR selected - it will count positive and negative. It is available as a s32 │ │ │ │ │ @@ -44538,15 +44538,15 @@ │ │ │ │ │ There are two GObject signals emitted: │ │ │ │ │ count_changed │ │ │ │ │ Emitted when the widget’s count changes eg. from being wheel scrolled. │ │ │ │ │ scale_changed │ │ │ │ │ Emitted when the widget’s scale changes eg. from double clicking. │ │ │ │ │ Connect to these like so: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 989 / 1278 │ │ │ │ │ │ │ │ │ │ [widget name].connect(’count_changed’, [count function name]) │ │ │ │ │ [widget name].connect(’scale_changed’, [scale function name]) │ │ │ │ │ │ │ │ │ │ The callback functions would use this pattern: │ │ │ │ │ @@ -44568,15 +44568,15 @@ │ │ │ │ │ may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough │ │ │ │ │ movements the drag and drop way. │ │ │ │ │ jogwheel exports it’s count value as HAL pin: │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ jogwheel has the following properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 990 / 1278 │ │ │ │ │ │ │ │ │ │ size │ │ │ │ │ Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200 │ │ │ │ │ cpr │ │ │ │ │ Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40 │ │ │ │ │ @@ -44599,15 +44599,15 @@ │ │ │ │ │ Sets the label content with ”string” │ │ │ │ │ │ │ │ │ │ Figura 12.37: Example JogWheel │ │ │ │ │ │ │ │ │ │ 12.3.6.10. Speed Control │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 991 / 1278 │ │ │ │ │ │ │ │ │ │ The value is controlled with two button to increase or decrease the value. The increment will change │ │ │ │ │ as long a button is pressed. The value of each increment as well as the time between two changes can │ │ │ │ │ be set using the widget properties. │ │ │ │ │ speedcontrol offers some HAL pin: │ │ │ │ │ @@ -44652,15 +44652,15 @@ │ │ │ │ │ Float │ │ │ │ │ The max allowed value. │ │ │ │ │ Allowed values are 0.001 to 99999.0. │ │ │ │ │ Default is 100.0. │ │ │ │ │ If you change this value, the increment will be reset to default, so it might be necessary to set │ │ │ │ │ afterwards a new increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 992 / 1278 │ │ │ │ │ │ │ │ │ │ increment │ │ │ │ │ Float │ │ │ │ │ Sets the applied increment per mouse click. │ │ │ │ │ Allowed values are 0.001 to 99999.0 and -1. │ │ │ │ │ @@ -44706,15 +44706,15 @@ │ │ │ │ │ [widget name].get_value() │ │ │ │ │ Will return the counts value as float │ │ │ │ │ [widget name].set_value(float(value)) │ │ │ │ │ Sets the widget to the commanded value │ │ │ │ │ [widget name].set_digits(int(value)) │ │ │ │ │ Sets the digits of the value to be used │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 993 / 1278 │ │ │ │ │ │ │ │ │ │ [widget name].hide_button(bool(value)) │ │ │ │ │ Hide or show the button │ │ │ │ │ │ │ │ │ │ Figura 12.38: Example Speedcontrol │ │ │ │ │ @@ -44745,15 +44745,15 @@ │ │ │ │ │ If the pin is low then child widgets are visible which is the default state. │ │ │ │ │ HAL_Table and HAL_Hbox │ │ │ │ │ Have one HAL BIT input pin which controls if their child widgets are sensitive or not. │ │ │ │ │ Pin: , . │ │ │ │ │ in bit pin │ │ │ │ │ If the pin is low then child widgets are inactive which is the default state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 994 / 1278 │ │ │ │ │ │ │ │ │ │ State_Sensitive_Table │ │ │ │ │ Responds to the state to LinuxCNC’s interpreter. │ │ │ │ │ Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle. │ │ │ │ │ You can combine them. It will always be insensitive at Estop. │ │ │ │ │ @@ -44794,15 +44794,15 @@ │ │ │ │ │ led_blink_rate │ │ │ │ │ If set and LED is ON then it’s blinking. │ │ │ │ │ Blink period is equal to ”led_blink_rate” specified in milliseconds. │ │ │ │ │ create_hal_pin │ │ │ │ │ Select/deselect creation of a HAL pin to control the LED. │ │ │ │ │ With no HAL pin created LED can be controlled with a Python function. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 995 / 1278 │ │ │ │ │ │ │ │ │ │ As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification │ │ │ │ │ in your code when the LED’s HAL pin was changed, then connect this signal to a handler, for example │ │ │ │ │ on_led_pin_changed and provide the handler as follows: │ │ │ │ │ def on_led_pin_changed(self,hal_led,data=None): │ │ │ │ │ @@ -44834,15 +44834,15 @@ │ │ │ │ │ Yellow zone lower limit │ │ │ │ │ red_limit │ │ │ │ │ Red zone lower limit │ │ │ │ │ text_template │ │ │ │ │ Text template to display the current value of the pin. │ │ │ │ │ Python formatting may be used for dict {”value”:value}. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 996 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.40: Example HAL_ProgressBar │ │ │ │ │ │ │ │ │ │ 12.3.6.15. ComboBox │ │ │ │ │ HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list. │ │ │ │ │ @@ -44872,15 +44872,15 @@ │ │ │ │ │ invert │ │ │ │ │ Swap min and max direction. │ │ │ │ │ An inverted HBar grows from right to left, an inverted VBar from top to bottom. │ │ │ │ │ min, max │ │ │ │ │ Minimum and maximum value of desired range. It is not an error condition if the current value │ │ │ │ │ is outside this range. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 997 / 1278 │ │ │ │ │ │ │ │ │ │ show limits │ │ │ │ │ Used to select/deselect the limits text on bar. │ │ │ │ │ zero │ │ │ │ │ Zero point of range. │ │ │ │ │ @@ -44918,15 +44918,15 @@ │ │ │ │ │ to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border │ │ │ │ │ and zone 2 from last border to 1. │ │ │ │ │ Borders are set as fractions. │ │ │ │ │ Valid values range from 0 to 1. │ │ │ │ │ │ │ │ │ │ Figura 12.41: Horizontal bar │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 998 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.42: Vertical bar │ │ │ │ │ │ │ │ │ │ 12.3.6.17. Meter │ │ │ │ │ HAL_Meter is a widget similar to PyVCP meter - it represents a float value. │ │ │ │ │ @@ -44955,15 +44955,15 @@ │ │ │ │ │ z0_border, z1_border │ │ │ │ │ Define up bounds of color zones. │ │ │ │ │ By default only one zone is enabled. If you want more then one zone set z0_border and z1_border │ │ │ │ │ to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second │ │ │ │ │ border and zone 2 from last border to max. │ │ │ │ │ Borders are set as values in range min-max. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 999 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.43: Example HAL Meters │ │ │ │ │ │ │ │ │ │ 12.3.6.18. HAL_Graph │ │ │ │ │ This widget is for plotting values over time. │ │ │ │ │ @@ -44988,15 +44988,15 @@ │ │ │ │ │ show rapids │ │ │ │ │ This tells the plotter to show the rapid moves. │ │ │ │ │ Default = true. │ │ │ │ │ show DTG │ │ │ │ │ This selects the DRO to display the distance-to-go value. │ │ │ │ │ Default = true. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1000 / 1278 │ │ │ │ │ │ │ │ │ │ show relative │ │ │ │ │ This selects the DRO to show values relative to user system or machine coordinates. │ │ │ │ │ Default = true. │ │ │ │ │ show live plot │ │ │ │ │ @@ -45040,15 +45040,15 @@ │ │ │ │ │ Mouse button handling: leads to different functions of the button: │ │ │ │ │ 0 = default: left rotate, middle move, right zoom │ │ │ │ │ 1 = left zoom, middle move, right rotate │ │ │ │ │ 2 = left move, middle rotate, right zoom │ │ │ │ │ 3 = left zoom, middle rotate, right move │ │ │ │ │ 4 = left move, middle zoom, right rotate │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1001 / 1278 │ │ │ │ │ │ │ │ │ │ 5 = left rotate, middle zoom, right move │ │ │ │ │ 6 = left move, middle zoom, right zoom │ │ │ │ │ Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ @@ -45086,15 +45086,15 @@ │ │ │ │ │ If you set all the plotting options false but show_offsets true you get an offsets page instead of │ │ │ │ │ a graphics plot. │ │ │ │ │ If you get the zoom distance before changing the view then reset the zoom distance, it’s much │ │ │ │ │ more user friendly. │ │ │ │ │ if you select an element in the preview, the selected element will be used as rotation center │ │ │ │ │ point │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.44: Gremlin Example │ │ │ │ │ │ │ │ │ │ 12.3.6.20. HAL_Offset │ │ │ │ │ The HAL_Offset widget is used to display the offset of a single axis. │ │ │ │ │ HAL_Offset has the following properties: │ │ │ │ │ Joint Number │ │ │ │ │ @@ -45112,15 +45112,15 @@ │ │ │ │ │ The DRO widget is used to display the current axis position. │ │ │ │ │ It has the following properties: │ │ │ │ │ Actual Position │ │ │ │ │ select actual (feedback) position or commanded position. │ │ │ │ │ │ │ │ │ │ 1002 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1003 / 1278 │ │ │ │ │ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ @@ -45158,15 +45158,15 @@ │ │ │ │ │ By clicking on the DRO the Order of the DRO will toggle around. │ │ │ │ │ In Relative Mode the actual coordinate system will be displayed. │ │ │ │ │ Combi_DRO has the following properties: │ │ │ │ │ joint_number │ │ │ │ │ Used to select which axis (technically which joint) is displayed. │ │ │ │ │ On a trivialkins machine (mill, lathe, router) axis vrs. joint number are: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1004 / 1278 │ │ │ │ │ │ │ │ │ │ 0:X 1:Y 2:Z etc. │ │ │ │ │ actual │ │ │ │ │ Select actual (feedback) or commanded position. │ │ │ │ │ metric_units │ │ │ │ │ @@ -45211,15 +45211,15 @@ │ │ │ │ │ cycle_time │ │ │ │ │ The time the DRO waits between two polls. │ │ │ │ │ this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis │ │ │ │ │ config, to avoid, that the DRO slows down the main application too much. │ │ │ │ │ The value must be an integer in the range of 100 to 1000. FIXME unit=ms ? │ │ │ │ │ Default is 150. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1005 / 1278 │ │ │ │ │ │ │ │ │ │ Using GObject to set the above listed properties: │ │ │ │ │ [widget name].set_property(property, value) │ │ │ │ │ │ │ │ │ │ There are several Python methods to control the widget: │ │ │ │ │ @@ -45259,15 +45259,15 @@ │ │ │ │ │ • Absolute = the machine coordinates, depends on the actual property will give actual or commanded position. │ │ │ │ │ • Relative = will be the coordinates of the actual coordinate system. │ │ │ │ │ • DTG = the distance to go. │ │ │ │ │ Will mostly be 0, as this function should not be used while the machine is moving, because of time │ │ │ │ │ delays. │ │ │ │ │ The widget will emit the following signals: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1006 / 1278 │ │ │ │ │ │ │ │ │ │ clicked │ │ │ │ │ This signal is emitted, when the user has clicked on the Combi_DRO widget. │ │ │ │ │ It will send the following data: │ │ │ │ │ • widget = widget object │ │ │ │ │ @@ -45297,15 +45297,15 @@ │ │ │ │ │ [widget name].system │ │ │ │ │ The actual system, as mentioned in the system_changed signal. │ │ │ │ │ [widget name].homed │ │ │ │ │ True if the joint is homed. │ │ │ │ │ [widget name].machine_units │ │ │ │ │ 0 if Imperial, 1 if Metric. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1007 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.45: Example: Three Combi_DRO in a window │ │ │ │ │ X = Relative Mode │ │ │ │ │ Y = Absolute Mode │ │ │ │ │ Z = DTG Mode │ │ │ │ │ @@ -45330,15 +45330,15 @@ │ │ │ │ │ Sets the file filter for the objects to be shown. │ │ │ │ │ Must be a string containing a comma separated list of extensions to be shown. │ │ │ │ │ Default is ”ngc,py”. │ │ │ │ │ sortorder │ │ │ │ │ Sets the sorting order of the displayed icon. │ │ │ │ │ Must be an integer value from 0 to 3, where: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1008 / 1278 │ │ │ │ │ │ │ │ │ │ 0 = ASCENDING (sorted according to file names) │ │ │ │ │ 1 = DESCENDING (sorted according to file names) │ │ │ │ │ 2 = FOLDERFIRST (show the folders first, then the files), default │ │ │ │ │ 3 = FILEFIRST (show the files first, then the folders) │ │ │ │ │ @@ -45382,15 +45382,15 @@ │ │ │ │ │ [widget name].btn_sel_next.emit(”clicked”) │ │ │ │ │ [widget name].btn_get_selected.emit(”clicked”) │ │ │ │ │ [widget name].btn_dir_up.emit(”clicked”) │ │ │ │ │ [widget name].btn_exit.emit(”clicked”) │ │ │ │ │ │ │ │ │ │ The widget will emit the following signals: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1009 / 1278 │ │ │ │ │ │ │ │ │ │ selected │ │ │ │ │ This signal is emitted when the user selects an icon. │ │ │ │ │ It will return a string containing a file path if a file has been selected, or None if a directory has been │ │ │ │ │ selected. │ │ │ │ │ @@ -45405,15 +45405,15 @@ │ │ │ │ │ • state is a boolean and will be True or False. │ │ │ │ │ exit │ │ │ │ │ This signal is emitted when the exit button has been pressed to close the IconView. │ │ │ │ │ Mostly needed if the application is started as stand alone. │ │ │ │ │ │ │ │ │ │ Figura 12.46: Iconview Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1010 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.6.24. Calculator widget │ │ │ │ │ This is a simple calculator widget, that can be used for numerical input. │ │ │ │ │ You can preset the display and retrieve the result or that preset value. │ │ │ │ │ calculator has the following properties: │ │ │ │ │ @@ -45446,15 +45446,15 @@ │ │ │ │ │ │ │ │ │ │ tooleditor has the following properties: │ │ │ │ │ Hidden Columns │ │ │ │ │ This will hide the given columns. │ │ │ │ │ The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q. │ │ │ │ │ You can hide any number of columns including the select and comments. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1011 / 1278 │ │ │ │ │ │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ [widget name].set_properties(’hide_columns’,’uvwijq’) │ │ │ │ │ │ │ │ │ │ @@ -45493,15 +45493,15 @@ │ │ │ │ │ Convenience method to hide buttons. │ │ │ │ │ You must call this after show_all(). │ │ │ │ │ [widget name].get_selected_tool() │ │ │ │ │ Return the user selected (highlighted) tool number. │ │ │ │ │ [widget name].set_selected_tool(toolnumber) │ │ │ │ │ Selects (highlights) the requested tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1012 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.47: Tooleditor Example │ │ │ │ │ │ │ │ │ │ 12.3.6.26. Offsetpage │ │ │ │ │ The Offsetpage widget is used to display/edit the offsets of all the axes. │ │ │ │ │ @@ -45526,15 +45526,15 @@ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1013 / 1278 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”highlight_color”,gdk.Color(’blue’)) │ │ │ │ │ [widget name].set_property(”foreground_color”,gdk.Color(’black’)) │ │ │ │ │ [widget name].set_property(”hide_columns”,”xyzabcuvwt”) │ │ │ │ │ [widget name].set_property(”hide_rows”,”123456789abc”) │ │ │ │ │ @@ -45560,15 +45560,15 @@ │ │ │ │ │ This is a list of a list of offset-name/user-name pairs. │ │ │ │ │ The default text is the same as the offset name. │ │ │ │ │ [widget name].get_names() │ │ │ │ │ This returns a list of a list of row-keyword/user-name pairs. │ │ │ │ │ The user name column is editable, so saving this list is user friendly. │ │ │ │ │ See set_names above. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1014 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.48: Offsetpage Example │ │ │ │ │ │ │ │ │ │ 12.3.6.27. HAL_sourceview widget │ │ │ │ │ │ │ │ │ │ @@ -45589,15 +45589,15 @@ │ │ │ │ │ Sets the line to highlight. │ │ │ │ │ Uses the sourceview line numbers. │ │ │ │ │ [widget name].get_line_number() │ │ │ │ │ Returns the currently highlighted line. │ │ │ │ │ [widget name].line_up() │ │ │ │ │ Moves the highlighted line up one line. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1015 / 1278 │ │ │ │ │ │ │ │ │ │ [widget name].line_down() │ │ │ │ │ Moves the highlighted line down one line. │ │ │ │ │ [widget name].load_file(’filename’) │ │ │ │ │ Loads a file. │ │ │ │ │ @@ -45619,15 +45619,15 @@ │ │ │ │ │ use_double_click │ │ │ │ │ Boolean, True enables the mouse double click feature and a double click on an entry will submit │ │ │ │ │ that command. │ │ │ │ │ It is not recommended to use this feature on real machines, as a double click on a wrong entry │ │ │ │ │ may cause dangerous situations │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1016 / 1278 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”font_size_tree”,10) │ │ │ │ │ [widget name].set_property(”font_size_entry”,20) │ │ │ │ │ [widget name].set_property(”use_double_click”,False) │ │ │ │ │ │ │ │ │ │ @@ -45640,15 +45640,15 @@ │ │ │ │ │ │ │ │ │ │ Figura 12.50: HAL widgets in a bitmap Example │ │ │ │ │ │ │ │ │ │ 12.3.7. Action Widgets Reference │ │ │ │ │ GladeVCP includes a collection of ”canned actions” called VCP Action Widgets for the Glade user │ │ │ │ │ interface editor. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1017 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the │ │ │ │ │ G-code interpreter. │ │ │ │ │ │ │ │ │ │ @@ -45672,15 +45672,15 @@ │ │ │ │ │ The command string may use special keywords to access important functions. │ │ │ │ │ ACTION for access to the ACTION command library. │ │ │ │ │ GSTAT for access to the Gstat status message library. │ │ │ │ │ INFO for access to collected data from the INI file. │ │ │ │ │ HAL for access to the HAL linuxcnc Python module │ │ │ │ │ STAT for access to LinuxCNC’s raw status via the LinuxCNC Python module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1018 / 1278 │ │ │ │ │ │ │ │ │ │ CMD for access to LinuxCNC’s commands via the LinuxCNC Python module. │ │ │ │ │ EXT for access to the handler file functions if available. │ │ │ │ │ linuxcnc for access to the LinuxCNC Python module. │ │ │ │ │ self for access to the widget instance. │ │ │ │ │ @@ -45714,15 +45714,15 @@ │ │ │ │ │ that the requested operation is running: │ │ │ │ │ The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is │ │ │ │ │ idle again. │ │ │ │ │ The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then │ │ │ │ │ allows user to send AUTO_ABORT command. │ │ │ │ │ The MDI toggle sends given MDI command and waits for its completion in pressed inactive state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1019 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.7.4. The Action_MDI Toggle and Action_MDI widgets │ │ │ │ │ These widgets provide a means to execute arbitrary MDI commands. │ │ │ │ │ The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which │ │ │ │ │ remains disabled until command complete. │ │ │ │ │ @@ -45741,15 +45741,15 @@ │ │ │ │ │ 12.3.7.6. Parameter passing with Action_MDI and ToggleAction_MDI widgets │ │ │ │ │ Optionally, MDI command strings may have parameters substituted before they are passed to the interpreter. Parameters currently may be names of HAL pins in the GladeVCP component. This is how │ │ │ │ │ it works: │ │ │ │ │ assume you have a HAL SpinBox named speed, and you want to pass it’s current value as a parameter in an MDI command. │ │ │ │ │ The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description). │ │ │ │ │ To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name} │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1020 / 1278 │ │ │ │ │ │ │ │ │ │ for the above HAL SpinBox, we could use (MSG, ”The speed is: ${speed-f}”) just to show what’s │ │ │ │ │ happening. │ │ │ │ │ The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here’s what you │ │ │ │ │ get when running it: │ │ │ │ │ @@ -45766,15 +45766,15 @@ │ │ │ │ │ │ │ │ │ │ 12.3.7.8. Preparing for an MDI Action, and cleaning up afterwards │ │ │ │ │ The LinuxCNC G-code interpreter has a single global set of variables, like feed, spindle speed, relative/absolute mode and others. If you use G-code commands or O-word subs, some of these variables │ │ │ │ │ might get changed by the command or subroutine - for example, a probing subroutine will very likely │ │ │ │ │ set the feed value quite low. With no further precautions, your previous feed setting will be overwritten │ │ │ │ │ by the probing subroutine’s value. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1021 / 1278 │ │ │ │ │ │ │ │ │ │ To deal with this surprising and undesirable side effect of a given O-word subroutine or G-code statement executed with an LinuxCNC ToggleAction_MDI, you might associate pre-MDI and post-MDI │ │ │ │ │ handlers with a given LinuxCNC ToggleAction_MDI. These handlers are optional and provide a way to │ │ │ │ │ save any state before executing the MDI Action, and to restore it to previous values afterwards. The │ │ │ │ │ signal names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade │ │ │ │ │ @@ -45812,15 +45812,15 @@ │ │ │ │ │ mode-related: │ │ │ │ │ • mode-manual: emitted when LinuxCNC enters manual mode, │ │ │ │ │ • mode-mdi: emitted when LinuxCNC enters MDI mode, │ │ │ │ │ • mode-auto: emitted when LinuxCNC enters automatic mode, │ │ │ │ │ interpreter-related: emitted when the G-code interpreter changes into that mode │ │ │ │ │ • interp-run │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1022 / 1278 │ │ │ │ │ │ │ │ │ │ • interp-idle │ │ │ │ │ • interp-paused │ │ │ │ │ • interp-reading │ │ │ │ │ • interp-waiting │ │ │ │ │ @@ -45859,15 +45859,15 @@ │ │ │ │ │ print(INFO.MACHINE_IS_METRIC) │ │ │ │ │ ACTION.SET_ERROR_MESSAGE(’Something went wrong’) │ │ │ │ │ │ │ │ │ │ More information can be found here: GladeVCP Libraries modules There is a sample configuration │ │ │ │ │ that demonstrates using the core library with GladeVCP’s action Python widgets and with a Python │ │ │ │ │ handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1023 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.8.3. An example: adding custom user callbacks in Python │ │ │ │ │ This is just a minimal example to convey the idea - details are laid out in the rest of this section. │ │ │ │ │ GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in │ │ │ │ │ Python. This could be used, among others, to execute MDI commands. Here’s how you do it: │ │ │ │ │ @@ -45902,15 +45902,15 @@ │ │ │ │ │ The overall approach is as follows: │ │ │ │ │ Design your UI with Glade, and set signal handlers where you want actions associated with a widget. │ │ │ │ │ Write a Python module which contains callable objects (see handler models below). │ │ │ │ │ Pass your module’s path name to GladeVCP with the -u option. │ │ │ │ │ GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree. │ │ │ │ │ The main event loop is run. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1024 / 1278 │ │ │ │ │ │ │ │ │ │ For simple tasks it’s sufficient to define functions named after the Glade signal handlers. These will be │ │ │ │ │ called when the corresponding event happens in the widget tree. Here’s a trivial example - it assumes │ │ │ │ │ that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press: │ │ │ │ │ nhits = 0 │ │ │ │ │ @@ -45956,15 +45956,15 @@ │ │ │ │ │ self.active = False │ │ │ │ │ # connect to client-events from the host GUI │ │ │ │ │ def on_map_event(self, widget, data=None): │ │ │ │ │ top = widget.get_toplevel() │ │ │ │ │ print(”map event”) │ │ │ │ │ top.connect(’client-event’, self.event) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1025 / 1278 │ │ │ │ │ │ │ │ │ │ If during module inspection GladeVCP finds a function get_handlers, it calls it as follows: │ │ │ │ │ get_handlers(halcomp,builder,useropts) │ │ │ │ │ │ │ │ │ │ The arguments are: │ │ │ │ │ @@ -45999,15 +45999,15 @@ │ │ │ │ │ on screen). And the HAL component isn’t ready as well, so its unsafe to access pins values in your │ │ │ │ │ __init__() method. │ │ │ │ │ If you want to have a callback to execute at program start after it is safe to access HAL pins, then a │ │ │ │ │ connect a handler to the realize signal of the top level window1 (which might be its only real purpose). │ │ │ │ │ At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about │ │ │ │ │ to enter the Gtk main loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1026 / 1278 │ │ │ │ │ │ │ │ │ │ 12.3.8.7. Multiple callbacks with the same name │ │ │ │ │ Within a class, method names must be unique. However, it is OK to have multiple class instances │ │ │ │ │ passed to GladeVCP by get_handlers() with identically named methods. When the corresponding signal │ │ │ │ │ occurs, these methods will be called in definition order - module by module, and within a module, in │ │ │ │ │ @@ -46047,15 +46047,15 @@ │ │ │ │ │ are saved and to be restored. In the case of signature mismatch, a new INI file with default settings │ │ │ │ │ is generated. │ │ │ │ │ 12.3.8.10. Using persistent variables │ │ │ │ │ If you want any of Gtk widget state, HAL widgets output pin’s values and/or class attributes of your │ │ │ │ │ handler class to be retained across invocations, proceed as follows: │ │ │ │ │ Import the gladevcp.persistence module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1027 / 1278 │ │ │ │ │ │ │ │ │ │ Decide which instance attributes, and their default values you want to have retained, if any. │ │ │ │ │ Decide which widgets should have their state retained. │ │ │ │ │ Describe these decisions in your handler class’ \__init()__ method through a nested dictionary │ │ │ │ │ as follows: │ │ │ │ │ @@ -46096,15 +46096,15 @@ │ │ │ │ │ ini.restore_state(obj) │ │ │ │ │ Restore HAL out pins and obj’s attributes as saved/initialized to default as above. │ │ │ │ │ 12.3.8.11. Saving the state on GladeVCP shutdown │ │ │ │ │ To save the widget and/or variable state on exit, proceed as follows: │ │ │ │ │ Select some interior widget (type is not important, for instance a table). │ │ │ │ │ In the Signals tab, select GtkObject. It should show a destroy signal in the first column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1028 / 1278 │ │ │ │ │ │ │ │ │ │ Add the handler name, e.g. on_destroy to the second column. │ │ │ │ │ Add a Python handler like below: │ │ │ │ │ import gtk │ │ │ │ │ ... │ │ │ │ │ @@ -46141,15 +46141,15 @@ │ │ │ │ │ 12.3.8.14. Adding HAL pins │ │ │ │ │ If you need HAL pins which are not associated with a specific HAL widget, add them as follows: │ │ │ │ │ import hal_glib │ │ │ │ │ ... │ │ │ │ │ # in your handler class __init__(): │ │ │ │ │ self.example_trigger = hal_glib.GPin(halcomp.newpin(’example-trigger’, hal.HAL_BIT, hal. ←HAL_IN)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1029 / 1278 │ │ │ │ │ │ │ │ │ │ To get a callback when this pin’s value changes, associate a value-change callback with this pin, add: │ │ │ │ │ self.example_trigger.connect(’value-changed’, self._on_example_trigger_change) │ │ │ │ │ │ │ │ │ │ and define a callback method (or function, in this case leave out the self parameter): │ │ │ │ │ @@ -46190,15 +46190,15 @@ │ │ │ │ │ self.max_value = hal_glib.GPin(halcomp.newpin(’max-value’, hal.HAL_FLOAT, hal. ←HAL_IN)) │ │ │ │ │ self.max_value.connect(’value-changed’, self._on_max_value_change) │ │ │ │ │ inifile = linuxcnc.ini(os.getenv(”INI_FILE_NAME”)) │ │ │ │ │ mmin = float(inifile.find(”METER”, ”MIN”) or 0.0) │ │ │ │ │ self.meter = self.builder.get_object(’meter’) │ │ │ │ │ self.meter.min = mmin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1030 / 1278 │ │ │ │ │ │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,builder,useropts)] │ │ │ │ │ │ │ │ │ │ 12.3.8.17. Examples, and rolling your own GladeVCP application │ │ │ │ │ @@ -46235,15 +46235,15 @@ │ │ │ │ │ 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value │ │ │ │ │ See the example in configs/apps/gladevcp/colored-label. Setting the background color of a GtkLabel widget (and HAL_Label is derived from GtkLabel) is a bit tricky. The GtkLabel widget │ │ │ │ │ has no window object of its own for performance reasons, and only window objects can have a │ │ │ │ │ background color. The solution is to enclose the Label in an EventBox container, which has a │ │ │ │ │ window but is otherwise invisible - see the coloredlabel.ui file. │ │ │ │ │ 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero? │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1031 / 1278 │ │ │ │ │ │ │ │ │ │ This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely to be the case for all widgets using adjustment. The workaround mentioned for instance in │ │ │ │ │ http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin │ │ │ │ │ value, it is better to set it explicitly in an on_realize signal handler during widget creation. See │ │ │ │ │ the example in configs/apps/gladevcp/by-widget/spinbutton.{ui,py}. │ │ │ │ │ @@ -46283,15 +46283,15 @@ │ │ │ │ │ Support is provided for independently installed GladeVCP applications that conform to system directory placements as defined by the LINUXCNC_AUX_GLADEVCP and LINUXCNC_AUX_EXAMPLES │ │ │ │ │ items reported by the script linuxcnc_var: │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_GLADEVCP │ │ │ │ │ /usr/share/linuxcnc/aux_gladevcp │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_EXAMPLES │ │ │ │ │ /usr/share/linuxcnc/aux_examples │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1032 / 1278 │ │ │ │ │ │ │ │ │ │ The system directory defined by LINUXCNC_AUX_GLADEVCP (/usr/share/linuxcnc/aux_gladevcp) specifies the location for a GladeVCP-compatible Python file(s) and related subdirectories. The Python file │ │ │ │ │ is imported at GladeVCP startup and made available to subsequent GladeVCP applications including │ │ │ │ │ embedded usage in supporting GUIs. │ │ │ │ │ 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 │ │ │ │ │ @@ -46329,15 +46329,15 @@ │ │ │ │ │ MACRO_PATH_LIST = [] │ │ │ │ │ INI_MACROS = self.INI.findall(”DISPLAY”, ”MACRO”) │ │ │ │ │ IMAGE_PATH = IMAGEDIR │ │ │ │ │ LIB_PATH = os.path.join(HOME, ”share”,”qtvcp”) │ │ │ │ │ PROGRAM_FILTERS = None │ │ │ │ │ PARAMETER_FILE = None │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ MACHINE_IS_LATHE = False │ │ │ │ │ MACHINE_IS_METRIC = False │ │ │ │ │ MACHINE_UNIT_CONVERSION = 1 │ │ │ │ │ MACHINE_UNIT_CONVERSION_9 = [1]*9 │ │ │ │ │ TRAJ_COORDINATES = │ │ │ │ │ JOINT_COUNT = int(self.INI.find(”KINS”,”JOINTS”)or 0) │ │ │ │ │ @@ -46390,15 +46390,15 @@ │ │ │ │ │ (heading: [EMCIO], title:TOOL_TABLE) │ │ │ │ │ (heading: [HAL], title: POSTGUI_HALFILE) │ │ │ │ │ │ │ │ │ │ There are some helper functions - mostly used for widget support │ │ │ │ │ │ │ │ │ │ 1033 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1034 / 1278 │ │ │ │ │ │ │ │ │ │ get_error_safe_setting(self, heading, detail, default=None) │ │ │ │ │ convert_metric_to_machine(data) │ │ │ │ │ convert_imperial_to_machine(data) │ │ │ │ │ convert_9_metric_to_machine(data) │ │ │ │ │ @@ -46441,15 +46441,15 @@ │ │ │ │ │ ACTION = Action() │ │ │ │ │ │ │ │ │ │ To access Action commands use general syntax such as these: │ │ │ │ │ ACTION.SET_ESTOP_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_HOMING(joint) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SET_MACHINE_UNHOMED(joint) │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.SET_MDI_MODE() │ │ │ │ │ ACTION.SET_MANUAL_MODE() │ │ │ │ │ ACTION.SET_AUTO_MODE() │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ @@ -46490,15 +46490,15 @@ │ │ │ │ │ ACTION.SET_FLOOD_OFF() │ │ │ │ │ ACTION.TOGGLE_MIST() │ │ │ │ │ ACTION.SET_MIST_ON() │ │ │ │ │ ACTION.SET_MIST_OFF() │ │ │ │ │ │ │ │ │ │ 1035 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1036 / 1278 │ │ │ │ │ │ │ │ │ │ ACTION.RELOAD_TOOLTABLE() │ │ │ │ │ ACTION.UPDATE_VAR_FILE() │ │ │ │ │ ACTION.TOGGLE_OPTIONAL_STOP() │ │ │ │ │ ACTION.SET_OPTIONAL_STOP_ON() │ │ │ │ │ @@ -46524,60 +46524,60 @@ │ │ │ │ │ to create a GUI screen for running a CNC machine. │ │ │ │ │ QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python │ │ │ │ │ code for even finer grain customization. │ │ │ │ │ │ │ │ │ │ 12.5.1. Showcase │ │ │ │ │ Few examples of QtVCP built screens and virtual control panels: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.55: QtDragon - 3/4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1037 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.56: QtDefault - 3-Axis Sample │ │ │ │ │ │ │ │ │ │ 1038 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.57: QtAxis - Self Adjusting Axis Sample │ │ │ │ │ │ │ │ │ │ 1039 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.58: Blender - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1040 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.59: X1mill - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1041 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.60: cam_align - Camera Alignment VCP │ │ │ │ │ │ │ │ │ │ 1042 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.61: test_panel - Test Panel VCP │ │ │ │ │ │ │ │ │ │ 12.5.2. Overview │ │ │ │ │ Two files are used, individually or in combination, to add customizations: │ │ │ │ │ │ │ │ │ │ 1043 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1044 / 1278 │ │ │ │ │ │ │ │ │ │ A UI file that is a XML file made with Qt Designer graphical editor. │ │ │ │ │ A handler file which is a Python code text file. │ │ │ │ │ Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and │ │ │ │ │ handler files. │ │ │ │ │ @@ -46610,15 +46610,15 @@ │ │ │ │ │ │ │ │ │ │ Options │ │ │ │ │ -d Debugging on. │ │ │ │ │ -i Enable info output. │ │ │ │ │ -v Enable verbose debug output. │ │ │ │ │ -q Enable only error debug output. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1045 / 1278 │ │ │ │ │ │ │ │ │ │ -a Set window always on top. │ │ │ │ │ -c NAME HAL component name. Default is to use the UI file name. │ │ │ │ │ -g GEOMETRY Set geometry WIDTHxHEIGHT+XOFFSET+YOFFSET. Values are in pixel units, XOFFSET/YOFFSET is referenced from top left of screen. Use -g WIDTHxHEIGHT for just setting size or │ │ │ │ │ -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100 │ │ │ │ │ @@ -46654,15 +46654,15 @@ │ │ │ │ │ 12.5.2.4. Handler Files │ │ │ │ │ A handler file is a file containing Python code, which adds to QtVCP default routines. │ │ │ │ │ A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify │ │ │ │ │ QtVCP’s core code. In this way you can have custom behaviors. │ │ │ │ │ If present a handler file will be loaded. │ │ │ │ │ Only one file is allowed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1046 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.2.5. Libraries Modules │ │ │ │ │ QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt │ │ │ │ │ behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install). │ │ │ │ │ Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what │ │ │ │ │ @@ -46692,15 +46692,15 @@ │ │ │ │ │ QtVCP will look for a folder named (in the launched configuration folder that holds │ │ │ │ │ the INI file). │ │ │ │ │ In that folder, QtVCP will load any of the available following files: │ │ │ │ │ .ui, │ │ │ │ │ _handler.py, and │ │ │ │ │ .qss. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1047 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.2.8. Modifying Stock Screens │ │ │ │ │ There are three ways to customize a screen/panel. │ │ │ │ │ Minor StyleSheet Changes Stylesheets can be used to set Qt properties. │ │ │ │ │ If a widget uses properties they usually can be modified by stylesheets. │ │ │ │ │ @@ -46740,46 +46740,46 @@ │ │ │ │ │ basename in the edit box. │ │ │ │ │ Validate to copy all the files │ │ │ │ │ Delete the files you don’t wish to modifyso that the original files will be used. │ │ │ │ │ │ │ │ │ │ 12.5.3. VCP Panels │ │ │ │ │ QtVCP can be used to create control panels that interface with HAL. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1048 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.3.1. Builtin Panels │ │ │ │ │ There are several builtin HAL panels available. │ │ │ │ │ In a terminal type qtvcp to see a list: │ │ │ │ │ test_panel │ │ │ │ │ Collection of useful widgets for testing HAL components, including speech of LED state. │ │ │ │ │ │ │ │ │ │ Figura 12.62: QtVCP HAL Test Builtin Panel │ │ │ │ │ cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.63: cam_align - Camera Alignment VCP │ │ │ │ │ sim_panel │ │ │ │ │ A small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations. │ │ │ │ │ │ │ │ │ │ 1049 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.64: QtVCP Sim Builtin Panel │ │ │ │ │ vismach_mill_xyz │ │ │ │ │ 3D openGL view of a 3-Axis milling machine. │ │ │ │ │ │ │ │ │ │ 1050 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1051 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.65: QtVismach - 3-Axis Mill Builtin Panel │ │ │ │ │ You can load these from the terminal or from a HAL file with this basic command: │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ @@ -46788,15 +46788,15 @@ │ │ │ │ │ │ │ │ │ │ In this way HAL will wait till the HAL pins are made before continuing on. │ │ │ │ │ 12.5.3.2. Custom Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load │ │ │ │ │ this from a terminal with: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1052 / 1278 │ │ │ │ │ │ │ │ │ │ halrun -I -f my_panel.hal │ │ │ │ │ │ │ │ │ │ Example HAL file loading a QtVCP panel │ │ │ │ │ # load realtime components │ │ │ │ │ @@ -46845,15 +46845,15 @@ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing │ │ │ │ │ to run the next HAL command. │ │ │ │ │ This is to ensure that the panel created HAL pins are actually done in case they are used in the │ │ │ │ │ rest of the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1053 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.4. Build A Simple Clean-sheet Custom Screen │ │ │ │ │ │ │ │ │ │ Figura 12.66: QtVCP Ugly custom screen │ │ │ │ │ 12.5.4.1. Overview │ │ │ │ │ @@ -46869,15 +46869,15 @@ │ │ │ │ │ │ │ │ │ │ Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the │ │ │ │ │ qtvcp_plugin.py in one of the folders that Qt Designer will search into. │ │ │ │ │ In a RIP version of LinuxCNC qtvcp_plugin.py will be: │ │ │ │ │ ’~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ For a Package installed version it should be: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1054 / 1278 │ │ │ │ │ │ │ │ │ │ ’usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py’ or │ │ │ │ │ ’usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ Make a symbolic link to the above file and move it to one of the places Qt Designer searches in. │ │ │ │ │ Qt Designer searches in these two place for links (pick one): │ │ │ │ │ @@ -46913,15 +46913,15 @@ │ │ │ │ │ │ │ │ │ │ We are going to make this window a specific non resizeable size: │ │ │ │ │ Set MainWindow Minimum and Maximum Size │ │ │ │ │ Grab the corner of the window and resize to an appropriate size, say 1000x600. │ │ │ │ │ Right click on the window and click set minimum size. │ │ │ │ │ Do it again and set maximum size. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1055 / 1278 │ │ │ │ │ │ │ │ │ │ Our sample widget will now not be resizable. │ │ │ │ │ Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main │ │ │ │ │ window. │ │ │ │ │ This widget doesn’t add anything visually but sets up some common options. │ │ │ │ │ @@ -46955,28 +46955,28 @@ │ │ │ │ │ Click the machine_on action checkbox you will see in the list of properties and values. │ │ │ │ │ The button will now control machine on/off. │ │ │ │ │ Do the same for all the other button with the addition of: │ │ │ │ │ With the Home button we must also change the joint_number property to -1. │ │ │ │ │ This tells the controller to home all the axes rather then a specific axis. │ │ │ │ │ With the Pause button: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ • Under the Indicated_PushButton heading check the indicator_option. │ │ │ │ │ • Under the QAbstactButton heading check checkable. │ │ │ │ │ │ │ │ │ │ 1056 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.67: Qt Designer: Selecting Pause Button’s Properties │ │ │ │ │ │ │ │ │ │ 1057 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1058 / 1278 │ │ │ │ │ │ │ │ │ │ Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder. │ │ │ │ │ We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler │ │ │ │ │ file to display it. │ │ │ │ │ 12.5.4.4. Handler file │ │ │ │ │ @@ -47009,15 +47009,15 @@ │ │ │ │ │ after the screen is built, │ │ │ │ │ after all the POSTGUI_HALFILEs are run. │ │ │ │ │ In our example there are no HAL pins to connect. │ │ │ │ │ │ │ │ │ │ 12.5.5. Handler File In Detail │ │ │ │ │ Handler files are used to create custom controls using Python. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.5.5.1. Overview │ │ │ │ │ Here is a sample handler file. │ │ │ │ │ It’s broken up in sections for ease of discussion. │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ @@ -47064,15 +47064,15 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ pass │ │ │ │ │ def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl): │ │ │ │ │ # when typing in MDI, we don’t want keybinding to call functions │ │ │ │ │ │ │ │ │ │ 1059 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1060 / 1278 │ │ │ │ │ │ │ │ │ │ # so we catch and process the events directly. │ │ │ │ │ # We do want ESC, F1 and F2 to call keybinding functions though │ │ │ │ │ if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2, │ │ │ │ │ QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5): │ │ │ │ │ @@ -47123,15 +47123,15 @@ │ │ │ │ │ ####################### │ │ │ │ │ # CALLBACKS FROM FORM # │ │ │ │ │ ####################### │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ # keyboard jogging from key binding calls │ │ │ │ │ # double the rate if fast is true │ │ │ │ │ def kb_jog(self, state, joint, direction, fast = False, linear = True): │ │ │ │ │ if not STATUS.is_man_mode() or not STATUS.machine_is_on(): │ │ │ │ │ return │ │ │ │ │ if linear: │ │ │ │ │ @@ -47180,15 +47180,15 @@ │ │ │ │ │ def on_keycall_ZPOS(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, 1, shift) │ │ │ │ │ def on_keycall_ZNEG(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, -1, shift) │ │ │ │ │ │ │ │ │ │ 1061 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1062 / 1278 │ │ │ │ │ │ │ │ │ │ def on_keycall_APOS(self,event,state,shift,cntrl): │ │ │ │ │ pass │ │ │ │ │ #self.kb_jog(state, 3, 1, shift, False) │ │ │ │ │ def on_keycall_ANEG(self,event,state,shift,cntrl): │ │ │ │ │ @@ -47223,15 +47223,15 @@ │ │ │ │ │ 12.5.5.5. INITIALIZE Section │ │ │ │ │ Like all Python libraries the +__init__+ function is called when the library is first instantiated. │ │ │ │ │ This is where you would set up defaults, as well as reference variables and global variables. │ │ │ │ │ The widget references are not available at this point. │ │ │ │ │ The variables halcomp, widgets and paths give access to QtVCP’s HAL component, widgets, and path │ │ │ │ │ info respectively. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1063 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.5.6. SPECIAL FUNCTIONS Section │ │ │ │ │ There are several special functions that QtVCP looks for in the handler file. │ │ │ │ │ If QtVCP finds these it will call them, if not it will silently ignore them. │ │ │ │ │ initialized__(self): │ │ │ │ │ @@ -47266,15 +47266,15 @@ │ │ │ │ │ The Linux system will not shutdown if using this function, you will have to do that yourself. │ │ │ │ │ QtVCP/LinuxCNC will terminate without a prompt once this function returns. │ │ │ │ │ closing_cleanup__(self): │ │ │ │ │ This function is called just before the screen closes. It can be used to do cleanup before closing. │ │ │ │ │ 12.5.5.7. STATUS CALLBACKS Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from STATUS definitions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1064 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.5.8. CALLBACKS FROM FORM Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from the widgets connected │ │ │ │ │ to the MainWindow in the Qt Designer editor. │ │ │ │ │ 12.5.5.9. GENERAL FUNCTIONS Section │ │ │ │ │ @@ -47305,15 +47305,15 @@ │ │ │ │ │ 12.5.6.1. Overview │ │ │ │ │ In the Qt Designer editor: │ │ │ │ │ You create user function slots │ │ │ │ │ You connect the slots to widgets using signals. │ │ │ │ │ In the handler file: │ │ │ │ │ You create the slot’s functions defined in Qt Designer. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1065 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.6.2. Using Qt Designer to add Slots │ │ │ │ │ When you have loaded your screen into Qt Designer, add a plain PushButton to the screen. │ │ │ │ │ You could change the name of the button to something interesting like test_button. │ │ │ │ │ There are two ways to edit connections - This is the graphical way. │ │ │ │ │ @@ -47329,15 +47329,15 @@ │ │ │ │ │ You can now edit a new slot name. │ │ │ │ │ Erase the default name slot() and change it to test_button() │ │ │ │ │ Press the OK button. │ │ │ │ │ You’ll be back to the Configure Connections dialog. │ │ │ │ │ Now you can select your new slot in the slot list. │ │ │ │ │ Then press OK and save the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1066 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.68: Qt Designer Signal/Slot Selection │ │ │ │ │ │ │ │ │ │ 12.5.6.3. Python Handler Changes │ │ │ │ │ Now you must add the function to the handler file. │ │ │ │ │ @@ -47354,15 +47354,15 @@ │ │ │ │ │ │ │ │ │ │ In fact it doesn’t matter where in the handler class you put the commands but by convention this is │ │ │ │ │ where to put it. │ │ │ │ │ Save the handler file. │ │ │ │ │ Now when you load your screen and press the button it should print the name of the button in the │ │ │ │ │ terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1067 / 1278 │ │ │ │ │ │ │ │ │ │ 12.5.7. More Information │ │ │ │ │ QtVCP Builtin Virtual Control Panels │ │ │ │ │ QtVCP Widgets │ │ │ │ │ QtVCP Libraries │ │ │ │ │ @@ -47379,28 +47379,28 @@ │ │ │ │ │ In a terminal type qtvcp list to see a list. │ │ │ │ │ 12.6.1.1. copy │ │ │ │ │ Used for copying QtVCP’s builtin Screens/VCP Panels/QtVismach code to a folder so one can │ │ │ │ │ customize it. │ │ │ │ │ In a terminal run: │ │ │ │ │ qtvcp copy │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1068 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.2. test_dial │ │ │ │ │ This panel has a dial that adjusts S32 and Float HAL output pins. │ │ │ │ │ The dial’s range can be adjusted from a drop down menu. │ │ │ │ │ The output can be scaled with the spinbox. │ │ │ │ │ A combobox can be used to automatically select and connect to a signal. │ │ │ │ │ loadusr qtvcp test_dial │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.70: QtVCP test_dial Panel - Test Dial VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.3. test_button │ │ │ │ │ This panel has a button that will set a HAL pin. │ │ │ │ │ The button can be selected as a momentary or a toggle button. │ │ │ │ │ The button’s indicator color can be adjusted from a drop down menu. │ │ │ │ │ @@ -47415,15 +47415,15 @@ │ │ │ │ │ The -o switch sets how many buttons the panel starts with. │ │ │ │ │ If loading directly from a terminal omit the loadusr. │ │ │ │ │ │ │ │ │ │ Figura 12.71: QtVCP test_button - Test Button VCP │ │ │ │ │ │ │ │ │ │ 1069 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1070 / 1278 │ │ │ │ │ │ │ │ │ │ 12.6.1.4. test_led │ │ │ │ │ This panel has an LED that can selected to watch HAL bit pins/signals. │ │ │ │ │ The LED’s color can be adjusted from a drop down menu. │ │ │ │ │ The text box and state can be output as speech if sound is selected. │ │ │ │ │ @@ -47439,24 +47439,24 @@ │ │ │ │ │ │ │ │ │ │ Figura 12.72: QtVCP test_dial Panel - Test LED VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.5. test_panel │ │ │ │ │ Collection of useful widgets for testing HAL component, including speech of LED state. │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.73: QtVCP test_panel - HAL Component Testing Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.6. cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ 1071 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1072 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel │ │ │ │ │ Usage Add these lines to the INI file: │ │ │ │ │ [DISPLAY] │ │ │ │ │ EMBED_TAB_NAME = cam_align │ │ │ │ │ @@ -47470,15 +47470,15 @@ │ │ │ │ │ You can add window width and height size, rotation increment, and camera number from the INI with │ │ │ │ │ -o options. │ │ │ │ │ EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size ←=400,400 -o rotincr=.2 -o camnumber=0 cam_align │ │ │ │ │ │ │ │ │ │ Mouse controls: │ │ │ │ │ left mouse single click - increase cross hair rotation one increment │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1073 / 1278 │ │ │ │ │ │ │ │ │ │ right mouse single click - decrease cross hair rotation one increment │ │ │ │ │ middle mouse single click - cycle through rotation increments │ │ │ │ │ left mouse hold and scroll - scroll camera zoom │ │ │ │ │ right mouse hold and scroll - scroll cross hair rotation angle │ │ │ │ │ @@ -47496,83 +47496,83 @@ │ │ │ │ │ Note the comma and text after is optional - it will override the default button text. │ │ │ │ │ These buttons are QtVCP action buttons and follow those rules. │ │ │ │ │ 12.6.1.7. sim_panel │ │ │ │ │ Small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations │ │ │ │ │ loadusr qtvcp sim_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1074 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing. │ │ │ │ │ │ │ │ │ │ 12.6.1.8. tool_dialog │ │ │ │ │ Manual tool change dialog that gives tool description. │ │ │ │ │ loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ -o notify_on - use desktop notify dialogs instead of QtVCP native ones. │ │ │ │ │ -o audio_on - play sound on tool change │ │ │ │ │ -o speak_on - speak announcement of tool change │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.76: QtVCP tool_dialog - Manual Tool Change Dialog │ │ │ │ │ │ │ │ │ │ 12.6.2. vismach 3D Simulation Panels │ │ │ │ │ These panels are prebuilt simulation of common machine types. │ │ │ │ │ These are also embed-able in other screens such as AXIS or GMOCCAPY. │ │ │ │ │ 12.6.2.1. QtVCP vismach_mill_xyz │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_xyz │ │ │ │ │ │ │ │ │ │ 1075 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.2. QtVCP vismach_scara │ │ │ │ │ 3D OpenGL view of a SCARA based milling machine. │ │ │ │ │ loadusr qtvcp vismach_scara │ │ │ │ │ │ │ │ │ │ 1076 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.3. QtVCP vismach_millturn │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle. │ │ │ │ │ loadusr qtvcp vismach_millturn │ │ │ │ │ │ │ │ │ │ 1077 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.4. QtVCP vismach_mill_5axis_gantry │ │ │ │ │ 3D OpenGL view of a 5-Axis gantry type milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_5axis_gantry │ │ │ │ │ │ │ │ │ │ 1078 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1079 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.5. QtVCP vismach_fanuc_200f │ │ │ │ │ 3D openGL view of a 6 joint robotic arm. │ │ │ │ │ loadusr qtvcp vismach_fanuc_200f │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1080 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm │ │ │ │ │ │ │ │ │ │ 12.6.3. Custom Virtual Control Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ @@ -47600,15 +47600,15 @@ │ │ │ │ │ # connect pins │ │ │ │ │ net bit-input1 │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_1 │ │ │ │ │ │ │ │ │ │ classicladder.0.in-00 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ net bit-hide │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_4 │ │ │ │ │ │ │ │ │ │ classicladder.0.hide_gui │ │ │ │ │ │ │ │ │ │ @@ -47658,15 +47658,15 @@ │ │ │ │ │ Allows one to embed a program into the widget. │ │ │ │ │ Only programs that utilize the xembed protocol will work such as: │ │ │ │ │ GladeVCP virtual control panels │ │ │ │ │ Onboard virtual keyboard │ │ │ │ │ QtVCP virtual control panels │ │ │ │ │ mplayer video player │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1082 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.1.2. Slider - HAL Pin Value Adjusting Widget │ │ │ │ │ Allows one to adjust a HAL pin value using a sliding pointer. │ │ │ │ │ 12.7.1.3. LED - Indicator Widget │ │ │ │ │ │ │ │ │ │ @@ -47696,15 +47696,15 @@ │ │ │ │ │ qproperty-flashRate: 150; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ 12.7.1.4. CheckBox Widget │ │ │ │ │ This widget allows the user to check a box to set a HAL pin true or false. │ │ │ │ │ It is based on PyQt’s QCheckButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1083 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.1.5. RadioButton Widget │ │ │ │ │ This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group │ │ │ │ │ can be true at a time. │ │ │ │ │ It is based on PyQt’s QRadioButton. │ │ │ │ │ @@ -47725,15 +47725,15 @@ │ │ │ │ │ In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings │ │ │ │ │ on the gauge face. │ │ │ │ │ It should be set to a number that ensures the text readings around the gauge face are readable. │ │ │ │ │ The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to the │ │ │ │ │ threshold point. │ │ │ │ │ It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1084 / 1278 │ │ │ │ │ │ │ │ │ │ minimum reading, which is 0. │ │ │ │ │ It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge. │ │ │ │ │ threshold:: The threshold is the transition point between the zones. │ │ │ │ │ It should be set to a value between 0 and the maximum value. │ │ │ │ │ @@ -47751,15 +47751,15 @@ │ │ │ │ │ to a value between 0 and the maximum value. │ │ │ │ │ 12.7.1.7. HALPad - HAL Buttons Joypad │ │ │ │ │ │ │ │ │ │ Figura 12.84: QtVCP HALPad: HAL Buttons Joypad │ │ │ │ │ This widget looks and acts like a 5 buttons D-pad, with an LED ring. │ │ │ │ │ Each button has an selectable type (Bit, S32 or Float) output HAL pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1085 / 1278 │ │ │ │ │ │ │ │ │ │ The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin. │ │ │ │ │ HALPad ENUMS There are enumerated constants used: │ │ │ │ │ To reference indicator positions: │ │ │ │ │ • NONE │ │ │ │ │ @@ -47797,15 +47797,15 @@ │ │ │ │ │ left_text , right_text , center_text , top_text , bottom_text │ │ │ │ │ A text string to be displayed in the described button location. │ │ │ │ │ If left blank an image can be designated to be displayed. │ │ │ │ │ true_color , false_color │ │ │ │ │ Color selection for the center LED ring to be displayed when the .light.center HAL │ │ │ │ │ pin is True or False. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1086 / 1278 │ │ │ │ │ │ │ │ │ │ text_color │ │ │ │ │ Color selection for the button text. │ │ │ │ │ text_font │ │ │ │ │ Font selection for the button text. │ │ │ │ │ @@ -47820,15 +47820,15 @@ │ │ │ │ │ As an option it can be a toggle button. │ │ │ │ │ For a LED Indicator Option, see Sección 12.7.5.1[IndicatedPushButton] below for more info. │ │ │ │ │ It also has other options. │ │ │ │ │ It is based on PyQt’s QPushButton. │ │ │ │ │ 12.7.1.9. focusOverlay - Focus Overlay Widget │ │ │ │ │ This widget places a colored overlay over the screen, usually while a dialog is showing. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figura 12.85: Focus overlay example for confirm close prompt │ │ │ │ │ Used to create a focused feel and to draw attention to critical information. │ │ │ │ │ It can also show a translucent image. │ │ │ │ │ It can also display message text and buttons. │ │ │ │ │ This widget can be controlled with STATUS messages. │ │ │ │ │ 12.7.1.10. gridLayout - Grid Layout Widget │ │ │ │ │ @@ -47836,15 +47836,15 @@ │ │ │ │ │ Disabled widgets typically have a different color and do not respond to actions. │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ 12.7.1.11. hal_label - HAL Label Widget │ │ │ │ │ This widget displays values sent to it. │ │ │ │ │ │ │ │ │ │ 1087 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1088 / 1278 │ │ │ │ │ │ │ │ │ │ Values can be sent from: │ │ │ │ │ HAL pins │ │ │ │ │ The input pin can be selected as Bit, S32, Float or no pin selected │ │ │ │ │ Programmatically │ │ │ │ │ @@ -47879,15 +47879,15 @@ │ │ │ │ │ When using floats you can set a formatting string. │ │ │ │ │ You must set the digitCount property to an appropriate setting to display the largest number. │ │ │ │ │ Properties │ │ │ │ │ pin_name │ │ │ │ │ Option string to be used as the HAL pin name. │ │ │ │ │ If set to an empty string the widget name will be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1089 / 1278 │ │ │ │ │ │ │ │ │ │ bit_pin_type │ │ │ │ │ Selects the input pin as type BIT. │ │ │ │ │ s32_pin_type │ │ │ │ │ Selects the input pin as type S32. │ │ │ │ │ @@ -47918,15 +47918,15 @@ │ │ │ │ │ a large view of a widget and a smaller multi widget view. │ │ │ │ │ It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it │ │ │ │ │ in its page with a different layout than it originally had. │ │ │ │ │ The original widget must be in a layout for switcher to put it back. │ │ │ │ │ In Qt Designer you will: │ │ │ │ │ Add the WidgetSwitcher widget on screen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1090 / 1278 │ │ │ │ │ │ │ │ │ │ Right click the WidgetSwitcher and add a page. │ │ │ │ │ Populate it with the widgets/layouts you wish to see in a default form. │ │ │ │ │ Add as many pages as there are views to switch to. │ │ │ │ │ On each page, add a layout widget. │ │ │ │ │ @@ -47959,15 +47959,15 @@ │ │ │ │ │ Estop , Machine On , Auto , mdi , manual , run , run_from_line status │ │ │ │ │ Gets line number from STATUS message gcode-line-selected. │ │ │ │ │ run_from_line slot │ │ │ │ │ Gets line number from Qt Designer int/str slot setRunFromLine. │ │ │ │ │ abort , pause , load dialog │ │ │ │ │ Requires a dialog widget present. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1091 / 1278 │ │ │ │ │ │ │ │ │ │ Camview dialog │ │ │ │ │ Requires camview dialog widget present. │ │ │ │ │ origin offset dialog │ │ │ │ │ Requires origin offset dialog widget present. │ │ │ │ │ @@ -48008,15 +48008,15 @@ │ │ │ │ │ spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change │ │ │ │ │ Set view_type_string. │ │ │ │ │ limits override , flood , mist , block delete , optional stop , mdi command │ │ │ │ │ Set command_string, i.e.,calls a hard coded MDI command │ │ │ │ │ INI mdi number │ │ │ │ │ Set ini_mdi_number, i.e., calls an INI based MDI command │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1092 / 1278 │ │ │ │ │ │ │ │ │ │ dro absolute , dro relative , dro dtg , exit screen │ │ │ │ │ Closes down LinuxCNC │ │ │ │ │ Override limits │ │ │ │ │ Temporarily override hard limits │ │ │ │ │ @@ -48055,15 +48055,15 @@ │ │ │ │ │ Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines. │ │ │ │ │ The commands are separated by the ;. │ │ │ │ │ The label is set after the comma, and \n symbol adds a line break. │ │ │ │ │ [MDI_COMMAND_LIST] │ │ │ │ │ MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero │ │ │ │ │ MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\nMachn\nZero │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1093 / 1278 │ │ │ │ │ │ │ │ │ │ Action buttons are subclassed from Sección 12.7.5.1[IndicatedPushButton]. See the following sections for more information about: │ │ │ │ │ LED Indicator option │ │ │ │ │ Enabled on State │ │ │ │ │ Text Changes On State │ │ │ │ │ @@ -48096,15 +48096,15 @@ │ │ │ │ │ Divide the axis by 2 │ │ │ │ │ Set the axis arbitrarily │ │ │ │ │ Reset the axis to the last number recorded │ │ │ │ │ You select the axis by setting the joint number. │ │ │ │ │ You can select a halpin option that is set true when the axis is selected. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1094 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.5. CamView - Workpiece Alignment and Origin Setting Widget │ │ │ │ │ This widget displays a image from a web camera. │ │ │ │ │ It overlays an adjustable circular and cross hair target over the image. │ │ │ │ │ CamView was built with precise visual positioning in mind. │ │ │ │ │ @@ -48144,15 +48144,15 @@ │ │ │ │ │ Here is how you specify a particular widget by its objectName in Qt Designer: │ │ │ │ │ DROLabel #dr0_x_axis [isHomed=false] { │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1095 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.7. GcodeDisplay - G-code Text Display Widget │ │ │ │ │ This displays G-code in text form, highlighting the currently running line. │ │ │ │ │ This can also display: │ │ │ │ │ MDI history when LinuxCNC is in MDI mode. │ │ │ │ │ @@ -48194,15 +48194,15 @@ │ │ │ │ │ styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including │ │ │ │ │ () or anything after ; (when used outside of parenthesis) with the exception of the note below) │ │ │ │ │ styleColor2 = G-code: G and the digits after │ │ │ │ │ styleColor3 = M-code: M and the digits after │ │ │ │ │ styleColor4 = Axis: XYZABCUVW │ │ │ │ │ styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1096 / 1278 │ │ │ │ │ │ │ │ │ │ styleColor6 = AxisValue: Values following XYZABCUVW │ │ │ │ │ styleColor7 = OtherValue: Values following EFHIJKDQLRPST$ │ │ │ │ │ nota │ │ │ │ │ For comments, the ”OtherValue” color (Color 5) can be used to highlight ”print,” ”debug,” ”msg,” │ │ │ │ │ @@ -48215,15 +48215,15 @@ │ │ │ │ │ ”style name, size, -1, 0, bold setting (0-99), italics (0-1), │ │ │ │ │ underline (0-1),0,0,0” │ │ │ │ │ It is based on PyQt’s QsciScintilla. │ │ │ │ │ 12.7.2.8. GcodeEditor - G-code Program Editor Widget │ │ │ │ │ This is an extension of the GcodeDisplay widget that adds editing convenience. │ │ │ │ │ It is based on PyQt’s QWidget which incorporates GcodeDisplay widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1097 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.9. GCodeGraphics - G-code Graphic Backplot Widget │ │ │ │ │ │ │ │ │ │ Figura 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget │ │ │ │ │ This displays the current G-code in a graphical form. │ │ │ │ │ @@ -48239,15 +48239,15 @@ │ │ │ │ │ +_dro+ (bool) │ │ │ │ │ Determines whether or not to show the DRO. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dro: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ +_dtg+ (bool) │ │ │ │ │ Determine whether or not to show the Distance To Go. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dtg: False; │ │ │ │ │ } │ │ │ │ │ @@ -48296,15 +48296,15 @@ │ │ │ │ │ │ │ │ │ │ +_use_gradient_background+ (bool) │ │ │ │ │ Determines whether or not use a gradient background by default. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ │ │ │ │ │ 1098 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1099 / 1278 │ │ │ │ │ │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_use_gradient_background: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ @@ -48375,15 +48375,15 @@ │ │ │ │ │ Middle │ │ │ │ │ Middle │ │ │ │ │ Left │ │ │ │ │ │ │ │ │ │ Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some │ │ │ │ │ lathes and have no rotate button assigned. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Mode │ │ │ │ │ 6 │ │ │ │ │ 7 │ │ │ │ │ 8 │ │ │ │ │ 9 │ │ │ │ │ 10 │ │ │ │ │ @@ -48440,15 +48440,15 @@ │ │ │ │ │ inhibit-selection-off │ │ │ │ │ dimensions-on │ │ │ │ │ dimensions-off │ │ │ │ │ grid-size │ │ │ │ │ record-view │ │ │ │ │ set-recorded-view │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ P │ │ │ │ │ X │ │ │ │ │ Y │ │ │ │ │ Y2 │ │ │ │ │ Z │ │ │ │ │ Z2 │ │ │ │ │ @@ -48478,15 +48478,15 @@ │ │ │ │ │ This will be the text set when the option is False. │ │ │ │ │ You can use Qt rich text code for different fonts/colors etc. │ │ │ │ │ Typical template for metric mode in false state, might be: Imperial Mode. │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ 1101 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1102 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.11. StatusLabel - Controller Variables State Label Display Widget │ │ │ │ │ This will display a label based on selectable status of the machine controller. │ │ │ │ │ You can change how the status will be displayed by substituting python formatting code in the text │ │ │ │ │ template. You can also use rich text for different fonts/colors etc. │ │ │ │ │ @@ -48525,15 +48525,15 @@ │ │ │ │ │ jograte_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog Rate. │ │ │ │ │ jogincr_status │ │ │ │ │ Shows the current QtVCP based Jog increment. │ │ │ │ │ jogincr_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1103 / 1278 │ │ │ │ │ │ │ │ │ │ machine_state_status │ │ │ │ │ Shows the current machine interpreter state using the text described from the machine_state_list. │ │ │ │ │ The interpreter states are: │ │ │ │ │ Estopped │ │ │ │ │ @@ -48572,15 +48572,15 @@ │ │ │ │ │ tool_number_status │ │ │ │ │ Returns the tool number of the current loaded tool. │ │ │ │ │ tool_offset_status │ │ │ │ │ Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.). │ │ │ │ │ user_system_status │ │ │ │ │ Shows the active user coordinate system (G5x setting). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1104 / 1278 │ │ │ │ │ │ │ │ │ │ Other Properties │ │ │ │ │ index_number │ │ │ │ │ Integer that specifies the tool status index to display. │ │ │ │ │ state_label_list │ │ │ │ │ @@ -48609,15 +48609,15 @@ │ │ │ │ │ Toggles between 2 images: axis not homed, axis homed. │ │ │ │ │ *watch_all_homed │ │ │ │ │ Would toggle between 2 images: not all homed, all homed. │ │ │ │ │ *watch_hard_limits │ │ │ │ │ Would toggle between 2 images or one per joint. │ │ │ │ │ Here is an example of using it to display an icon of Z axis homing state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1105 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher │ │ │ │ │ In the properties section notice that: │ │ │ │ │ watch_axis_homed is checked │ │ │ │ │ axis_letter is set to Z │ │ │ │ │ @@ -48630,15 +48630,15 @@ │ │ │ │ │ │ │ │ │ │ Right click the image name and you should see Copy path. │ │ │ │ │ Click Copy path. │ │ │ │ │ Now double click the image list property so the dialog shows. │ │ │ │ │ Click the New button. │ │ │ │ │ Paste the image path in the entry box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1106 / 1278 │ │ │ │ │ │ │ │ │ │ Do that again for the next image. │ │ │ │ │ Use a clear image to represent a hidden icon. │ │ │ │ │ You can test the images display from the image list by changing the image number. In this case 0 is │ │ │ │ │ unhomed and 1 would be homed. │ │ │ │ │ @@ -48672,15 +48672,15 @@ │ │ │ │ │ notify_option │ │ │ │ │ Hooking into the desktop notification bubbles for error and messages. │ │ │ │ │ notify_max_messages │ │ │ │ │ Number of messages shown on screen at one time. │ │ │ │ │ catch_close_option │ │ │ │ │ Catching the close event to pop up a ’are you sure’ prompt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1107 / 1278 │ │ │ │ │ │ │ │ │ │ close_overlay_color │ │ │ │ │ Color of transparent layer shown when quitting. │ │ │ │ │ catch_error_option │ │ │ │ │ Monitoring of the LinuxCNC error channel. │ │ │ │ │ @@ -48721,15 +48721,15 @@ │ │ │ │ │ tool_overlay_color │ │ │ │ │ Color of transparent layer shown when the tool dialog is shown. │ │ │ │ │ ToolUseDesktopNotify │ │ │ │ │ Option to use desktop notify dialogs for manual tool change dialog. │ │ │ │ │ ToolFrameless │ │ │ │ │ Frameless dialogs can not be easily moved by users. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1108 / 1278 │ │ │ │ │ │ │ │ │ │ fileDialog_option │ │ │ │ │ Sets up the file choosing dialog. │ │ │ │ │ file_overlay_color │ │ │ │ │ Color of transparent layer shown when the file dialog is shown. │ │ │ │ │ @@ -48767,15 +48767,15 @@ │ │ │ │ │ Color of transparent layer shown when the machineLog dialog is shown. │ │ │ │ │ runFromLineDialog_option │ │ │ │ │ Sets up a dialog to display starting options when starting machine execution from a arbitrary │ │ │ │ │ line. │ │ │ │ │ runFromLine_overlay_color │ │ │ │ │ Color of transparent layer shown when the runFromLine dialog is shown. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1109 / 1278 │ │ │ │ │ │ │ │ │ │ Setting Properties Programmatically The screen designer chooses the default settings of the │ │ │ │ │ screenOptions widget. │ │ │ │ │ Once chosen, most won’t ever need to be changed. But if needed, some can be changed in the handler │ │ │ │ │ file or in stylesheets. │ │ │ │ │ @@ -48818,15 +48818,15 @@ │ │ │ │ │ Turns all sounds on or off. │ │ │ │ │ [MCH_MSG_OPTIONS] │ │ │ │ │ mchnMsg_play_sound (bool) │ │ │ │ │ To play alert sound when dialog pops. │ │ │ │ │ mchnMsg_speak_errors (bool) │ │ │ │ │ To use Espeak to speak error messages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1110 / 1278 │ │ │ │ │ │ │ │ │ │ mchnMsg_speak_text (bool) │ │ │ │ │ To use Espeak to speak all other messages. │ │ │ │ │ mchnMsg_sound_type (str) │ │ │ │ │ Sound to play when messages displayed. See notes below. │ │ │ │ │ @@ -48866,15 +48866,15 @@ │ │ │ │ │ • DONE │ │ │ │ │ • ATTENTION │ │ │ │ │ • RING │ │ │ │ │ • LOGIN │ │ │ │ │ • LOGOUT │ │ │ │ │ • BELL │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1111 / 1278 │ │ │ │ │ │ │ │ │ │ These Sound options require python3-gst1.0 installed. │ │ │ │ │ Audio Files │ │ │ │ │ You can also specify a file path to an arbitrary audio file. │ │ │ │ │ You can use ~ in path to substitute for the user home file path. │ │ │ │ │ @@ -48908,15 +48908,15 @@ │ │ │ │ │ jograte_angular_rate │ │ │ │ │ Selects a angular jograte slider. │ │ │ │ │ max_velocity_rate │ │ │ │ │ Selects a maximum velocity rate slider. │ │ │ │ │ alertState │ │ │ │ │ String to define style change: read-only, under, over and normal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1112 / 1278 │ │ │ │ │ │ │ │ │ │ alertUnder │ │ │ │ │ Sets the float value that signals the stylesheet for under warning. │ │ │ │ │ alertOver │ │ │ │ │ Sets the float value that signals the stylesheet for over warning. │ │ │ │ │ @@ -48952,15 +48952,15 @@ │ │ │ │ │ diameter │ │ │ │ │ Diameter of the LED. │ │ │ │ │ color │ │ │ │ │ Color of the LED when on. │ │ │ │ │ off_color │ │ │ │ │ Color of the LED when off. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1113 / 1278 │ │ │ │ │ │ │ │ │ │ alignment │ │ │ │ │ Qt Alignment hint. │ │ │ │ │ state │ │ │ │ │ Current state of LED (for testing in Qt Designer). │ │ │ │ │ @@ -48997,15 +48997,15 @@ │ │ │ │ │ Rapid override rate │ │ │ │ │ It is based on PyQt’s QProgressBar. │ │ │ │ │ 12.7.2.19. SystemToolButton - User System Selection Widget │ │ │ │ │ This widget allows you to manually select a G5x user system by pressing and holding. │ │ │ │ │ If you don’t set the button text it will automatically update to the current system. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1114 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.20. MacroTab - Special Macros Widget │ │ │ │ │ │ │ │ │ │ Figura 12.88: QtVCP MacroTab: Special Macros Widget │ │ │ │ │ This widget allows a user to select and adjust special macro programs for doing small jobs. │ │ │ │ │ @@ -49023,15 +49023,15 @@ │ │ │ │ │ ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros │ │ │ │ │ │ │ │ │ │ MACROCOMMAND This is the first line in the O-word file. │ │ │ │ │ It is a comma separated list of text to display above an entry. │ │ │ │ │ There will be one for every variable required in the O-word function. │ │ │ │ │ If the macro does not require variables, leave it empty: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1115 / 1278 │ │ │ │ │ │ │ │ │ │ ; MACROCOMMAND= │ │ │ │ │ │ │ │ │ │ MACRODEFAULTS This must be the second line in the O-word file. │ │ │ │ │ It is a comma separated list of the default values for each variable in the O-word function. │ │ │ │ │ @@ -49068,15 +49068,15 @@ │ │ │ │ │ MACROOPTIONS This optional line must be the fourth line in the O-word file. │ │ │ │ │ It is a comma separated list of keyword and data: │ │ │ │ │ LOAD:yes │ │ │ │ │ Shows a load button. │ │ │ │ │ SAVE:yes │ │ │ │ │ Shows a save button. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1116 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.21. MDILine - MDI Commands Line Entry Widget │ │ │ │ │ One can enter MDI commands here. │ │ │ │ │ A popup keyboard is available. │ │ │ │ │ Embedded Commands There are also embedded commands available from this widget. │ │ │ │ │ @@ -49113,15 +49113,15 @@ │ │ │ │ │ Disconnects a pin from a signal. │ │ │ │ │ An error will result if the pin does not exist. │ │ │ │ │ Running LinuxCNC from terminal may help determine the root cause as error messages from │ │ │ │ │ hal_lib.c will be displayed there. │ │ │ │ │ Syntax: unlinkp │ │ │ │ │ Example: unlinkp motion.jog-stop │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1117 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ The MDILine function spindle_inhibit can be used by a GUI’s handler file to inhibit M3, M4, and M5 │ │ │ │ │ spindle commands if necessary. │ │ │ │ │ │ │ │ │ │ @@ -49133,15 +49133,15 @@ │ │ │ │ │ default): │ │ │ │ │ MDI_HISTORY_FILE = ’~/.axis_mdi_history’ │ │ │ │ │ │ │ │ │ │ 12.7.2.23. MDITouchy - Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ Figura 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1118 / 1278 │ │ │ │ │ │ │ │ │ │ This widget displays buttons and entry lines to use for entering MDI commands. │ │ │ │ │ Based on LinuxCNC’s Touchy screen’s MDI entry process, its large buttons are most useful for touch │ │ │ │ │ screens. │ │ │ │ │ To use MDITouchy: │ │ │ │ │ @@ -49180,15 +49180,15 @@ │ │ │ │ │ G90 │ │ │ │ │ O endsub │ │ │ │ │ │ │ │ │ │ Notice the name of the sub matches the file name and macro name exactly, including case. │ │ │ │ │ When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc │ │ │ │ │ and yinc in our example). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1119 / 1278 │ │ │ │ │ │ │ │ │ │ These are passed to the macro as positional parameters: #1, #2… #N respectively. │ │ │ │ │ Parameters you leave empty are passed as value 0. │ │ │ │ │ If there are several different macros, press the Macro button repeatedly to cycle through them. │ │ │ │ │ In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0 │ │ │ │ │ @@ -49201,15 +49201,15 @@ │ │ │ │ │ Figura 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget │ │ │ │ │ This widget allows one to visualize and modify User System Origin offsets directly. │ │ │ │ │ It will update LinuxCNC’s Parameter file for changes made or found. │ │ │ │ │ The settings can only be changed in LinuxCNC after homing and when the motion controller is idle. │ │ │ │ │ The display and entry will change between metric and imperial, based on LinuxCNC’s current G20 / │ │ │ │ │ G21 setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1120 / 1278 │ │ │ │ │ │ │ │ │ │ The current in-use user system will be highlighted. │ │ │ │ │ Extra actions can be integrated to manipulate settings. │ │ │ │ │ These actions depend on extra code added either to a combined widget, like originoffsetview dialog, │ │ │ │ │ or the screens handler code. │ │ │ │ │ @@ -49248,15 +49248,15 @@ │ │ │ │ │ It can selectably react to: │ │ │ │ │ Machine on │ │ │ │ │ Interpreter idle │ │ │ │ │ E-stop off │ │ │ │ │ All-homed │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.26. MachineLog - Machine Events Journal Display Widget │ │ │ │ │ FIXME MachineLog documentation │ │ │ │ │ 12.7.2.27. JointEnableWidget - FIXME │ │ │ │ │ FIXME JointEnableWidget documentation │ │ │ │ │ 12.7.2.28. StatusImageSwitcher - Controller Status Image Switching Widget │ │ │ │ │ This widget will display images based on LinuxCNC status. │ │ │ │ │ @@ -49265,15 +49265,15 @@ │ │ │ │ │ the state of all homed, │ │ │ │ │ the state of a certain axis homed, │ │ │ │ │ the state of hard limits. │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ │ │ │ │ │ 1121 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1122 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.29. FileManager - File Loading Selector Widget │ │ │ │ │ │ │ │ │ │ Figura 12.91: QtVCP FileManager: File Loading Selector Widget │ │ │ │ │ This widget is used to select files to load. │ │ │ │ │ @@ -49286,15 +49286,15 @@ │ │ │ │ │ if temp[1]: │ │ │ │ │ print(’Is a file’) │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ 12.7.2.30. RadioAxisSelector - FIXME │ │ │ │ │ FIXME RadioAxisSelector documentation │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1123 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.31. ToolOffsetView - Tools Offsets View And Edit Widget │ │ │ │ │ │ │ │ │ │ Figura 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget │ │ │ │ │ This widget displays and allows one to modify tools offsets. │ │ │ │ │ @@ -49318,15 +49318,15 @@ │ │ │ │ │ Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or │ │ │ │ │ (if appropriate) in stylesheets: │ │ │ │ │ dialog_code_string │ │ │ │ │ Sets which dialog will pop up with numerical entry. │ │ │ │ │ test_dialog_code_string │ │ │ │ │ Sets which dialog will pop up with text entry. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1124 / 1278 │ │ │ │ │ │ │ │ │ │ metric_template │ │ │ │ │ Metric numerical data format. │ │ │ │ │ imperial_template │ │ │ │ │ Imperial numerical data format. │ │ │ │ │ @@ -49355,24 +49355,24 @@ │ │ │ │ │ Uncheck all selected tools. │ │ │ │ │ Example for handler file executing aforementioned functions. │ │ │ │ │ self.w.tooloffsetview.add_tool() │ │ │ │ │ self.w.tooloffsetview.delete_tools() │ │ │ │ │ toolList = self.w.tooloffsetview.get_checked_list() │ │ │ │ │ self.w.tooloffsetview.set_all_unchecked() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.32. BasicProbe - Simple Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figura 12.93: QtVCP BasicProbe: Simple Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ │ │ │ │ │ 1125 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1126 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.2.33. VersaProbe - Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figura 12.94: QtVCP VersaProbe: Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ @@ -49390,15 +49390,15 @@ │ │ │ │ │ │ │ │ │ │ Add a function to call a dialog: │ │ │ │ │ This function must build a message dict to send to the dialog. │ │ │ │ │ This message will be passed back in the general message with the addition of the return variable. │ │ │ │ │ It is possible to add extra user information to the message. The dialog will ignore these and pass │ │ │ │ │ them back. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1127 / 1278 │ │ │ │ │ │ │ │ │ │ NAME │ │ │ │ │ Launches code name of dialog to show. │ │ │ │ │ ID │ │ │ │ │ A unique id so we process only a dialog that we requested. │ │ │ │ │ @@ -49439,15 +49439,15 @@ │ │ │ │ │ TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME │ │ │ │ │ Not implemented yet. │ │ │ │ │ FOCUSTEXT (overlay text|None) │ │ │ │ │ Text to display if focus overlay is used. Use None for no text. │ │ │ │ │ FOCUSCOLOR (QColor(_R, G, B, A_)) │ │ │ │ │ Color to use if focus overlay is used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1128 / 1278 │ │ │ │ │ │ │ │ │ │ PLAYALERT │ │ │ │ │ Sound to play if sound is available, i.e., SPEAK . │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is MESSAGE. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ @@ -49457,15 +49457,15 @@ │ │ │ │ │ This is used as a manual tool change prompt. │ │ │ │ │ It has HAL pins to connect to the machine controller. The pins are named the same as the original │ │ │ │ │ AXIS manual tool prompt and works the same. │ │ │ │ │ The tool change dialog can only be launched by HAL pins. │ │ │ │ │ If there is a Focus Overlay widget present, it will signal it to display. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1129 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.3.3. FileDialog - Load and Save File Chooser Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.96: QtVCP FileDialog: Load and Save File Chooser Widget │ │ │ │ │ This is used to load G-code files. │ │ │ │ │ @@ -49481,15 +49481,15 @@ │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ } │ │ │ │ │ ACTION.CALL_DIALOG(mess) │ │ │ │ │ │ │ │ │ │ And for a save dialog │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1130 / 1278 │ │ │ │ │ │ │ │ │ │ mess = {’NAME’:’SAVE’,’ID’:’_MY_DIALOG_’, │ │ │ │ │ ’TITLE’:’Save Some text File’, │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ @@ -49501,15 +49501,15 @@ │ │ │ │ │ │ │ │ │ │ Figura 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget │ │ │ │ │ This widget allows one to modify User System origin offsets directly in a dialog form. │ │ │ │ │ If there is an Focus Overlay widget present, it will signal it to display. │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is ORIGINOFFSET. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1131 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.3.5. ToolOffsetDialog - Tool Offset Setting Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget │ │ │ │ │ This widget allows one to modify Tool offsets directly in a dialog form. │ │ │ │ │ @@ -49529,61 +49529,61 @@ │ │ │ │ │ 12.7.3.8. EntryDialog - Edit Line Dialog Widget │ │ │ │ │ This is a dialog to display an edit line for information entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is ENTRY. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1132 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.3.9. CalculatorDialog - Calculator Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget │ │ │ │ │ This is a dialog to display a calculator for numeric entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is CALCULATOR. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.3.10. RunFromLine - Run-From-Line Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget │ │ │ │ │ Dialog to preset spindle settings before running a program from a specific line. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 1133 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1134 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.3.11. VersaProbeDialog - Part Touch Probing Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget │ │ │ │ │ This is a dialog to display a part probing screen based on Verser Probe v2. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1135 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.3.12. MachineLogDialog - Machine and Debugging Logs Dialog Widget │ │ │ │ │ │ │ │ │ │ Figura 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget │ │ │ │ │ This is a dialog to display the machine log and QtVCP’s debugging log. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 12.7.4. Other Widgets │ │ │ │ │ Other available widgets: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1136 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.4.1. NurbsEditor - NURBS Editing Widget │ │ │ │ │ │ │ │ │ │ Figura 12.103: QtVCP NurbsEditor: NURBS Editing Widget │ │ │ │ │ The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert │ │ │ │ │ @@ -49592,15 +49592,15 @@ │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ 12.7.4.2. JoyPad - 5 button D-pad Widget │ │ │ │ │ It is the base class for the HALPad widget. │ │ │ │ │ This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring. │ │ │ │ │ You can put text or icons in each of the button positions. │ │ │ │ │ You can connect to output signals when the buttons are pressed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1137 / 1278 │ │ │ │ │ │ │ │ │ │ There are also input slots to change the color of the indicator(s). │ │ │ │ │ ENUMS There are enumerated constants used to reference indicator positions. │ │ │ │ │ They are used in Qt Designer editor’s property editor or in Python code. │ │ │ │ │ NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A │ │ │ │ │ @@ -49637,15 +49637,15 @@ │ │ │ │ │ The set_highlight() function must be used prior to set the indicator to use. │ │ │ │ │ Signals These signals will be sent when buttons are pressed. │ │ │ │ │ They can be connected to in Qt Designer editor or Python code. │ │ │ │ │ The first two output a string that indicates the button pressed: │ │ │ │ │ │ │ │ │ │ joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1138 / 1278 │ │ │ │ │ │ │ │ │ │ They are based on PyQt’s Signal (QtCore.pyqtSignal()) │ │ │ │ │ Slots Slots can be connected to in Qt Designer editor or Python code: │ │ │ │ │ set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_) │ │ │ │ │ │ │ │ │ │ @@ -49681,15 +49681,15 @@ │ │ │ │ │ self.w.joypadename.setProperty(’true_color’,’green’) │ │ │ │ │ self.w.joypadename.setProperty(’false_color’,’red’) │ │ │ │ │ │ │ │ │ │ 12.7.5. BaseClass/Mixin Widgets │ │ │ │ │ These widgets are used combine different properties and behaviours into other widgets. │ │ │ │ │ You will see them as a collapsible header in the Qt Designer properties column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1139 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.5.1. IndicatedPushButtons │ │ │ │ │ This class modifies QPushButton behaviour. │ │ │ │ │ indicator_option puts a LED on the top of the button. │ │ │ │ │ │ │ │ │ │ @@ -49719,15 +49719,15 @@ │ │ │ │ │ │ │ │ │ │ Options IndicatedPushButton have exclusive options: │ │ │ │ │ indicator_HAL_pin_option │ │ │ │ │ Adds a halpin, named -led that controls the button indicator state. │ │ │ │ │ indicator_status_option │ │ │ │ │ Makes the LED indicate the state of these selectable LinuxCNC status: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1140 / 1278 │ │ │ │ │ │ │ │ │ │ Is Estopped │ │ │ │ │ Is On │ │ │ │ │ All Homed │ │ │ │ │ Is Joint Homed │ │ │ │ │ @@ -49769,15 +49769,15 @@ │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ Often, having the button disabled and enabled based on the state of LinuxCNC’s motion controller is │ │ │ │ │ necessary. │ │ │ │ │ There are several properties that can be selected to aid with this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1141 / 1278 │ │ │ │ │ │ │ │ │ │ isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen │ │ │ │ │ You can select multiple properties for combined requirements. │ │ │ │ │ Choosing the checked_state_text_option allows a checkable button to change the text based on it’s │ │ │ │ │ checked state. │ │ │ │ │ @@ -49813,15 +49813,15 @@ │ │ │ │ │ │ │ │ │ │ 12.7.6. Import-Only Widgets │ │ │ │ │ These widgets are usually the base class widget for other QtVCP widgets. │ │ │ │ │ They are not available directly from the Qt Designer editor but could be imported and manually │ │ │ │ │ inserted. │ │ │ │ │ They could also be subclassed to make a similar widget with new features. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1142 / 1278 │ │ │ │ │ │ │ │ │ │ 12.7.6.1. Auto Height │ │ │ │ │ Widget for measuring two heights with a probe. │ │ │ │ │ For setup. │ │ │ │ │ 12.7.6.2. G-code Utility │ │ │ │ │ @@ -49844,15 +49844,15 @@ │ │ │ │ │ 12.8.1. Status │ │ │ │ │ Status is a library that sends GObject messages based on LinuxCNC’s current state. It is an │ │ │ │ │ extension of GladeVCP’s GStat object. │ │ │ │ │ It also has some functions to report status on such things as internal jog rate. │ │ │ │ │ You connect a function call to the STATUS message you are interested in, and QtVCP will call this │ │ │ │ │ function when the message is sent from STATUS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1143 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.1.1. Usage │ │ │ │ │ Import Status modules │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -49886,15 +49886,15 @@ │ │ │ │ │ print(’LinuxCNC machine is on’) │ │ │ │ │ def on_state_off(self): │ │ │ │ │ print(’LinuxCNC machine is off’) │ │ │ │ │ │ │ │ │ │ 12.8.2. Info │ │ │ │ │ Info is a library to collect and filter data from the INI file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.2.1. Available data and defaults │ │ │ │ │ LINUXCNC_IS_RUNNING │ │ │ │ │ LINUXCNC_VERSION │ │ │ │ │ INIPATH │ │ │ │ │ INI = linuxcnc.ini(INIPATH) │ │ │ │ │ MDI_HISTORY_PATH = ’~/.axis_mdi_history’ │ │ │ │ │ @@ -49942,15 +49942,15 @@ │ │ │ │ │ MAX_SPINDLE_0_OVERRIDE = 100 │ │ │ │ │ MIN_SPINDLE_0_OVERRIDE = 50 │ │ │ │ │ MAX_FEED_OVERRIDE = 1.5 │ │ │ │ │ MAX_TRAJ_VELOCITY │ │ │ │ │ │ │ │ │ │ 1144 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1145 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.2.2. User message dialog info │ │ │ │ │ USRMESS_BOLDTEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_BOLDTEXT”) │ │ │ │ │ USRMESS_TEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_TEXT”) │ │ │ │ │ USRMESS_TYPE = self.INI.findall(”DISPLAY”, ”MESSAGE_TYPE”) │ │ │ │ │ @@ -49994,15 +49994,15 @@ │ │ │ │ │ INFO = Info() │ │ │ │ │ │ │ │ │ │ Access INFO data Use this general syntax: │ │ │ │ │ home_state = INFO.NO_HOME_REQUIRED │ │ │ │ │ if INFO.MACHINE_IS_METRIC is True: │ │ │ │ │ print(’Metric based’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1146 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.3. Action │ │ │ │ │ Action library is used to command LinuxCNC’s motion controller. │ │ │ │ │ It tries to hide incidental details and add convenience methods for developers. │ │ │ │ │ 12.8.3.1. Helpers │ │ │ │ │ @@ -50038,15 +50038,15 @@ │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.CALL_MDI(code) │ │ │ │ │ ACTION.CALL_MDI_WAIT(code) │ │ │ │ │ ACTION.CALL_INI_MDI(number) │ │ │ │ │ ACTION.CALL_OWORD() │ │ │ │ │ ACTION.OPEN_PROGRAM(filename) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SAVE_PROGRAM(text_source, fname): │ │ │ │ │ ACTION.SET_AXIS_ORIGIN(axis,value) │ │ │ │ │ ACTION.SET_TOOL_OFFSET(axis,value,fixture = False) │ │ │ │ │ ACTION.RUN() │ │ │ │ │ ACTION.ABORT() │ │ │ │ │ ACTION.PAUSE() │ │ │ │ │ @@ -50087,15 +50087,15 @@ │ │ │ │ │ ACTION.SET_BLOCK_DELETE_OFF() │ │ │ │ │ ACTION.RELOAD_DISPLAY() │ │ │ │ │ ACTION.SET_GRAPHICS_VIEW(view) │ │ │ │ │ ACTION.UPDATE_MACHINE_LOG(text, option=None): │ │ │ │ │ │ │ │ │ │ 1147 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1148 / 1278 │ │ │ │ │ │ │ │ │ │ ACTION.CALL_DIALOG(command): │ │ │ │ │ ACTION.HIDE_POINTER(state): │ │ │ │ │ ACTION.PLAY_SOUND(path): │ │ │ │ │ ACTION.PLAY_ERROR(): │ │ │ │ │ @@ -50130,15 +50130,15 @@ │ │ │ │ │ [0] will be real tools information │ │ │ │ │ [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear) │ │ │ │ │ By default, adds a blank tool entry with tool number -99. │ │ │ │ │ You can preload the newtool array with tool information. │ │ │ │ │ DELETE_TOOLS(_toolnumber_) │ │ │ │ │ Delete the numbered tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1149 / 1278 │ │ │ │ │ │ │ │ │ │ SAVE_TOOLFILE(_toolarray_) │ │ │ │ │ This will parse the toolarray and save it to the tool file specified in the INI file as the tool │ │ │ │ │ path. │ │ │ │ │ This tool array must contain all the available tools information. │ │ │ │ │ @@ -50174,15 +50174,15 @@ │ │ │ │ │ PATH.RIPCONFIGDIR │ │ │ │ │ The Run-in-place config folder for QtVCP screens. │ │ │ │ │ PATH.BASEDIR │ │ │ │ │ Base folder for LinuxCNC. │ │ │ │ │ PATH.BASENAME │ │ │ │ │ The Qt Designer files name (no ending). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ PATH.IMAGEDIR │ │ │ │ │ The QtVCP image folder. │ │ │ │ │ PATH.SCREENDIR │ │ │ │ │ The QtVCP builtin Screen folder. │ │ │ │ │ PATH.PANELDIR │ │ │ │ │ The QtVCP builtin VCP folder. │ │ │ │ │ @@ -50215,15 +50215,15 @@ │ │ │ │ │ There are some helper functions available: │ │ │ │ │ file_list = PATH.find_vismach_files() │ │ │ │ │ directory_list = PATH.find_screen_dirs() │ │ │ │ │ directory_list = PATH.find_panel_dirs() │ │ │ │ │ │ │ │ │ │ 1150 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1151 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.5.3. Usage │ │ │ │ │ Import Path module │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -50255,15 +50255,15 @@ │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ ########################################### │ │ │ │ │ WIDGETS = VCPWindow() │ │ │ │ │ │ │ │ │ │ 12.8.7. Aux_program_loader │ │ │ │ │ Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.7.1. Helpers │ │ │ │ │ │ │ │ │ │ load_halmeter() │ │ │ │ │ Halmeter is used to display one HAL pin data. │ │ │ │ │ Load a halmeter with: │ │ │ │ │ AUX_PRGM.load_halmeter() │ │ │ │ │ @@ -50302,15 +50302,15 @@ │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from qtvcp.lib.aux_program_loader import Aux_program_loader │ │ │ │ │ │ │ │ │ │ 1152 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1153 / 1278 │ │ │ │ │ │ │ │ │ │ Instantiate Aux_program_loader module │ │ │ │ │ Add this Python code to your instantiate section: │ │ │ │ │ ########################################### │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ @@ -50349,15 +50349,15 @@ │ │ │ │ │ # the widgets are instantiated. │ │ │ │ │ # the HAL pins are built but HAL is not set ready │ │ │ │ │ def initialized__(self): │ │ │ │ │ KEYBIND.add_call(’Key_F10’,’on_keycall_F10’,None) │ │ │ │ │ KEYBIND.add_call(’Key_F11’,’on_keycall_override’,10) │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_override’,20) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1154 / 1278 │ │ │ │ │ │ │ │ │ │ And then we need to add the functions that get called. │ │ │ │ │ In the handler file, under the KEY BINDING CALLS section, add this: │ │ │ │ │ ##################### │ │ │ │ │ # KEY BINDING CALLS # │ │ │ │ │ @@ -50393,15 +50393,15 @@ │ │ │ │ │ no buttons to close the dialog. │ │ │ │ │ Yes/No messages have three HAL pins: │ │ │ │ │ One to show the dialog, │ │ │ │ │ One for waiting, and │ │ │ │ │ one for the answer. │ │ │ │ │ By default it will send STATUS messages for focus_overlay and alert sound. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1155 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.9.2. Examples │ │ │ │ │ Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading: │ │ │ │ │ Status bar and desktop notify pop up message: │ │ │ │ │ MESSAGE_BOLDTEXT = NONE │ │ │ │ │ @@ -50441,15 +50441,15 @@ │ │ │ │ │ Typically STATUS messages are used to sent notify messages. │ │ │ │ │ │ │ │ │ │ 12.8.10.1. Properties │ │ │ │ │ You can set the: │ │ │ │ │ title │ │ │ │ │ Notification message title text. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1156 / 1278 │ │ │ │ │ │ │ │ │ │ message │ │ │ │ │ Notification message content text. │ │ │ │ │ icon │ │ │ │ │ Notification message icon. │ │ │ │ │ @@ -50482,15 +50482,15 @@ │ │ │ │ │ READY │ │ │ │ │ ATTENTION │ │ │ │ │ RING │ │ │ │ │ DONE │ │ │ │ │ LOGIN │ │ │ │ │ LOGOUT │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1157 / 1278 │ │ │ │ │ │ │ │ │ │ Beeps There are three beeps: │ │ │ │ │ BEEP_RING │ │ │ │ │ BEEP_START │ │ │ │ │ BEEP │ │ │ │ │ @@ -50525,15 +50525,15 @@ │ │ │ │ │ │ │ │ │ │ 12.8.14. Toolbar Actions │ │ │ │ │ This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons. │ │ │ │ │ Toolbuttons, menu and toolbar menus are: │ │ │ │ │ built in Qt Designer, and │ │ │ │ │ assigned actions/submenus in the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1158 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.14.1. Actions │ │ │ │ │ │ │ │ │ │ estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop │ │ │ │ │ Toggles dimensions display. │ │ │ │ │ @@ -50573,15 +50573,15 @@ │ │ │ │ │ Add a custom toolbar function: │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ def my_function(self, widget, state): │ │ │ │ │ print(’My function State = ()’.format(state)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1159 / 1278 │ │ │ │ │ │ │ │ │ │ 12.8.15. Qt Vismach Machine Graphics library │ │ │ │ │ Qt_vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach: │ │ │ │ │ displays the model in a 3D viewport │ │ │ │ │ @@ -50611,15 +50611,15 @@ │ │ │ │ │ to. │ │ │ │ │ Translate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ Scale │ │ │ │ │ This object will perform an OpenGL scale function on a collection object. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1160 / 1278 │ │ │ │ │ │ │ │ │ │ HalTranslate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object, offset by │ │ │ │ │ the HAL pin value. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ @@ -50660,15 +50660,15 @@ │ │ │ │ │ ArcX │ │ │ │ │ Build an arc by specifying │ │ │ │ │ Box │ │ │ │ │ Build a box specified by the 6 vertex coordinates. │ │ │ │ │ BoxCentered │ │ │ │ │ Build a box centered on origin by specifying the width in X and Y, and the height in Z. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1161 / 1278 │ │ │ │ │ │ │ │ │ │ BoxCenteredXY │ │ │ │ │ Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y, │ │ │ │ │ and running up or down to the specified height in Z. │ │ │ │ │ Capture │ │ │ │ │ @@ -50709,30 +50709,30 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ machine = MILL.Window() │ │ │ │ │ self.w.mainLayout.addWidget(machine) │ │ │ │ │ │ │ │ │ │ 12.8.15.4. More Information │ │ │ │ │ More information on how to build a custom machine simulation in the Qt Vismach chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1162 / 1278 │ │ │ │ │ │ │ │ │ │ 12.9. QtVismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ . │ │ │ │ │ │ │ │ │ │ 12.9.1. Introduction │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ Figura 12.105: QtVismach 3D Viewport │ │ │ │ │ The Vismach 3D viewport view can be manipulated as follows: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1163 / 1278 │ │ │ │ │ │ │ │ │ │ zoom by scroll wheel │ │ │ │ │ pan by middle button drag │ │ │ │ │ rotate by right-button drag │ │ │ │ │ tilt by left button drag │ │ │ │ │ @@ -50793,15 +50793,15 @@ │ │ │ │ │ | │ │ │ │ │ |---zassembly │ │ │ │ │ | │ │ │ │ │ |---zframe │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1164 / 1278 │ │ │ │ │ │ │ │ │ │ | │ │ │ │ │ |---zbody │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ @@ -50844,15 +50844,15 @@ │ │ │ │ │ c.ready() │ │ │ │ │ │ │ │ │ │ 12.9.5. Creating Parts │ │ │ │ │ 12.9.5.1. Import STL or OBJ Files │ │ │ │ │ It is probably easiest to: │ │ │ │ │ create geometry in a CAD package │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1165 / 1278 │ │ │ │ │ │ │ │ │ │ import into the model script using the AsciiSTL() or AsciiOBJ() functions. │ │ │ │ │ Both functions can take one of two named arguments, either a filename or data: │ │ │ │ │ part = AsciiSTL(filename=”path/to/file.stl”) │ │ │ │ │ part = AsciiSTL(data=”solid part1 facet normal ...”) │ │ │ │ │ @@ -50888,15 +50888,15 @@ │ │ │ │ │ Creates a box ground on WY plane of width xw / yw and height z. │ │ │ │ │ Composite parts may be created by assembling these primitives either at creation time or subsequently: │ │ │ │ │ part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)]) │ │ │ │ │ part2 = Box(50,40,75,100,75,100) │ │ │ │ │ part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)]) │ │ │ │ │ part4 = Collection([part1, part2]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1166 / 1278 │ │ │ │ │ │ │ │ │ │ 12.9.6. Moving Model Parts │ │ │ │ │ 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. They │ │ │ │ │ may also need to be moved to create the animation as the animation rotation axis is created at the │ │ │ │ │ @@ -50930,15 +50930,15 @@ │ │ │ │ │ The HAL component is the next argument. │ │ │ │ │ In QtVCP if you are reading system pins directly then the component argument is set to None. │ │ │ │ │ hal_pin │ │ │ │ │ The name of the HAL pin that will animate the motion. │ │ │ │ │ This needs to match an existing HAL pin that describes the joint position such as: │ │ │ │ │ ”joint.2.pos-fb” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1167 / 1278 │ │ │ │ │ │ │ │ │ │ Otherwise the component instance would be specified and the pin name of that component │ │ │ │ │ would be specified. xs, ys, zs;; The X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in │ │ │ │ │ the positive X direction. │ │ │ │ │ @@ -50973,15 +50973,15 @@ │ │ │ │ │ Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded │ │ │ │ │ tool. │ │ │ │ │ tool = HalToolTriangle() │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[tool]) │ │ │ │ │ # or more compact: │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[HalToolTriangle()]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1168 / 1278 │ │ │ │ │ │ │ │ │ │ 12.9.8. Assembling the model │ │ │ │ │ In order for parts to move together they need to be assembled with the Collection() command. │ │ │ │ │ It is important to assemble the parts and define their motions in the correct sequence. │ │ │ │ │ For example to create a moving head milling machine with a rotating spindle and an animated draw │ │ │ │ │ @@ -51023,15 +51023,15 @@ │ │ │ │ │ Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final │ │ │ │ │ model is created by: │ │ │ │ │ model = Collection([link0, floor, table]) │ │ │ │ │ │ │ │ │ │ Whereas a VMC model with separate parts moving on the base might have │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1169 / 1278 │ │ │ │ │ │ │ │ │ │ 12.9.9. Other functions │ │ │ │ │ part = Color([_colorspec_], [_part_]) │ │ │ │ │ Sets the display color of the part. │ │ │ │ │ Note that unlike the other functions, the part definition comes second in this case. │ │ │ │ │ @@ -51073,15 +51073,15 @@ │ │ │ │ │ │ │ │ │ │ Add it to the Window class Collection so it is never moved from the origin. │ │ │ │ │ v.model = Collection([origin, model, world]) │ │ │ │ │ │ │ │ │ │ Start from the cutting tip and work your way back. Add each collection to the model at the origin and │ │ │ │ │ run the script to confirm the location, then rotate/translate and run the script to confirm again. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.9.11. Basic structure of a QtVismach script │ │ │ │ │ # imports │ │ │ │ │ import hal │ │ │ │ │ from qtvcp.lib.qt_vismach.qt_vismach import * │ │ │ │ │ # create HAL pins here if needed │ │ │ │ │ #c = hal.component(”samplegui”) │ │ │ │ │ @@ -51124,15 +51124,15 @@ │ │ │ │ │ # if you call this file directly from python3, it will display a PyQt5 window │ │ │ │ │ # good for confirming the parts of the assembly. │ │ │ │ │ if __name__ == ’__main__’: │ │ │ │ │ main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1170 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1171 / 1278 │ │ │ │ │ │ │ │ │ │ 12.9.12. Builtin Vismach Sample Panels │ │ │ │ │ QtVCP builtin Vismach Panels │ │ │ │ │ │ │ │ │ │ 12.10. QtVCP: Building Custom Widgets │ │ │ │ │ @@ -51160,15 +51160,15 @@ │ │ │ │ │ Injecting important variables, │ │ │ │ │ Calling an extra setup function │ │ │ │ │ Calling a closing cleanup function at shutdown. │ │ │ │ │ These functions are not called when the Qt Designer editor displays the widgets. │ │ │ │ │ When QtVCP builds a screen from the .ui file: │ │ │ │ │ 1. It searches for all the HAL-ified widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1172 / 1278 │ │ │ │ │ │ │ │ │ │ 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets │ │ │ │ │ 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function. │ │ │ │ │ hal_init() is defined in the base class and it: │ │ │ │ │ a. Adds variables such as the preference file to every HAL-ified widget. │ │ │ │ │ @@ -51221,15 +51221,15 @@ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ 2 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 3y │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1173 / 1278 │ │ │ │ │ │ │ │ │ │ In this case we need access to: │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ PyQt’s QtWidgets library, │ │ │ │ │ @@ -51301,15 +51301,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ ############################### │ │ │ │ │ # Imports │ │ │ │ │ ############################### │ │ │ │ │ from PyQt5.QtCore import pyqtProperty │ │ │ │ │ from qtvcp.widgets.led_widget import LED │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ from qtvcp.core import Status │ │ │ │ │ ########################################### │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ ########################################### │ │ │ │ │ STATUS = Status() │ │ │ │ │ ########################################## │ │ │ │ │ @@ -51359,15 +51359,15 @@ │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ │ │ │ │ │ 1174 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1175 / 1278 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, ←reset_is_estopped) │ │ │ │ │ is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on) │ │ │ │ │ @@ -51437,15 +51437,15 @@ │ │ │ │ │ self.setState(False) │ │ │ │ │ self.is_estopped = False │ │ │ │ │ self.is_on = False │ │ │ │ │ self.invert_state = False │ │ │ │ │ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Defines the name of our custom widget and what other class it inherits from. │ │ │ │ │ In this case we inherit LED - a QtVCP widget that represents a status light. │ │ │ │ │ @@ -51506,15 +51506,15 @@ │ │ │ │ │ self.PREFS_ │ │ │ │ │ the instance of an optional preference file │ │ │ │ │ self.SETTINGS_ │ │ │ │ │ the Qsettings object │ │ │ │ │ We could use this information to create HAL pins or look up image paths etc. │ │ │ │ │ STATUS.connect(’state-estop’, lambda w:self._flip_state(True)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1177 / 1278 │ │ │ │ │ │ │ │ │ │ Lets look at this line more closely: │ │ │ │ │ STATUS is very common theme is widget building. │ │ │ │ │ STATUS uses GObject message system to send messages to widgets that register to it. │ │ │ │ │ This line is the registering process. │ │ │ │ │ @@ -51561,15 +51561,15 @@ │ │ │ │ │ return self.is_on │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ │ │ │ │ │ This is how Qt Designer sets the attributes of the widget. │ │ │ │ │ This can also be called directly in the widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1178 / 1278 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ @@ -51609,15 +51609,15 @@ │ │ │ │ │ self._last = 0 │ │ │ │ │ self._block_signal = False │ │ │ │ │ self._auto_label_flag = True │ │ │ │ │ SettingMenu = QMenu() │ │ │ │ │ for system in(’G54’, ’G55’, ’G56’, ’G57’, ’G58’, ’G59’, ’G59.1’, ’G59.2’, ’G59.3’): │ │ │ │ │ Button = QAction(QIcon(’exit24.png’), system, self) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1179 / 1278 │ │ │ │ │ │ │ │ │ │ Button.triggered.connect(self[system.replace(’.’,’_’)]) │ │ │ │ │ SettingMenu.addAction(Button) │ │ │ │ │ self.setMenu(SettingMenu) │ │ │ │ │ self.dialog = EntryDialog() │ │ │ │ │ @@ -51660,15 +51660,15 @@ │ │ │ │ │ def ChangeState(self, joint): │ │ │ │ │ if int(joint) != self._joint: │ │ │ │ │ self._block_signal = True │ │ │ │ │ self.setChecked(False) │ │ │ │ │ self._block_signal = False │ │ │ │ │ self.hal_pin.set(False) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1180 / 1278 │ │ │ │ │ │ │ │ │ │ ############################## │ │ │ │ │ # required class boiler code # │ │ │ │ │ ############################## │ │ │ │ │ def __getitem__(self, item): │ │ │ │ │ @@ -51715,15 +51715,15 @@ │ │ │ │ │ HomeLabel[homed=true] { │ │ │ │ │ color: green; │ │ │ │ │ } │ │ │ │ │ HomeLabel[homed=false] { │ │ │ │ │ color: red; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.10.6. Use Stylesheets To Change Custom Widget Properties │ │ │ │ │ class Label(QLabel): │ │ │ │ │ def __init__(self, parent=None): │ │ │ │ │ super(Label, self).__init__(parent) │ │ │ │ │ alternateFont0 = self.font │ │ │ │ │ # Qproperty getter and setter │ │ │ │ │ @@ -51768,15 +51768,15 @@ │ │ │ │ │ return Lcnc_GridLayout(parent) │ │ │ │ │ def name(self): │ │ │ │ │ return ”Lcnc_GridLayout” │ │ │ │ │ def group(self): │ │ │ │ │ │ │ │ │ │ 1181 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ return ”LinuxCNC - HAL” │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’lcnc_gridlayout’))) │ │ │ │ │ def toolTip(self): │ │ │ │ │ return ”HAL enable/disable GridLayout widget” │ │ │ │ │ def whatsThis(self): │ │ │ │ │ @@ -51825,15 +51825,15 @@ │ │ │ │ │ def domXml(self): │ │ │ │ │ return ’\n’ │ │ │ │ │ def includeFile(self): │ │ │ │ │ return ”qtvcp.widgets.system_tool_button” │ │ │ │ │ │ │ │ │ │ 1182 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1183 / 1278 │ │ │ │ │ │ │ │ │ │ 12.10.7.3. Making a plugin with a MenuEntry dialog box │ │ │ │ │ It possible to add an entry to the dialog that pops up when you right click the widget in the layout. │ │ │ │ │ This can do things such as selecting options in a more convenient way. │ │ │ │ │ This is the plugin used for action buttons. │ │ │ │ │ @@ -51879,15 +51879,15 @@ │ │ │ │ │ def createWidget(self, parent): │ │ │ │ │ return ActionButton(parent) │ │ │ │ │ # This method returns the name of the custom widget class │ │ │ │ │ def name(self): │ │ │ │ │ return ”ActionButton” │ │ │ │ │ # Returns the name of the group in Qt Designer’s widget box │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ def group(self): │ │ │ │ │ return ”LinuxCNC - Controller” │ │ │ │ │ # Returns the icon │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’actionbutton’))) │ │ │ │ │ # Returns a tool tip short description │ │ │ │ │ @@ -51928,15 +51928,15 @@ │ │ │ │ │ self.setWindowTitle(self.tr(”Set Options”)) │ │ │ │ │ def updateWidget(self): │ │ │ │ │ formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget) │ │ │ │ │ if formWindow: │ │ │ │ │ │ │ │ │ │ 1184 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1185 / 1278 │ │ │ │ │ │ │ │ │ │ formWindow.cursor().setProperty(”estop_action”, │ │ │ │ │ QtCore.QVariant(self.c_estop.isChecked())) │ │ │ │ │ self.accept() │ │ │ │ │ class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension): │ │ │ │ │ @@ -51975,15 +51975,15 @@ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, default value, type, section name) │ │ │ │ │ self.int_value = self.w.PREFS_.getpref(’Integer_value’, 75, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.string_value = self.w.PREFS_.getpref(’String_value’, ’on’, str, ’ ←CUSTOM_FORM_ENTRIES’) │ │ │ │ │ │ │ │ │ │ Writing preferences at close time In the closing_cleanup__() function, add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1186 / 1278 │ │ │ │ │ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, variable name, type, section name) │ │ │ │ │ self.w.PREFS_.putpref(’Integer_value’, self.integer_value, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.w.PREFS_.putpref(’String_value’, self.string_value, str, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ @@ -52018,15 +52018,15 @@ │ │ │ │ │ Being able to edit a style on a running screen is convenient. │ │ │ │ │ Import StyleSheetEditor module in the IMPORT SECTION: │ │ │ │ │ from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE │ │ │ │ │ │ │ │ │ │ Instantiate StyleSheetEditor module in the INSTANTIATE SECTION: │ │ │ │ │ STYLEEDITOR = SSE() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1187 / 1278 │ │ │ │ │ │ │ │ │ │ Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets, │ │ │ │ │ paths):+ function add: │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_F12’) │ │ │ │ │ │ │ │ │ │ @@ -52070,15 +52070,15 @@ │ │ │ │ │ def return_value(self, w, message): │ │ │ │ │ num = message.get(’RETURN’) │ │ │ │ │ id_code = bool(message.get(’ID’) == ’FORM__NUMBER’) │ │ │ │ │ name = bool(message.get(’NAME’) == ’ENTRY’) │ │ │ │ │ if id_code and name and num is not None: │ │ │ │ │ print(’The {} number from {} was: {}’.format(name, id_code, num)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1188 / 1278 │ │ │ │ │ │ │ │ │ │ This catches all general messages so it must check the dialog type and id code to confirm it’s our │ │ │ │ │ dialog. │ │ │ │ │ In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know │ │ │ │ │ the message is for us. │ │ │ │ │ @@ -52113,15 +52113,15 @@ │ │ │ │ │ The objectName of the toolbar button is used to identify the button when configuring it - descriptive │ │ │ │ │ names help. │ │ │ │ │ Using the action editor menu, right click and select edit. │ │ │ │ │ Edit the object name, text, and button type for an appropriate action. │ │ │ │ │ In this example the: │ │ │ │ │ submenu name must be menuRecent, │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1189 / 1278 │ │ │ │ │ │ │ │ │ │ actions names must be actionAbout, actionQuit, actionMyFunction │ │ │ │ │ Loads the toolbar_actions library in the IMPORT SECTION │ │ │ │ │ from qtvcp.lib.toolbar_actions import ToolBarActions │ │ │ │ │ │ │ │ │ │ @@ -52165,15 +52165,15 @@ │ │ │ │ │ Define the function called by pin state change in the GENERAL FUNCTIONS SECTION │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def cycleStart(self, state): │ │ │ │ │ if state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1190 / 1278 │ │ │ │ │ │ │ │ │ │ tab = self.w.mainTab.currentWidget() │ │ │ │ │ if tab in( self.w.tab_auto, self.w.tab_graphics): │ │ │ │ │ ACTION.RUN(line=0) │ │ │ │ │ elif tab == self.w.tab_files: │ │ │ │ │ @@ -52215,15 +52215,15 @@ │ │ │ │ │ jog increment after. │ │ │ │ │ We will build a button that toggles between continuous jog and whatever increment that was already │ │ │ │ │ selected. │ │ │ │ │ In Qt Designer: │ │ │ │ │ Add an ActionButton with no action │ │ │ │ │ Call it btn_toggle_continuous. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1191 / 1278 │ │ │ │ │ │ │ │ │ │ Set the AbstractButton property checkable to True. │ │ │ │ │ Set the ActionButton properties incr_imperial_number and incr_mm_number to 0. │ │ │ │ │ Use Qt Designer’s slot editor to use the button signal clicked(bool) to call form’s handler function │ │ │ │ │ toggle_continuous_clicked(). │ │ │ │ │ @@ -52269,15 +52269,15 @@ │ │ │ │ │ Class patching (monkey patching) is a little like black magic - so use it only if needed. │ │ │ │ │ │ │ │ │ │ The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want │ │ │ │ │ to print the file name first. │ │ │ │ │ We can ”class patch” the library to redirect the function call. │ │ │ │ │ In the IMPORT SECTION add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1192 / 1278 │ │ │ │ │ │ │ │ │ │ from qtvcp.widgets.file_manager import FileManager as FM │ │ │ │ │ │ │ │ │ │ Here we are going to: │ │ │ │ │ 1. Keep a reference to the original function (1) so we can still call it │ │ │ │ │ @@ -52309,15 +52309,15 @@ │ │ │ │ │ def our_load(self,fname): │ │ │ │ │ print(fname) │ │ │ │ │ self.old_load(self.w.filemanager,fname) │ │ │ │ │ │ │ │ │ │ Now our custom function will print the file path to the terminal before loading the file. │ │ │ │ │ Obviously boring but shows the principle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1193 / 1278 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ There is another slightly different way to do this that can have advantages: you can store the reference to the original function in the original class. │ │ │ │ │ The trick here is to make sure the function name you use to store it is not already used in the class. │ │ │ │ │ super__ added to the function name would be a good choice. │ │ │ │ │ @@ -52355,15 +52355,15 @@ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from PyQt5 import QtWidgets │ │ │ │ │ from PyQt5.QtGui import QColor │ │ │ │ │ from qtvcp.widgets.state_led import StateLED as LED │ │ │ │ │ from qtvcp.core import Status, Info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1194 / 1278 │ │ │ │ │ │ │ │ │ │ Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so │ │ │ │ │ as to be global references (no self. in front): │ │ │ │ │ ########################################## │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ @@ -52414,15 +52414,15 @@ │ │ │ │ │ # │ │ │ │ │ self.w.led.setProperty(’is_spindle_at_speed_status’,True) # │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 2y │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1195 / 1278 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 4y │ │ │ │ │ │ │ │ │ │ self.w.led.setProperty(’color’,QColor(0,255,0,255)) │ │ │ │ │ @@ -52535,15 +52535,15 @@ │ │ │ │ │ │ │ │ │ │ 7 │ │ │ │ │ │ │ │ │ │ We create a QWidget │ │ │ │ │ Since you can only add one widget to the tab corner and we want two there, we must add both │ │ │ │ │ into a container. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ 1196 / 1278 │ │ │ │ │ │ │ │ │ │ @@ -52623,15 +52623,15 @@ │ │ │ │ │ self.w = widgets │ │ │ │ │ self.PATHS = paths │ │ │ │ │ # register a function to be called at CYCLE_TIME period (usually every 100 ms) │ │ │ │ │ STATUS.connect(’periodic’, lambda w: self.update_periodic()) │ │ │ │ │ │ │ │ │ │ Create the custom function to be called periodically │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1197 / 1278 │ │ │ │ │ │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def update_periodic(self): │ │ │ │ │ @@ -52673,15 +52673,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ from time import sleep │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ context = zmq.Context() │ │ │ │ │ socket = context.socket(zmq.PUB) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1198 / 1278 │ │ │ │ │ │ │ │ │ │ socket.bind(”tcp://127.0.0.1:5690”) │ │ │ │ │ topic = b’QtVCP’ │ │ │ │ │ # prebuilt message 1 │ │ │ │ │ # makes a dict of function to call plus any arguments │ │ │ │ │ @@ -52739,15 +52739,15 @@ │ │ │ │ │ def __init__(self, halcomp,widgets,paths): │ │ │ │ │ # directly select ZMQ message sending │ │ │ │ │ self.w.screen_options.setProperty(’use_send_zmq_option’,True) │ │ │ │ │ │ │ │ │ │ This allows sending messages to a separate program. │ │ │ │ │ The message sent will depend on what the external program is expecting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1199 / 1278 │ │ │ │ │ │ │ │ │ │ Create a function to send ZMQ messages Let’s add a specific function for testing. │ │ │ │ │ You will need to run LinuxCNC from a terminal to see the printed text. │ │ │ │ │ Also, something needs to be added to call this function, such as a button click. │ │ │ │ │ ##################### │ │ │ │ │ @@ -52788,15 +52788,15 @@ │ │ │ │ │ You can also use the Status library to send a message to the notify library if it is enabled (usually │ │ │ │ │ set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify │ │ │ │ │ dialog. │ │ │ │ │ The messages are also recorded until the user erases them using controls. The users can recall any │ │ │ │ │ recorded messages. │ │ │ │ │ There are several options: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1200 / 1278 │ │ │ │ │ │ │ │ │ │ STATUS.TEMPORARY_MESSAGE │ │ │ │ │ Show the message for a short time only. │ │ │ │ │ STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT │ │ │ │ │ │ │ │ │ │ @@ -52835,15 +52835,15 @@ │ │ │ │ │ Notice we sometimes compare to widget, sometimes to widget.parent(). │ │ │ │ │ This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get │ │ │ │ │ the focus; so we need to check the parent of those sub-widgets. │ │ │ │ │ Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to │ │ │ │ │ accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent() │ │ │ │ │ would get you the container that holds the G-code widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1201 / 1278 │ │ │ │ │ │ │ │ │ │ 12.12. QtVCP Development │ │ │ │ │ 12.12.1. Overview │ │ │ │ │ The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building │ │ │ │ │ for LinuxCNC. │ │ │ │ │ @@ -52872,15 +52872,15 @@ │ │ │ │ │ 12.12.3. QtVCP Startup To Shutdown │ │ │ │ │ QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree. │ │ │ │ │ 12.12.3.1. QtVCP Startup │ │ │ │ │ When QtVCP first starts: │ │ │ │ │ 1. It must decide if this object is a screen or a panel. │ │ │ │ │ 2. It searches for and collects information about paths of required files and useful folders. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1202 / 1278 │ │ │ │ │ │ │ │ │ │ 3. It then: │ │ │ │ │ a. Builds the HAL component, │ │ │ │ │ b. Loads the window instance, │ │ │ │ │ c. Adds handler extensions, │ │ │ │ │ @@ -52916,15 +52916,15 @@ │ │ │ │ │ LIBDIR │ │ │ │ │ Path of QtVCP’s Python library │ │ │ │ │ HANDLER │ │ │ │ │ Path of handler file │ │ │ │ │ XML │ │ │ │ │ Path of .ui file │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1203 / 1278 │ │ │ │ │ │ │ │ │ │ DOMAIN │ │ │ │ │ Path of translation │ │ │ │ │ IS_SCREEN │ │ │ │ │ Screen/panel switch │ │ │ │ │ @@ -52959,15 +52959,15 @@ │ │ │ │ │ Most importantly widgets that require regular key input and not jogging, should be checked for in the │ │ │ │ │ processed_key_event__ function. │ │ │ │ │ 12.12.5.4. Preference File │ │ │ │ │ Some QtVCP widgets use the preference file to record important information. │ │ │ │ │ This requires the preference file to be set up early in the widget initialization process. │ │ │ │ │ The easiest way to do this is to use the ScreenOptions widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1204 / 1278 │ │ │ │ │ │ │ │ │ │ 12.12.5.5. Widget Special Setup Functions │ │ │ │ │ QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded. │ │ │ │ │ It is not called when using Qt Designer editor. │ │ │ │ │ After this function is called the widget has access to some special variables: │ │ │ │ │ @@ -52994,15 +52994,15 @@ │ │ │ │ │ By default, if there is a preference file, the dialogs will remember their last size/placement. │ │ │ │ │ It is possible to override this so they open in the same location each time. │ │ │ │ │ 12.12.5.7. Styles (Themes) │ │ │ │ │ While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are │ │ │ │ │ all set in a separate .qss file. │ │ │ │ │ The file should be put in the same location as the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1205 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 13 │ │ │ │ │ │ │ │ │ │ User Interface Programming │ │ │ │ │ 13.1. Panelui │ │ │ │ │ @@ -53031,15 +53031,15 @@ │ │ │ │ │ loadrt sampler cfg=u depth=1025 │ │ │ │ │ #uncomment to validate the panelui INI file │ │ │ │ │ #loadusr pyui │ │ │ │ │ # -d = debug, -v = verbose debug │ │ │ │ │ # -d will show you keypress identification and commands called │ │ │ │ │ # -v is for develeper info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1206 / 1278 │ │ │ │ │ │ │ │ │ │ loadusr -W panelui -d │ │ │ │ │ # using simulated buttons instead of the MESA 7I73 card │ │ │ │ │ # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes │ │ │ │ │ loadrt sim_matrix_kb │ │ │ │ │ @@ -53080,15 +53080,15 @@ │ │ │ │ │ This allows one to change the prefix of the HAL pins from panelui to an arbitrary name. │ │ │ │ │ ZMQ Messaging Setup │ │ │ │ │ [ZMQ_SETUP] │ │ │ │ │ TOPIC = ’QTVCP’ │ │ │ │ │ SOCKET = ’tcp://127.0.0.1:5690’ │ │ │ │ │ ENABLE = True │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1207 / 1278 │ │ │ │ │ │ │ │ │ │ This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program. │ │ │ │ │ Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group │ │ │ │ │ has its own output pin, separate from each button in the group. Radio button definitions start with │ │ │ │ │ the text RADIO_BUTTON inside single brackets. │ │ │ │ │ @@ -53142,15 +53142,15 @@ │ │ │ │ │ │ │ │ │ │ Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets. │ │ │ │ │ [TOGGLE_BUTTONS] │ │ │ │ │ # Each button name inside double brackets, must be unique and is case sensitive. │ │ │ │ │ # This button, named ’tool_change’is controller by the row 2 column 5 key. │ │ │ │ │ # It has a BIT output, will output 1 on true state and 0 on false state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1208 / 1278 │ │ │ │ │ │ │ │ │ │ # It also has a status pin which will follow it’s current state. │ │ │ │ │ # DEFAULT sets this to true when first initialized. │ │ │ │ │ # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will │ │ │ │ │ # add the lines regardless │ │ │ │ │ @@ -53195,15 +53195,15 @@ │ │ │ │ │ required argument: axis number (int) │ │ │ │ │ spindle_forward_adjust │ │ │ │ │ optional argument: starting RPM (int) - default 100 │ │ │ │ │ Description: If the spindle is stopped it will start in the forward direction. If it is already running it │ │ │ │ │ will increase or decrease the rpm depending on what direction the spindle is running in. │ │ │ │ │ spindle_forward │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1209 / 1278 │ │ │ │ │ │ │ │ │ │ optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse │ │ │ │ │ optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse_adjust │ │ │ │ │ @@ -53229,15 +53229,15 @@ │ │ │ │ │ Description: Move Z axis to the given machine position │ │ │ │ │ feed_hold │ │ │ │ │ required argument: state (bool 0 or 1) │ │ │ │ │ feed_override │ │ │ │ │ required argument: rate (float) │ │ │ │ │ rapid_override │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ required argument: rate (float 0-1) │ │ │ │ │ spindle_override │ │ │ │ │ required argument: rate (float) │ │ │ │ │ max_velocity │ │ │ │ │ required argument: rate (float) │ │ │ │ │ optional_stop │ │ │ │ │ @@ -53269,15 +53269,15 @@ │ │ │ │ │ STATUS_PIN = False │ │ │ │ │ DEFAULT = FALSE │ │ │ │ │ TRUE_STATE = 1 │ │ │ │ │ FALSE_STATE = 0 │ │ │ │ │ │ │ │ │ │ 1210 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1211 / 1278 │ │ │ │ │ │ │ │ │ │ Here is a sample program that will receive the message and print it to the terminal. │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ # ZeroMQ Context │ │ │ │ │ @@ -53321,15 +53321,15 @@ │ │ │ │ │ print(wname.metadata) │ │ │ │ │ # Print the calling widgets internal metadata (from config ←file) │ │ │ │ │ # Call a mdi command to print a msg in LinuxCNC. │ │ │ │ │ # This requires LinuxCNC to be homed, but does not check for that. │ │ │ │ │ # parent commands expect a widget_instance - None is substituted │ │ │ │ │ self.parent.mdi(None,’(MSG, Hello Linuxcnc World!)’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1212 / 1278 │ │ │ │ │ │ │ │ │ │ # Each call to this function will cycle the mode of LinuxCNC. │ │ │ │ │ def cycle_mode(self, wname, m): │ │ │ │ │ if self.current_mode == 0: │ │ │ │ │ self.current_mode = 1 │ │ │ │ │ @@ -53369,15 +53369,15 @@ │ │ │ │ │ PROGRAM_EXTENSION = .py Python Script │ │ │ │ │ py = python │ │ │ │ │ │ │ │ │ │ In this way, any Python script can be opened, and its output is treated as G-code. One such example │ │ │ │ │ script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes │ │ │ │ │ along the circumference of a circle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1213 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 13.1: Circular Holes │ │ │ │ │ If the filter program sends lines to stderr of the form: │ │ │ │ │ FILTER_PROGRESS=10 │ │ │ │ │ │ │ │ │ │ @@ -53397,15 +53397,15 @@ │ │ │ │ │ time.sleep(.1) │ │ │ │ │ # output a line of G-code │ │ │ │ │ print(’G0 X1’, file=sys.stdout) │ │ │ │ │ # update progress │ │ │ │ │ print(’FILTER_PROGRESS={}’.format(i), file=sys.stderr) │ │ │ │ │ except: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1214 / 1278 │ │ │ │ │ │ │ │ │ │ # This causes an error message │ │ │ │ │ print(’Error; But this was only a test’, file=sys.stderr) │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ │ │ │ │ │ @@ -53448,15 +53448,15 @@ │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ def process(self): │ │ │ │ │ try: │ │ │ │ │ # get next line of code │ │ │ │ │ codeLine = self.temp[self.line] │ │ │ │ │ # process the line somehow │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1215 / 1278 │ │ │ │ │ │ │ │ │ │ # push out processed code │ │ │ │ │ print(codeLine, file=sys.stdout) │ │ │ │ │ self.line +=1 │ │ │ │ │ # update progress │ │ │ │ │ @@ -53496,15 +53496,15 @@ │ │ │ │ │ Make sure you use the correct path to your INI file. │ │ │ │ │ loadusr halui -ini /path/to/inifile.ini │ │ │ │ │ │ │ │ │ │ 13.3.2. MDI │ │ │ │ │ Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL │ │ │ │ │ pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1216 / 1278 │ │ │ │ │ │ │ │ │ │ [HALUI] │ │ │ │ │ MDI_COMMAND = G0 X0 │ │ │ │ │ MDI_COMMAND = G0 G53 Z0 │ │ │ │ │ MDI_COMMAND = G28 │ │ │ │ │ @@ -53549,15 +53549,15 @@ │ │ │ │ │ 13.3.4.1. Abort │ │ │ │ │ halui.abort (bit, in) - pin to send an abort message (clears out most errors) │ │ │ │ │ 13.3.4.2. E-Stop │ │ │ │ │ halui.estop.activate (bit, in) - pin for requesting E-Stop │ │ │ │ │ halui.estop.is-activated (bit, out) - indicates E-stop reset │ │ │ │ │ halui.estop.reset (bit, in) - pin for requesting E-Stop reset │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1217 / 1278 │ │ │ │ │ │ │ │ │ │ 13.3.4.3. Feed Override │ │ │ │ │ halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder │ │ │ │ │ or direct-value. │ │ │ │ │ @@ -53584,15 +53584,15 @@ │ │ │ │ │ halui.lube.on (bit, in) - pin for requesting lube on │ │ │ │ │ 13.3.4.8. Machine │ │ │ │ │ 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 │ │ │ │ │ halui.machine.is-on (bit, out) - indicates machine on │ │ │ │ │ halui.machine.off (bit, in) - pin for requesting machine off │ │ │ │ │ halui.machine.on (bit, in) - pin for requesting machine on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1218 / 1278 │ │ │ │ │ │ │ │ │ │ 13.3.4.9. Max Velocity │ │ │ │ │ The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ] │ │ │ │ │ section of the INI file. │ │ │ │ │ halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ @@ -53626,15 +53626,15 @@ │ │ │ │ │ limit │ │ │ │ │ halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software │ │ │ │ │ limit │ │ │ │ │ halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software │ │ │ │ │ limit │ │ │ │ │ halui.joint.N.override-limits (bit out) - status pin telling that joint N’s limits are temporarily overridden │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1219 / 1278 │ │ │ │ │ │ │ │ │ │ halui.joint.N.unhome (bit in) - pin for unhoming joint N │ │ │ │ │ halui.joint.selected (u32 out) - selected joint number (0 … num_joints-1) │ │ │ │ │ halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted │ │ │ │ │ halui.joint.selected.home (bit in) - pin for homing the selected joint │ │ │ │ │ @@ -53667,15 +53667,15 @@ │ │ │ │ │ halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when │ │ │ │ │ using increment-plus/minus │ │ │ │ │ halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in │ │ │ │ │ the negative direction by the increment amount │ │ │ │ │ halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1220 / 1278 │ │ │ │ │ │ │ │ │ │ halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the │ │ │ │ │ halui.joint.jog-speed velocity │ │ │ │ │ │ │ │ │ │ halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity │ │ │ │ │ @@ -53708,15 +53708,15 @@ │ │ │ │ │ halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1221 / 1278 │ │ │ │ │ │ │ │ │ │ 13.3.4.15. Mode │ │ │ │ │ halui.mode.auto (bit, in) - pin for requesting auto mode │ │ │ │ │ halui.mode.is-auto (bit, out) - indicates auto mode is on │ │ │ │ │ halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on │ │ │ │ │ @@ -53746,15 +53746,15 @@ │ │ │ │ │ halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override │ │ │ │ │ when counts changes. │ │ │ │ │ halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used with │ │ │ │ │ an encoder or direct-value. │ │ │ │ │ halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale) │ │ │ │ │ halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1222 / 1278 │ │ │ │ │ │ │ │ │ │ halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale) │ │ │ │ │ halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override │ │ │ │ │ halui.rapid-override.value (float out) - current Rapid Override value │ │ │ │ │ halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0) │ │ │ │ │ @@ -53779,15 +53779,15 @@ │ │ │ │ │ halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction) │ │ │ │ │ halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion │ │ │ │ │ halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse │ │ │ │ │ halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward │ │ │ │ │ halui.spindle.N.start (bit, in) - starts the spindle │ │ │ │ │ halui.spindle.N.stop (bit, in) - stops the spindle │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1223 / 1278 │ │ │ │ │ │ │ │ │ │ 13.3.4.20. Tool │ │ │ │ │ halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis │ │ │ │ │ halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis │ │ │ │ │ halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis │ │ │ │ │ @@ -53808,15 +53808,15 @@ │ │ │ │ │ To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the │ │ │ │ │ halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto │ │ │ │ │ pin. You do this with an and2 component. The following figure shows how this is done. When the │ │ │ │ │ Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK │ │ │ │ │ for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component are │ │ │ │ │ on the and2.0.out will be on and this will start the program. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1224 / 1278 │ │ │ │ │ │ │ │ │ │ Figura 13.2: Remote Start Example │ │ │ │ │ The hal commands needed to accomplish the above are: │ │ │ │ │ net program-start-btn halui.mode.auto and2.0.in0 <= │ │ │ │ │ net program-run-ok and2.0.in1 <= halui.mode.is-auto │ │ │ │ │ @@ -53839,15 +53839,15 @@ │ │ │ │ │ Your input and output pins are connected to the pins wired to the other controller. They may be parallel │ │ │ │ │ port pins or any other I/O pins that you have access to. │ │ │ │ │ │ │ │ │ │ This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p │ │ │ │ │ signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC │ │ │ │ │ is paused. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1225 / 1278 │ │ │ │ │ │ │ │ │ │ To resume the LinuxCNC G-code program, when the external controller is ready it will make its output │ │ │ │ │ true. This will signal LinuxCNC that it should resume executing G-code. │ │ │ │ │ Difficulties in timing │ │ │ │ │ The ”resume” input return signal should not be longer than the time required to get the G-code │ │ │ │ │ @@ -53881,15 +53881,15 @@ │ │ │ │ │ send the command by using one of the linuxcnc command channel methods │ │ │ │ │ To retrieve messages from the error channel, poll the error channel periodically, and process any │ │ │ │ │ messages retrieved. │ │ │ │ │ poll the status channel, either periodically or as needed │ │ │ │ │ print any error message and explore the exception code │ │ │ │ │ linuxcnc also defines the error Python exception type to support error reporting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1226 / 1278 │ │ │ │ │ │ │ │ │ │ 13.5.3. Reading LinuxCNC status │ │ │ │ │ Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some │ │ │ │ │ 80+ values (run while linuxcnc is running for typical values): │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ @@ -53932,15 +53932,15 @@ │ │ │ │ │ Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256. │ │ │ │ │ block_delete │ │ │ │ │ (returns boolean) - block delete current status. │ │ │ │ │ call_level │ │ │ │ │ (returns integer) ̀ - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise │ │ │ │ │ specified │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1227 / 1278 │ │ │ │ │ │ │ │ │ │ command │ │ │ │ │ (returns string) - currently executing command. │ │ │ │ │ current_line │ │ │ │ │ (returns integer) - currently executing line. │ │ │ │ │ @@ -53982,15 +53982,15 @@ │ │ │ │ │ file │ │ │ │ │ (returns string) - currently loaded G-code filename with path. │ │ │ │ │ flood │ │ │ │ │ (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON. │ │ │ │ │ g5x_index │ │ │ │ │ (returns integer) - currently active coordinate system, G54=1, G55=2 etc. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1228 / 1278 │ │ │ │ │ │ │ │ │ │ g5x_offset │ │ │ │ │ (returns tuple of floats) - offset of the currently active coordinate system. │ │ │ │ │ g92_offset │ │ │ │ │ (returns tuple of floats) - pose of the current g92 offset. │ │ │ │ │ @@ -54032,15 +54032,15 @@ │ │ │ │ │ KINEMATICS_IDENTITY │ │ │ │ │ KINEMATICS_FORWARD_ONLY │ │ │ │ │ KINEMATICS_INVERSE_ONLY │ │ │ │ │ KINEMATICS_BOTH │ │ │ │ │ limit │ │ │ │ │ (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, maxSoftLimit=8. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1229 / 1278 │ │ │ │ │ │ │ │ │ │ linear_units │ │ │ │ │ (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value. │ │ │ │ │ lube │ │ │ │ │ (returns integer) - lube on flag. │ │ │ │ │ @@ -54081,15 +54081,15 @@ │ │ │ │ │ position │ │ │ │ │ (returns tuple of floats) - trajectory position. │ │ │ │ │ probe_tripped │ │ │ │ │ (returns boolean) - flag, True if probe has tripped (latch) │ │ │ │ │ probe_val │ │ │ │ │ (returns integer) - reflects value of the motion.probe-input pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1230 / 1278 │ │ │ │ │ │ │ │ │ │ probed_position │ │ │ │ │ (returns tuple of floats) - position where probe tripped. │ │ │ │ │ probing │ │ │ │ │ (returns boolean) - flag, True if a probe operation is in progress. │ │ │ │ │ @@ -54130,15 +54130,15 @@ │ │ │ │ │ tool_offset │ │ │ │ │ (returns tuple of floats) - offset values of the current tool. │ │ │ │ │ tool_table │ │ │ │ │ (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields: │ │ │ │ │ id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, │ │ │ │ │ backangle, orientation. The id and orientation are integers and the rest are floats. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1231 / 1278 │ │ │ │ │ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ s.poll() │ │ │ │ │ @@ -54174,15 +54174,15 @@ │ │ │ │ │ enabled │ │ │ │ │ (returns integer) - non-zero means enabled. │ │ │ │ │ fault │ │ │ │ │ (returns integer) - non-zero means axis amp fault. │ │ │ │ │ ferror_current │ │ │ │ │ (returns float) - current following error. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1232 / 1278 │ │ │ │ │ │ │ │ │ │ ferror_highmark │ │ │ │ │ (returns float) - magnitude of max following error. │ │ │ │ │ homed │ │ │ │ │ (returns integer) - non-zero means has been homed. │ │ │ │ │ @@ -54217,15 +54217,15 @@ │ │ │ │ │ units │ │ │ │ │ (returns float) - joint units per mm, or per degree for angular joints. │ │ │ │ │ (joint units are the same as machine units, unless set otherwise by the configuration parameter │ │ │ │ │ [JOINT_n]UNITS) │ │ │ │ │ velocity │ │ │ │ │ (returns float) - current velocity. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1233 / 1278 │ │ │ │ │ │ │ │ │ │ 13.5.4. The spindle dictionary │ │ │ │ │ brake │ │ │ │ │ (returns integer) - value of the spindle brake flag. │ │ │ │ │ direction │ │ │ │ │ @@ -54262,15 +54262,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ c = linuxcnc.command() │ │ │ │ │ def ok_for_mdi(): │ │ │ │ │ s.poll() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1234 / 1278 │ │ │ │ │ │ │ │ │ │ return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state ←== linuxcnc.INTERP_IDLE) │ │ │ │ │ if ok_for_mdi(): │ │ │ │ │ c.mode(linuxcnc.MODE_MDI) │ │ │ │ │ c.wait_complete() # wait until mode switch executed │ │ │ │ │ @@ -54311,15 +54311,15 @@ │ │ │ │ │ c.override_limits() │ │ │ │ │ c.program_open(”foo.ngc”) │ │ │ │ │ c.reset_interpreter() │ │ │ │ │ c.tool_offset(toolno, z_offset, │ │ │ │ │ │ │ │ │ │ x_offset, diameter, frontangle, backangle, orientation) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1235 / 1278 │ │ │ │ │ │ │ │ │ │ 13.5.6.1. linuxcnc.command attributes │ │ │ │ │ │ │ │ │ │ serial │ │ │ │ │ the current command serial number │ │ │ │ │ @@ -54360,15 +54360,15 @@ │ │ │ │ │ linuxcnc.JOG_STOP │ │ │ │ │ linuxcnc.JOG_CONTINUOUS │ │ │ │ │ linuxcnc.JOG_INCREMENT │ │ │ │ │ jjogmode │ │ │ │ │ True │ │ │ │ │ request individual joint jog (requires teleop_enable(0)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1236 / 1278 │ │ │ │ │ │ │ │ │ │ False │ │ │ │ │ request axis Cartesian coordinate jog (requires teleop_enable(1)) │ │ │ │ │ joint_num_or_axis_index │ │ │ │ │ For joint jog (jjogmode=1) │ │ │ │ │ @@ -54409,15 +54409,15 @@ │ │ │ │ │ set_block_delete(int) │ │ │ │ │ set block delete flag │ │ │ │ │ set_digital_output(int, int) │ │ │ │ │ set digital output pin to value │ │ │ │ │ set_feed_hold(int) │ │ │ │ │ set feed hold on/off │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1237 / 1278 │ │ │ │ │ │ │ │ │ │ set_feed_override(int) │ │ │ │ │ set feed override on/off │ │ │ │ │ set_max_limit(int, float) │ │ │ │ │ set max position limit for a given axis │ │ │ │ │ @@ -54454,15 +54454,15 @@ │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF) │ │ │ │ │ # Stop spindle 0 explicitly. │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF, 0) │ │ │ │ │ │ │ │ │ │ spindleoverride(float [, int]) │ │ │ │ │ Set spindle override factor. Defaults to spindle 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1238 / 1278 │ │ │ │ │ │ │ │ │ │ state(int) │ │ │ │ │ Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, or STATE_OFF. │ │ │ │ │ task_plan_sync() │ │ │ │ │ On completion of this call, the VAR file on disk is updated with live values from the interpreter. │ │ │ │ │ @@ -54501,15 +54501,15 @@ │ │ │ │ │ Here’s an example for reading values from an INI file through the linuxcnc.ini object: │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*# run as: │ │ │ │ │ # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini │ │ │ │ │ import sys │ │ │ │ │ import linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ inifile = linuxcnc.ini(sys.argv[1]) │ │ │ │ │ # inifile.find() returns None if the key wasn’t found - the │ │ │ │ │ # following idiom is useful for setting a default value: │ │ │ │ │ machine_name = inifile.find(”EMC”, ”MACHINE”) or ”unknown” │ │ │ │ │ print(”machine name: ”, machine_name) │ │ │ │ │ # inifile.findall() returns a list of matches, or an empty list │ │ │ │ │ @@ -54544,15 +54544,15 @@ │ │ │ │ │ clear() │ │ │ │ │ clear the position logger │ │ │ │ │ stop() │ │ │ │ │ stop the position logger │ │ │ │ │ │ │ │ │ │ 1239 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1240 / 1278 │ │ │ │ │ │ │ │ │ │ call() │ │ │ │ │ Plot the backplot now. │ │ │ │ │ last([int]) │ │ │ │ │ Return the most recent point on the plot or None │ │ │ │ │ @@ -54586,15 +54586,15 @@ │ │ │ │ │ 13.6.2.1. Sample HAL component code pattern │ │ │ │ │ This program creates two HAL pins that output the status of G20/G21. │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ import gi │ │ │ │ │ gi.require_version(’Gtk’, ’3.0’) │ │ │ │ │ from gi.repository import GObject │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1241 / 1278 │ │ │ │ │ │ │ │ │ │ from gi.repository import GLib │ │ │ │ │ import hal │ │ │ │ │ from hal_glib import GStat │ │ │ │ │ GSTAT = GStat() │ │ │ │ │ @@ -54634,15 +54634,15 @@ │ │ │ │ │ self.builder = builder │ │ │ │ │ GSTAT.connect(”state-estop”,lambda w: self.update_estate_label(’ESTOP’)) │ │ │ │ │ GSTAT.connect(”state-estop-reset”,lambda w: self.update_estate_label(’RESET’)) │ │ │ │ │ GSTAT.connect(”state-on”,lambda w: self.update_state_label(’MACHIBE ON’)) │ │ │ │ │ GSTAT.connect(”state-off”,lambda w: self.update_state_label(’MACHINE OFF’)) │ │ │ │ │ GSTAT.connect(”interp-paused”,lambda w: self.update_interp_label(’Paused’)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1242 / 1278 │ │ │ │ │ │ │ │ │ │ GSTAT.connect(”interp-run”,lambda w: self.update_interp_label(’Run’)) │ │ │ │ │ GSTAT.connect(”interp-idle”,lambda w: self.update_interp_label(’Idle’)) │ │ │ │ │ def update_state_label(self,text): │ │ │ │ │ self.builder.get_object(’state_label’).set_label(”State: %s” % (text)) │ │ │ │ │ @@ -54677,15 +54677,15 @@ │ │ │ │ │ def update_estate_label(self,text): │ │ │ │ │ self.w.e_state_label.setText(”E State: %s” % (text)) │ │ │ │ │ def update_interp_label(self,text): │ │ │ │ │ self.winterp_state_label.setText(”Interpreter State: %s” % (text)) │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,widgets,paths)] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1243 / 1278 │ │ │ │ │ │ │ │ │ │ 13.6.3. Messages │ │ │ │ │ periodic │ │ │ │ │ (returns nothing) - sent every 100 ms. │ │ │ │ │ state-estop │ │ │ │ │ @@ -54724,15 +54724,15 @@ │ │ │ │ │ interp-idle │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is idle. │ │ │ │ │ interp-paused │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is paused. │ │ │ │ │ interp-reading │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is reading. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1244 / 1278 │ │ │ │ │ │ │ │ │ │ interp-waiting │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is waiting. │ │ │ │ │ jograte-changed │ │ │ │ │ (returns float) - Sent when jog rate has changed. │ │ │ │ │ @@ -54776,15 +54776,15 @@ │ │ │ │ │ motion-mode-changed │ │ │ │ │ (returns integer) - Sent when motion’s mode has changed │ │ │ │ │ spindle-control-changed │ │ │ │ │ (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction │ │ │ │ │ & rate, at-speed state) │ │ │ │ │ Sent when spindle direction or running status changes or at-speed changes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1245 / 1278 │ │ │ │ │ │ │ │ │ │ current-feed-rate │ │ │ │ │ (returns float) - Sent when the current feed rate changes. │ │ │ │ │ current-x-rel-position │ │ │ │ │ (returns float) - Sent every 100 ms. │ │ │ │ │ @@ -54827,15 +54827,15 @@ │ │ │ │ │ rpm-mode │ │ │ │ │ (returns bool) - Sent when G97 status changes │ │ │ │ │ (constant RPM mode) │ │ │ │ │ radius-mode │ │ │ │ │ (returns bool) - Sent when G8 status changes │ │ │ │ │ display X in radius mode │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1246 / 1278 │ │ │ │ │ │ │ │ │ │ diameter-mode │ │ │ │ │ (returns bool) - Sent when G7 status changes │ │ │ │ │ display X in Diameter mode │ │ │ │ │ flood-changed │ │ │ │ │ @@ -54877,15 +54877,15 @@ │ │ │ │ │ machine-log-changed │ │ │ │ │ (returns None) - intended to be sent when machine log has changed. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ update-machine-log │ │ │ │ │ (returns string, string) - intended to be sent when updating the machine. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1247 / 1278 │ │ │ │ │ │ │ │ │ │ move-text-lineup │ │ │ │ │ (returns None) - intended to be sent when moving the cursor one line up in G-code display. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ move-text-linedown │ │ │ │ │ @@ -54929,15 +54929,15 @@ │ │ │ │ │ General message should be used a sparsely as reasonable because all object connected to it will │ │ │ │ │ have to parse it. │ │ │ │ │ It uses a Python dict for communication. │ │ │ │ │ The dict should include and be checked for a unique id keyname pair: │ │ │ │ │ ID: UNIQUE_ID_CODE │ │ │ │ │ The dict usually has more keyname pair - it depends on implementation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1248 / 1278 │ │ │ │ │ │ │ │ │ │ forced-update │ │ │ │ │ (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ progress │ │ │ │ │ @@ -54972,15 +54972,15 @@ │ │ │ │ │ (nothing) - This will return the state of Estop (BOOL) │ │ │ │ │ set_tool_touchoff │ │ │ │ │ (tool,axis,value) - This command will │ │ │ │ │ 1. record the current mode, │ │ │ │ │ 2. switch to MDI mode, │ │ │ │ │ 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE], │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1249 / 1278 │ │ │ │ │ │ │ │ │ │ 4. wait for it to complete, │ │ │ │ │ 5. invoke G43, │ │ │ │ │ 6. wait for it to complete, │ │ │ │ │ 7. switch back to the original mode. │ │ │ │ │ @@ -55018,15 +55018,15 @@ │ │ │ │ │ get_selected_axis │ │ │ │ │ (None) - returns string representing the internal selected axis letter. │ │ │ │ │ is_man_mode │ │ │ │ │ (None) is_mdi_mode │ │ │ │ │ (None) is_auto_mode │ │ │ │ │ (None) - │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1250 / 1278 │ │ │ │ │ │ │ │ │ │ is_on_and_idle │ │ │ │ │ (None) is_auto_running │ │ │ │ │ (None) is_auto_paused │ │ │ │ │ (None) is_file_loaded │ │ │ │ │ @@ -55041,30 +55041,30 @@ │ │ │ │ │ state-tags branch. │ │ │ │ │ │ │ │ │ │ 13.7. Vismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1251 / 1278 │ │ │ │ │ │ │ │ │ │ The Vismach viewport view can be manipulated as follows: │ │ │ │ │ zoom by scroll wheel or right button drag, │ │ │ │ │ pan by left button drag, │ │ │ │ │ rotate by middle-button drag or shift-drag. │ │ │ │ │ A Vismach model takes the form of a Python script and can use standard Python syntax. This means │ │ │ │ │ that there is more than one way to lay out the script, but in the examples given in this document I will │ │ │ │ │ use the simplest and most basic of them. │ │ │ │ │ The basic sequence in creating the Vismach model is │ │ │ │ │ Create the HAL pins that control the motion. │ │ │ │ │ Create the parts. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1252 / 1278 │ │ │ │ │ │ │ │ │ │ Define how they move. │ │ │ │ │ Assemble into movement groups. │ │ │ │ │ │ │ │ │ │ 13.7.1. Start the script │ │ │ │ │ @@ -55104,15 +55104,15 @@ │ │ │ │ │ cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder │ │ │ │ │ = CylinderZ(z1, r1, z2, r2) │ │ │ │ │ Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on │ │ │ │ │ the axis. │ │ │ │ │ sphere = Sphere(x, y, z, r) │ │ │ │ │ Creates a sphere of radius r at (x,y,z) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1253 / 1278 │ │ │ │ │ │ │ │ │ │ triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1, │ │ │ │ │ x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2) │ │ │ │ │ Creates a triangular plate between planes defined by the last two values parallel to the specified │ │ │ │ │ plane, with vertices given by the three coordinate pairs. │ │ │ │ │ @@ -55150,15 +55150,15 @@ │ │ │ │ │ The function arguments are: │ │ │ │ │ • first a collection/part which can be pre-created earlier in the script, or could be created at this │ │ │ │ │ point if preferred eg part1 = HalTranslate([Box(....)], ...). │ │ │ │ │ • The HAL component is the next argument, ie the object returned by the comp = hal.component(...) │ │ │ │ │ command. After that is the name of the HAL in that will animate the motion, this needs to match │ │ │ │ │ an existing HAL pin that is part of the HAL component created earlier in the script. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1254 / 1278 │ │ │ │ │ │ │ │ │ │ • Then follow the X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the │ │ │ │ │ positive X direction. │ │ │ │ │ However if the STL file happened to be in cm and the machine was in inches, this could be fixed │ │ │ │ │ @@ -55199,15 +55199,15 @@ │ │ │ │ │ head = AsciiSTL(filename=”./head.stl”) │ │ │ │ │ head = Color([0.3,0.3,0.3,1],[head]) │ │ │ │ │ head = Translate([head],0,0,4) │ │ │ │ │ head = Collection([head, tool, dogs, draw]) │ │ │ │ │ head = HalTranslate([head],c,”Z”,0,0,0.1) │ │ │ │ │ # base │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1255 / 1278 │ │ │ │ │ │ │ │ │ │ base = AsciiSTL(filename=”./base.stl”) │ │ │ │ │ base = Color([0.5,0.5,0.5,1],[base]) │ │ │ │ │ # mount head on it │ │ │ │ │ base = Collection([head, base]) │ │ │ │ │ @@ -55248,15 +55248,15 @@ │ │ │ │ │ import hal │ │ │ │ │ #create the HAL component and pins │ │ │ │ │ comp = hal.component(”compname”) │ │ │ │ │ comp.newpin(”pin_name”, hal.HAL_FLOAT, hal.HAL_IN) │ │ │ │ │ ... │ │ │ │ │ #create the floor, tool and work │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ floor = Box(-50, -50, -3, 50, 50, 0) │ │ │ │ │ work = Capture() │ │ │ │ │ tooltip = Capture() │ │ │ │ │ ... │ │ │ │ │ #Build and assemble the model │ │ │ │ │ part1 = Collection([Box(-6,-3,94,6,3,100)]) │ │ │ │ │ @@ -55267,23 +55267,23 @@ │ │ │ │ │ #create a top-level model │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ #Start the visualization │ │ │ │ │ main(model, tooltip, work, 100, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1256 / 1278 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1257 / 1278 │ │ │ │ │ │ │ │ │ │ Parte III │ │ │ │ │ │ │ │ │ │ Glossary, Copyright & History │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1258 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 14 │ │ │ │ │ │ │ │ │ │ Overleaf │ │ │ │ │ │ │ │ │ │ @@ -55303,15 +55303,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1259 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 15 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -55345,15 +55345,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1260 / 1278 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -55396,15 +55396,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1261 / 1278 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -55447,15 +55447,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1262 / 1278 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -55499,15 +55499,15 @@ │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum │ │ │ │ │ speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program │ │ │ │ │ for the first time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1263 / 1278 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these │ │ │ │ │ requirements it is necessary to install a realtime kernel such as RTAI and build the software to │ │ │ │ │ run in the special real-time environment. For this reason real-time software runs in kernel-space. │ │ │ │ │ @@ -55548,28 +55548,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1264 / 1278 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1265 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 16 │ │ │ │ │ │ │ │ │ │ Copyright │ │ │ │ │ 16.1. Legal Section │ │ │ │ │ @@ -55596,15 +55596,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1266 / 1278 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any such │ │ │ │ │ manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -55653,15 +55653,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover │ │ │ │ │ must present the full title with all words of the title equally prominent and visible. You may add other │ │ │ │ │ material on the covers in addition. Copying with changes limited to the covers, as long as they preserve │ │ │ │ │ the title of the Document and satisfy these conditions, can be treated as verbatim copying in other │ │ │ │ │ respects. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1267 / 1278 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ @@ -55708,15 +55708,15 @@ │ │ │ │ │ N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any Invariant │ │ │ │ │ Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1268 / 1278 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -55757,15 +55757,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of this │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1269 / 1278 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ You may not copy, modify, sublicense, or distribute the Document except as expressly provided for │ │ │ │ │ @@ -55792,15 +55792,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1270 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 17 │ │ │ │ │ │ │ │ │ │ Historia de LinuxCNC │ │ │ │ │ 17.1. Origin │ │ │ │ │ @@ -55832,15 +55832,15 @@ │ │ │ │ │ interested in improving EMC. Many people requested or coded small improvements to the code. Ray │ │ │ │ │ Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code │ │ │ │ │ in which the user interface was written, a simpler method was sought. Fred Proctor of NIST suggested a scripting language and wrote code to interface the Tcl/Tk scripting language to the internal │ │ │ │ │ NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the │ │ │ │ │ predominant user interface for EMC at the time. │ │ │ │ │ For NIST’s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1271 / 1278 │ │ │ │ │ │ │ │ │ │ By this time interest in EMC as beginning to pick up substantially. As more and more people attempted │ │ │ │ │ installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of │ │ │ │ │ compiling the EMC code became glaringly obvious. Many attempts to document the process and write │ │ │ │ │ scripts were attempted, some with moderate success. The problem of matching the correct version of │ │ │ │ │ @@ -55875,15 +55875,15 @@ │ │ │ │ │ The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0. │ │ │ │ │ │ │ │ │ │ 17.1.2. Additional Info │ │ │ │ │ NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf . │ │ │ │ │ NIST also published a paper on the history of EMC and its transition to open source. The paper is also │ │ │ │ │ available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1272 / 1278 │ │ │ │ │ │ │ │ │ │ Capítulo 18 │ │ │ │ │ │ │ │ │ │ Índice alfabético │ │ │ │ │ _ │ │ │ │ │ @@ -55967,15 +55967,15 @@ │ │ │ │ │ connecting-rs485, 344 │ │ │ │ │ Controlled Point, 64 │ │ │ │ │ coolant, 63 │ │ │ │ │ Cooling, 65 │ │ │ │ │ coordinate measuring machine, 1260 │ │ │ │ │ Coordinate Systems, 819 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Core components, 250 │ │ │ │ │ Creating Userspace Python Components, 302 │ │ │ │ │ Custom sections and variables, 156 │ │ │ │ │ Cutter Radius Compensation, 832 │ │ │ │ │ D │ │ │ │ │ debounce, 282 │ │ │ │ │ @@ -56083,15 +56083,15 @@ │ │ │ │ │ Spindle Stop │ │ │ │ │ Manual Out, 903 │ │ │ │ │ G89 Boring │ │ │ │ │ Dwell │ │ │ │ │ Feed Out, 903 │ │ │ │ │ G90 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G92 Coordinate System Offset, 904 │ │ │ │ │ G92.1 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ @@ -56202,15 +56202,15 @@ │ │ │ │ │ HAL xor2 │ │ │ │ │ xor2, 216 │ │ │ │ │ HAL: Implementation, 203 │ │ │ │ │ HAL: Interconnections Design, 203 │ │ │ │ │ HAL: Testing, 203 │ │ │ │ │ HAL:Function, 206 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ HAL:Thread, 206 │ │ │ │ │ HAL:Velocity example, 247 │ │ │ │ │ Halcmd Tutorial, 220 │ │ │ │ │ Halmeter, 312 │ │ │ │ │ Tutorial Halmeter, 226 │ │ │ │ │ Halui Examples, 1223 │ │ │ │ │ @@ -56317,15 +56317,15 @@ │ │ │ │ │ M48 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M5 Spindle Control, 908 │ │ │ │ │ M50 Feed Override Control, 911 │ │ │ │ │ M51 Spindle Speed Override, 911 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ M52 Adaptive Feed Control, 911 │ │ │ │ │ M53 Feed Stop Control, 911 │ │ │ │ │ M6-Tool-Change, 909 │ │ │ │ │ M60 Pallet Change Pause, 908 │ │ │ │ │ M61 Set Current Tool, 912 │ │ │ │ │ M62 - M65 Digital Output Control, 912 │ │ │ │ │ @@ -56432,15 +56432,15 @@ │ │ │ │ │ real-time, 1263 │ │ │ │ │ refsig-timing-diagram, 337 │ │ │ │ │ Repeat Loop, 924 │ │ │ │ │ Return Values, 925 │ │ │ │ │ RS274NGC, 1263 │ │ │ │ │ RS274NGC STARTUP CODE, 163 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ RTAI, 1263 │ │ │ │ │ RTAPI, 1263 │ │ │ │ │ RTLINUX, 1263 │ │ │ │ │ Running LinuxCNC, 14 │ │ │ │ │ S │ │ │ │ │ s32, 213 │ │ │ │ │ @@ -56548,15 +56548,15 @@ │ │ │ │ │ User Foreword, 43 │ │ │ │ │ User Introduction, 44 │ │ │ │ │ USER M PATH, 164 │ │ │ │ │ V │ │ │ │ │ Variables, 156 │ │ │ │ │ VOLATILE HOME, 186 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ W │ │ │ │ │ weighted_sum, 216 │ │ │ │ │ Words, 840 │ │ │ │ │ world coordinates, 1264 │ │ │ │ │ X │ │ │ │ │ xor2, 216 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_es.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Getting Started │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Índice general │ │ │ │ │ 1. About LinuxCNC │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -115,15 +115,15 @@ │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ 3.5. Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.6. Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 10 │ │ │ │ │ │ │ │ │ │ @@ -272,15 +272,15 @@ │ │ │ │ │ │ │ │ │ │ 28 │ │ │ │ │ │ │ │ │ │ 5.5.2. INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 5.6. HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ @@ -434,15 +434,15 @@ │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ 5.13.4.XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 5.13.4.1.xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ @@ -581,15 +581,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 49 │ │ │ │ │ 49 │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ The LinuxCNC Team │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ Copyright © 2000-2020 LinuxCNC.org │ │ │ │ │ @@ -607,15 +607,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 1 │ │ │ │ │ │ │ │ │ │ About LinuxCNC │ │ │ │ │ 1.1. The Software │ │ │ │ │ @@ -642,15 +642,15 @@ │ │ │ │ │ It can simultaneously move up to 9 axes and supports a variety of interfaces. │ │ │ │ │ The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC │ │ │ │ │ software at the computer, or open loop with step-servos or stepper motors. │ │ │ │ │ Motion control features include: cutter radius and length compensation, path deviation limited to │ │ │ │ │ a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed │ │ │ │ │ override, and constant velocity control. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 55 │ │ │ │ │ │ │ │ │ │ Support for non-Cartesian motion systems is provided via custom kinematics modules. Available │ │ │ │ │ architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary │ │ │ │ │ joints to provide motion such as PUMA or SCARA robots. │ │ │ │ │ LinuxCNC runs on Linux using real time extensions. │ │ │ │ │ @@ -683,15 +683,15 @@ │ │ │ │ │ 1.3.2. Mailing List │ │ │ │ │ An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at │ │ │ │ │ their convenience. You get better exposure to your questions on a mailing list than on the IRC but │ │ │ │ │ answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or │ │ │ │ │ individual replies back depending on how you set up your account. │ │ │ │ │ You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 55 │ │ │ │ │ │ │ │ │ │ 1.3.3. Web Forum │ │ │ │ │ A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the │ │ │ │ │ linuxcnc.org home page. │ │ │ │ │ This is quite active but the demographic is more user-biased than the mailing list. If you want to be │ │ │ │ │ @@ -701,15 +701,15 @@ │ │ │ │ │ A Wiki site is a user maintained web site that anyone can add to or edit. │ │ │ │ │ │ │ │ │ │ The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or │ │ │ │ │ │ │ │ │ │ 1.3.5. Bug Reports │ │ │ │ │ Report bugs to the LinuxCNC github bug tracker. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 2 │ │ │ │ │ │ │ │ │ │ System Requirements │ │ │ │ │ 2.1. Minimum Requirements │ │ │ │ │ @@ -736,15 +736,15 @@ │ │ │ │ │ 2.2. Kernel and Version requirements │ │ │ │ │ LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can, however run on a standard kernel in simulation mode for purposes such as checking G-code, testing config │ │ │ │ │ files and learning the system. To work with these kernel versions there are two versions of LinuxCNC │ │ │ │ │ distributed. The package names are ”linuxcnc” and ”linuxcnc-uspace”. │ │ │ │ │ The realtime kernel options are preempt-rt, RTAI and Xenomai. │ │ │ │ │ You can discover the kernel version of your system with the command: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 55 │ │ │ │ │ │ │ │ │ │ uname -a │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ @@ -780,15 +780,15 @@ │ │ │ │ │ an extended time will give you the info you need to determine suitability. │ │ │ │ │ │ │ │ │ │ 2.3.2. Video Cards │ │ │ │ │ If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize │ │ │ │ │ your video card or monitor. This can sometimes be worked-around by installing drivers or creating / │ │ │ │ │ editing Xorg.conf files. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 3 │ │ │ │ │ │ │ │ │ │ Getting LinuxCNC │ │ │ │ │ This section describes the recommended way to download and make a fresh install of LinuxCNC. │ │ │ │ │ @@ -814,15 +814,15 @@ │ │ │ │ │ │ │ │ │ │ 3.1.1. Normal Download │ │ │ │ │ For x86 PCs Download the Live/Install CD by clicking here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso │ │ │ │ │ For the Raspberry Pi a complete SD card image is available here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 55 │ │ │ │ │ │ │ │ │ │ This can be installed using the normal Pi install process including with the Raspberry Pi Imager app. │ │ │ │ │ This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version │ │ │ │ │ of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both │ │ │ │ │ WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by │ │ │ │ │ @@ -858,15 +858,15 @@ │ │ │ │ │ 2. Then compare to these checksums │ │ │ │ │ md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41 │ │ │ │ │ sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700 │ │ │ │ │ │ │ │ │ │ Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program, │ │ │ │ │ but there are alternatives. More information can be found at: How To MD5SUM │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 55 │ │ │ │ │ │ │ │ │ │ 3.2. Write the image to a bootable device │ │ │ │ │ The Raspberry Pi image is a completes SD card image and should be written to an SD card in the │ │ │ │ │ normal way. │ │ │ │ │ The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB │ │ │ │ │ @@ -901,15 +901,15 @@ │ │ │ │ │ 4. Select the write speed. It is recommended that you write at the lowest possible speed. │ │ │ │ │ 5. Start the burning process. │ │ │ │ │ 6. If a choose a file name for the disc image window pops up, just pick OK. │ │ │ │ │ Writing the image to a DVD in Windows │ │ │ │ │ │ │ │ │ │ 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 55 │ │ │ │ │ │ │ │ │ │ 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up. │ │ │ │ │ 3. Open Infra Recorder, and select the Actions menu, then Burn image. │ │ │ │ │ Writing the image to a DVD in Mac OSX │ │ │ │ │ 1. Download the .iso file │ │ │ │ │ @@ -943,15 +943,15 @@ │ │ │ │ │ line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything │ │ │ │ │ except the operating system when asked to. │ │ │ │ │ │ │ │ │ │ aviso │ │ │ │ │ Do not upgrade the operating system if prompted to do so. You should accept OS updates │ │ │ │ │ however, especially security updates. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 55 │ │ │ │ │ │ │ │ │ │ 3.6. Install Problems │ │ │ │ │ In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot │ │ │ │ │ recognize the hard drive during the boot up. │ │ │ │ │ │ │ │ │ │ @@ -1054,15 +1054,15 @@ │ │ │ │ │ Debian Wheezy: deb https://linuxcnc.org wheezy base │ │ │ │ │ Ubuntu Precise: deb https://linuxcnc.org precise base │ │ │ │ │ nota │ │ │ │ │ Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is │ │ │ │ │ strongly advised not to use either for a new install, and to seriously consider upgrading an existing │ │ │ │ │ installation. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 55 │ │ │ │ │ │ │ │ │ │ The Buster / RTAI package is only available on amd64, but there are very few surviving systems that │ │ │ │ │ can not run a 64-bit OS. │ │ │ │ │ aviso │ │ │ │ │ There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The │ │ │ │ │ @@ -1100,15 +1100,15 @@ │ │ │ │ │ 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right │ │ │ │ │ click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the │ │ │ │ │ system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels │ │ │ │ │ need not be deleted, but grub boot configuration changes will be needed beyond the scope of │ │ │ │ │ this document. │ │ │ │ │ 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ │ │ │ │ │ 6. Add the apt repository: │ │ │ │ │ @@ -1144,15 +1144,15 @@ │ │ │ │ │ sudo apt-get update │ │ │ │ │ │ │ │ │ │ 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc │ │ │ │ │ sudo apt-get install linux-image-4.19.195-rtai-amd64 │ │ │ │ │ │ │ │ │ │ 6. Install the RTAI application layer │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-get install rtai-modules-4.19.195 │ │ │ │ │ │ │ │ │ │ 7. Install LinuxCNC (may be necessary to reboot before installing) │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ @@ -1189,15 +1189,15 @@ │ │ │ │ │ │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ # Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ │ │ │ │ │ 4. Add a new apt source │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 55 │ │ │ │ │ │ │ │ │ │ sudo add-apt-repository ”deb https://linuxcnc.org/ precise base 2.8-rt” │ │ │ │ │ │ │ │ │ │ 5. Fetch the package list from linuxcnc.org. │ │ │ │ │ sudo apt-get update │ │ │ │ │ @@ -1211,15 +1211,15 @@ │ │ │ │ │ 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name │ │ │ │ │ is 3.4-9-rtai-686-pae. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Run │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 4 │ │ │ │ │ │ │ │ │ │ Running LinuxCNC │ │ │ │ │ 4.1. Invoking LinuxCNC │ │ │ │ │ @@ -1246,15 +1246,15 @@ │ │ │ │ │ applications like PyVCP or GladeVCP. │ │ │ │ │ • attic - Obsolete or historical configurations. │ │ │ │ │ The sim configurations are often the most useful starting point for new users and are organized around │ │ │ │ │ supported GUIs: │ │ │ │ │ axis - Keyboard and Mouse GUI │ │ │ │ │ gmoccapy - Touch Screen GUI │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 55 │ │ │ │ │ │ │ │ │ │ gscreen - Touch Screen GUI │ │ │ │ │ low_graphics - Keyboard GUI │ │ │ │ │ pyvcp_demo - Paneles de Control Virtuales Python │ │ │ │ │ qtvcp_screens - Guis diseñadas con Qt5 y Python │ │ │ │ │ @@ -1285,15 +1285,15 @@ │ │ │ │ │ applications that can be used with linuxcnc: │ │ │ │ │ info - creates a file with system information that may be useful for problem diagnosis. │ │ │ │ │ gladevcp - Example GladeVCP applications. │ │ │ │ │ halrun - Starts halrun in an terminal. │ │ │ │ │ latency - Applications to investigate latency │ │ │ │ │ • latency-test - standard test │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 55 │ │ │ │ │ │ │ │ │ │ • latency-plot - stripchart │ │ │ │ │ • latency-histogram - histogram │ │ │ │ │ parport - Applications to test parport. │ │ │ │ │ pyvcp - Example pyvcp applications. │ │ │ │ │ @@ -1305,15 +1305,15 @@ │ │ │ │ │ Figura 4.1: Selector de Configuración de LinuxCNC │ │ │ │ │ Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration. │ │ │ │ │ Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly │ │ │ │ │ launch this configuration without showing the Configuration Selector screen. │ │ │ │ │ When you select a configuration from the Sample Configurations section, it will automatically place a │ │ │ │ │ copy of that config in the ~/linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 55 │ │ │ │ │ │ │ │ │ │ 4.3. Next steps in configuration │ │ │ │ │ After finding the sample configuration that uses the same interface hardware as your machine (or a │ │ │ │ │ simulator configuration), and saving a copy to your home directory, you can customize it according to │ │ │ │ │ the details of your machine. Refer to the Integrator Manual for topics on configuration. │ │ │ │ │ @@ -1340,15 +1340,15 @@ │ │ │ │ │ HAL files, local modifications will then prevail. │ │ │ │ │ The Configuration selector makes a symbolic link in the user configuration directory (named hallib) │ │ │ │ │ that points to the system HAL file library. This link simplifies copying a library file. For example, to │ │ │ │ │ copy the library core_sim.hal file in order to make local modifications: │ │ │ │ │ cd ~/linuxcnc/configs/name_of_configuration │ │ │ │ │ cp hallib/core_sim.hal core_sim.hal │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 5 │ │ │ │ │ │ │ │ │ │ Updating LinuxCNC │ │ │ │ │ Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example │ │ │ │ │ @@ -1380,15 +1380,15 @@ │ │ │ │ │ │ │ │ │ │ You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also │ │ │ │ │ available for Debian Jessie or Debian Buster if you happen to already be running one of those. │ │ │ │ │ You will also need to check which realtime kernel is being used: │ │ │ │ │ uname -r │ │ │ │ │ 4.19.0-9-rt-amd64 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 55 │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC │ │ │ │ │ version to install. │ │ │ │ │ @@ -1433,15 +1433,15 @@ │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rt │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 55 │ │ │ │ │ │ │ │ │ │ Click Add Source, then Close in the Software Sources window. If it pops up a window informing │ │ │ │ │ you that the information about available software is out-of-date, click the Reload button. │ │ │ │ │ │ │ │ │ │ 5.1.2. Upgrading to the new version │ │ │ │ │ @@ -1461,15 +1461,15 @@ │ │ │ │ │ │ │ │ │ │ 5.1.3. Ubuntu Precise │ │ │ │ │ Click on the Dash Home icon in the top left. │ │ │ │ │ In the Search field, type ”update”, then click on the Update Manager icon. │ │ │ │ │ Click the Check button to fetch the list of packages available. │ │ │ │ │ Click the Install Updates button to install the new versions of all packages. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 55 │ │ │ │ │ │ │ │ │ │ 5.2. Updating without Network │ │ │ │ │ To update without a network connection you need to download the .deb then install it with dpkg. The │ │ │ │ │ .debs can be found in https://linuxcnc.org/dists/ . │ │ │ │ │ You have to drill down from the above link to find the correct deb for your installation. Open a terminal │ │ │ │ │ @@ -1506,15 +1506,15 @@ │ │ │ │ │ /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting │ │ │ │ │ correspondingly needs to change from libcanterp.so to canterp.so. │ │ │ │ │ │ │ │ │ │ 5.4. Updating Configuration Files (for 2.8.x) │ │ │ │ │ The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your │ │ │ │ │ machine configuration. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 55 │ │ │ │ │ │ │ │ │ │ The main difference is that LinuxCNC no longer makes any assumptions about which joint controls │ │ │ │ │ which axis. This change is generally termed ”joints-axes” after the name of the development branch │ │ │ │ │ where the changes started. This change has been in development since at least 2010, and has finally │ │ │ │ │ been merged. │ │ │ │ │ @@ -1554,15 +1554,15 @@ │ │ │ │ │ spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for │ │ │ │ │ the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a │ │ │ │ │ HAL file loadrt entry for motmod). │ │ │ │ │ The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match. │ │ │ │ │ The spindle control pin names have been changed to make spindles look more like axes and joints. │ │ │ │ │ motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 55 │ │ │ │ │ │ │ │ │ │ take care of these changes. To control extra spindles the G and M-codes which control spindle speed │ │ │ │ │ now accept an additional ”$” argument, for example M3 $2 to start the third spindle. ”$” was chosen │ │ │ │ │ to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match │ │ │ │ │ any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man │ │ │ │ │ @@ -1610,15 +1610,15 @@ │ │ │ │ │ │ │ │ │ │ HAL file: │ │ │ │ │ │ │ │ │ │ loadrt [KINS]KINEMATICS │ │ │ │ │ │ │ │ │ │ haltcl file: loadrt $::KINS(KINEMATICS) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.6. Lathe Configurations │ │ │ │ │ Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation │ │ │ │ │ configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for │ │ │ │ │ homing the unused Y coordinate. These arrangements are no longer required or recommended. │ │ │ │ │ @@ -1658,15 +1658,15 @@ │ │ │ │ │ │ │ │ │ │ Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters: │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XZ │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 2 │ │ │ │ │ [TRAJ]COORDINATES = XZ │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 55 │ │ │ │ │ │ │ │ │ │ Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint │ │ │ │ │ positioning (for homing): │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ @@ -1712,15 +1712,15 @@ │ │ │ │ │ [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer │ │ │ │ │ │ │ │ │ │ Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe │ │ │ │ │ [JOINT_N]LOCKING_INDEXER = 1 │ │ │ │ │ │ │ │ │ │ HAL pins can be created to coordinate use of a locking indicator joint: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 55 │ │ │ │ │ │ │ │ │ │ joint.N.unlock │ │ │ │ │ (BIT output from HAL) │ │ │ │ │ joint.N.is-unlocked (BIT input to │ │ │ │ │ HAL) │ │ │ │ │ @@ -1762,15 +1762,15 @@ │ │ │ │ │ For example, lines like this will no longer be accepted: │ │ │ │ │ MAX_VELOCITY = 7.5 # This is the max velocity of the axis. │ │ │ │ │ │ │ │ │ │ They could be transformed into pairs of lines like this: │ │ │ │ │ # This is the max velocity of the axis. │ │ │ │ │ MAX_VELOCITY = 7.5 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.11. [TRAJ] settings │ │ │ │ │ In 2.7.x versions, trajectory planning ([TRAJ]) settings included: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_ACCELERATION │ │ │ │ │ @@ -1838,15 +1838,15 @@ │ │ │ │ │ axis.L.jog-vel-mode │ │ │ │ │ │ │ │ │ │ where N is a joint number and L is an axis letter. │ │ │ │ │ To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint │ │ │ │ │ number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example, │ │ │ │ │ if joint 1 corresponds exactly to axis letter y: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 55 │ │ │ │ │ │ │ │ │ │ net jora_1_y_enable │ │ │ │ │ => joint.1.jog-enable => axis.y.jog-enable │ │ │ │ │ net jora_1_y_scale │ │ │ │ │ => joint.1.jog-scale => axis.y.jog-scale │ │ │ │ │ @@ -1906,15 +1906,15 @@ │ │ │ │ │ 5.6.1. halcompile │ │ │ │ │ The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt) │ │ │ │ │ the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names= │ │ │ │ │ items for userspace (loadusr) components. │ │ │ │ │ For components using personality, the maximum number is now settable by a command line option │ │ │ │ │ -P|--personalities. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 55 │ │ │ │ │ │ │ │ │ │ 5.6.2. Parameter to Pin changes │ │ │ │ │ The following HAL output pins were changed from parameters to pins so that they can be connected │ │ │ │ │ to signals: │ │ │ │ │ motion.servo.last-period │ │ │ │ │ @@ -1946,15 +1946,15 @@ │ │ │ │ │ homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode │ │ │ │ │ and axis jogging (coordinate letter X,Y,…) is used. This is appropriate for all G-code moves requested │ │ │ │ │ by MDI commands or by G-code programs. │ │ │ │ │ Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide │ │ │ │ │ a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that │ │ │ │ │ use non-IDENTITY kinematics. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 55 │ │ │ │ │ │ │ │ │ │ In many common situations, joint jogging is never needed since homing is accomplished using home │ │ │ │ │ switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine, │ │ │ │ │ issues the Home-All command, the machine homes and changes to world mode automatically. See │ │ │ │ │ Homing Configuration. │ │ │ │ │ @@ -2001,15 +2001,15 @@ │ │ │ │ │ was: halui.jog.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ is: halui.joint.N.plus │ │ │ │ │ is: halui.joint.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 55 │ │ │ │ │ │ │ │ │ │ where N is a joint number (0 … num_noints-1) or selected for the joint selected by the halui.joint.N.select │ │ │ │ │ pins. │ │ │ │ │ 5.8.2.3. Additional pin renames │ │ │ │ │ The HAL pins for selected joints were renamed for consistency with related pins. │ │ │ │ │ @@ -2042,15 +2042,15 @@ │ │ │ │ │ 2. Preview Tab display of joints or axes according to joint or teleop mode │ │ │ │ │ 3. Preview Tab display of Home and Limit icons in joint mode │ │ │ │ │ 4. Preview Tab display of All-homed and Any-limit icons in teleop mode │ │ │ │ │ 5. DRO Tab display of joint or axes according to joint or teleop mode │ │ │ │ │ 6. Jogging is supported in both joint and teleop motion modes. │ │ │ │ │ 7. External changes to the joint/teleop motion mode are detected. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 55 │ │ │ │ │ │ │ │ │ │ 5.8.3.4. Home icons │ │ │ │ │ For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a │ │ │ │ │ joint is homed. │ │ │ │ │ For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint │ │ │ │ │ @@ -2085,15 +2085,15 @@ │ │ │ │ │ commands have been simplified to use an argument that is just the coordinate letter. │ │ │ │ │ Commands now using a coordinate letter argument are: │ │ │ │ │ 1. emc_pos_offset │ │ │ │ │ 2. emc_abs_cmd_pos │ │ │ │ │ 3. emc_abs_act_pos │ │ │ │ │ 4. emc_rel_cmd_pos │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 55 │ │ │ │ │ │ │ │ │ │ 5. emc_rel_act_pos │ │ │ │ │ 6. emc_tool_offset │ │ │ │ │ 7. emc_probed_pos │ │ │ │ │ │ │ │ │ │ @@ -2132,15 +2132,15 @@ │ │ │ │ │ is: set jog_stop joint_number|axis_letter │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Test for teleop mode using command: get teleop_enable │ │ │ │ │ If TELEOP_ENABLE=YES, use axis_letter; │ │ │ │ │ Else use joint_number │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 55 │ │ │ │ │ │ │ │ │ │ nota │ │ │ │ │ Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234 │ │ │ │ │ in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided │ │ │ │ │ the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding │ │ │ │ │ @@ -2170,15 +2170,15 @@ │ │ │ │ │ │ │ │ │ │ 5.12. Simulator configurations (updates for joints axes 2.8.x) │ │ │ │ │ 5.12.1. Pre-joints_axes │ │ │ │ │ Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common │ │ │ │ │ milling machine — a Cartesian system with trivial kinematics and three axes named X Y Z. Typical │ │ │ │ │ HAL file entries: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 55 │ │ │ │ │ │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = core_sim.hal │ │ │ │ │ HALFILE = sim_spindle_encoder.hal │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ @@ -2217,15 +2217,15 @@ │ │ │ │ │ Omitting one or more of the core functions allows testing without without the function or addition of │ │ │ │ │ new HALFILEs to implement or expand on the functionality. │ │ │ │ │ 5.12.2.1. Equivalent HAL commands file │ │ │ │ │ When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to │ │ │ │ │ show the halcmd commands issued. The file name is based on the name of the INI file with _cmds │ │ │ │ │ appended to the basename and a conventional .hal file extension. Example: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 55 │ │ │ │ │ │ │ │ │ │ inifilename: │ │ │ │ │ example.ini │ │ │ │ │ equivalent_halfilename: example_cmds.hal │ │ │ │ │ │ │ │ │ │ @@ -2257,15 +2257,15 @@ │ │ │ │ │ Commits to unreleased branches may make changes that affect testers and early-adopters of the │ │ │ │ │ unreleased software. │ │ │ │ │ │ │ │ │ │ 5.13.1. Motion pins │ │ │ │ │ New pins (see the motion man page for more info): │ │ │ │ │ --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction --- │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.2. HAL pins │ │ │ │ │ Name changes: │ │ │ │ │ was: axis.L.vel-cmd │ │ │ │ │ is: axis.l.teleop-vel-cmd │ │ │ │ │ @@ -2296,15 +2296,15 @@ │ │ │ │ │ 5.13.6. bldc3_hall │ │ │ │ │ The bldc_hall3 component has been removed. The bldc component is more flexible and better tested. │ │ │ │ │ │ │ │ │ │ 5.13.7. [JOINT_n]HOME_SEQUENCE Starting values │ │ │ │ │ Starting sequence values may be 0, 1 (or -1) only. See the ”Homing Configuration” documentation for │ │ │ │ │ more information. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.8. [JOINT_n]HOME_SEQUENCE Negative values │ │ │ │ │ Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent │ │ │ │ │ misalignment (racking) in common gantry configurations. As always, machines with any kinematics │ │ │ │ │ type must be homed prior to enabling conventional world mode jogging. │ │ │ │ │ @@ -2337,15 +2337,15 @@ │ │ │ │ │ │ │ │ │ │ 5.14.4. Configuration Updates │ │ │ │ │ 5.14.4.1. INI file Settings │ │ │ │ │ New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET — support encoder with index that does not │ │ │ │ │ reset upon receipt of index pulse following assertion of index_enable. │ │ │ │ │ axis.py default for [DISPLAY]GEOMETRY was:”XYZBCUVW”,is:”XYZABCUVW” │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5. Code Updates │ │ │ │ │ Management of the internal storage of tool data and the communication of same between EMCIO and │ │ │ │ │ TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata │ │ │ │ │ is deprecated and may be removed before a new release. │ │ │ │ │ @@ -2375,15 +2375,15 @@ │ │ │ │ │ 5.14.5.5. Motion │ │ │ │ │ The motion module supports kinematics modules that define new functions kinematicsSwitchable() │ │ │ │ │ and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided │ │ │ │ │ for use of such kinematics modules. │ │ │ │ │ Provided kinematics modules that implement kinematics switching use the switchkins.o object to │ │ │ │ │ supply the required rtapi_main() and related functions. Kinematics modules that do not support kinematics switching use the macro ”KINS_NOT_SWITCHABLE” provided by kinematics.h. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5.6. Switchkins Kinematics Modules │ │ │ │ │ Several kinematics modules are now switchable between their eponymous kinematics and an alternate │ │ │ │ │ identity kinematics mode. │ │ │ │ │ Kinematic modules supporting switchkins: │ │ │ │ │ @@ -2412,15 +2412,15 @@ │ │ │ │ │ lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified. │ │ │ │ │ lib/python/vismach.py: new HAL pin vismach.plotclear │ │ │ │ │ │ │ │ │ │ 5.14.6. HAL │ │ │ │ │ 5.14.6.1. Components │ │ │ │ │ sim_home_switch: added I/O pin for index-enable │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.6.2. Motion module pins │ │ │ │ │ motion.feed-upm — current feed in units per minute │ │ │ │ │ │ │ │ │ │ 5.14.7. Configs │ │ │ │ │ @@ -2430,15 +2430,15 @@ │ │ │ │ │ 5.14.7.2. Simulation Configs │ │ │ │ │ sim/configs/axis/axis_9axis: demonstrate simulated encoder index │ │ │ │ │ │ │ │ │ │ 5.15. Changes after 2.8.x │ │ │ │ │ Future versions of this document will take into account changes made to the development branch │ │ │ │ │ after the latest 2.8.x release. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 6 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -2472,15 +2472,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 55 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -2523,15 +2523,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 55 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -2574,15 +2574,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 55 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -2626,15 +2626,15 @@ │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum │ │ │ │ │ speed of the machine. It is often desirable to limit the rapid rate when testing a G-code program │ │ │ │ │ for the first time. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 55 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these │ │ │ │ │ requirements it is necessary to install a realtime kernel such as RTAI and build the software to │ │ │ │ │ run in the special real-time environment. For this reason real-time software runs in kernel-space. │ │ │ │ │ @@ -2675,28 +2675,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 55 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 7 │ │ │ │ │ │ │ │ │ │ Legal Section │ │ │ │ │ Translations of this file provided in the source tree are not legally binding. │ │ │ │ │ @@ -2722,15 +2722,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 55 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any such │ │ │ │ │ manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -2779,15 +2779,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover │ │ │ │ │ must present the full title with all words of the title equally prominent and visible. You may add other │ │ │ │ │ material on the covers in addition. Copying with changes limited to the covers, as long as they preserve │ │ │ │ │ the title of the Document and satisfy these conditions, can be treated as verbatim copying in other │ │ │ │ │ respects. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 55 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ @@ -2834,15 +2834,15 @@ │ │ │ │ │ N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any Invariant │ │ │ │ │ Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 55 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -2883,15 +2883,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of this │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 55 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ You may not copy, modify, sublicense, or distribute the Document except as expressly provided for │ │ │ │ │ @@ -2918,15 +2918,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 55 │ │ │ │ │ │ │ │ │ │ Capítulo 8 │ │ │ │ │ │ │ │ │ │ Índice alfabético │ │ │ │ │ A │ │ │ │ │ @@ -3003,15 +3003,15 @@ │ │ │ │ │ RS274NGC, 47 │ │ │ │ │ RTAI, 47 │ │ │ │ │ RTAPI, 47 │ │ │ │ │ RTLINUX, 47 │ │ │ │ │ Running LinuxCNC, 15 │ │ │ │ │ S │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ servo motor, 47 │ │ │ │ │ Signed Integer, 47 │ │ │ │ │ spindle, 47 │ │ │ │ │ stepper motor, 47 │ │ │ │ │ System Requirements, 4 │ │ │ │ │ T │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_es.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Integrator Information │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Índice general │ │ │ │ │ 1. Stepper Information │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ │ │ │ │ │ │ 17 │ │ │ │ │ │ │ │ │ │ 3.12.3.Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 18 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 18 │ │ │ │ │ │ │ │ │ │ Capítulo 1 │ │ │ │ │ │ │ │ │ │ Stepper Information │ │ │ │ │ 1.1. Stepper Motor Operation │ │ │ │ │ @@ -154,15 +154,15 @@ │ │ │ │ │ time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing the │ │ │ │ │ overall torque. This relationship between speed and torque is largely inversely proportional. │ │ │ │ │ In the below example, the charging time for three coils is shown when the applied voltage is stepped │ │ │ │ │ from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time │ │ │ │ │ taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full │ │ │ │ │ current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again: │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 18 │ │ │ │ │ │ │ │ │ │ If the rate at which step changes are applied to the coils is significantly shorter than the rise time, │ │ │ │ │ it’s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus │ │ │ │ │ maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before │ │ │ │ │ the step voltage is removed, but the 4 mH and 8 mH coils cannot: │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several │ │ │ │ │ orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor │ │ │ │ │ may have a rating of only a handful of volts, yet the power supply and driver could be operating at │ │ │ │ │ 48 VDC or more. │ │ │ │ │ Nearly all modern stepper motor drivers on the market today are constant-current types. That is, │ │ │ │ │ the current being applied to each winding is fixed irrespective of how much voltage is being applied. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 18 │ │ │ │ │ │ │ │ │ │ Most drivers accomplish this by monitoring the current being drawn through the motor windings and │ │ │ │ │ rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending │ │ │ │ │ on the drivers being used, it may even be possible to hear this high frequency whistling in the motors │ │ │ │ │ themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding │ │ │ │ │ @@ -234,15 +234,15 @@ │ │ │ │ │ introduced. │ │ │ │ │ Several methods exist to help control the effects of resonance, all with varying degrees of complexity, │ │ │ │ │ effectiveness and side effects: │ │ │ │ │ Microstepping can help reduce resonance by using smaller step changes in current between each │ │ │ │ │ step. These smaller step changes cause less ringing in the motor and windings and thus cause less │ │ │ │ │ excitation at the point of resonance. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 18 │ │ │ │ │ │ │ │ │ │ Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic │ │ │ │ │ method of reducing resonance, always accelerating or decelerating through the resonant peak. │ │ │ │ │ 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. │ │ │ │ │ More advanced stepper motor drives may have the ability to switch between stepping modes such │ │ │ │ │ @@ -279,15 +279,15 @@ │ │ │ │ │ in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper │ │ │ │ │ motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely │ │ │ │ │ meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with │ │ │ │ │ leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees │ │ │ │ │ of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain │ │ │ │ │ the necessary resolution and torque gains. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 18 │ │ │ │ │ │ │ │ │ │ 1.5. Open and Closed Loop │ │ │ │ │ In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver │ │ │ │ │ receives no feedback from the motor that it has achieved the desired outcome when commanded │ │ │ │ │ to begin stepping. The assumption by the software, driver and end user is that the motor operated │ │ │ │ │ @@ -307,15 +307,15 @@ │ │ │ │ │ to the downstream driver as it would normally when running in open loop. In these situations the │ │ │ │ │ drivers usually include an alarm output which signals the software to halt when the load placed on │ │ │ │ │ the stepper becomes too great for the driver to compensate without losing steps. │ │ │ │ │ More advanced implementations of closed loop operation bring the encoder signal all the way back │ │ │ │ │ to the host computer, but require that a much higher hardware and software overhead be installed to │ │ │ │ │ manage the encoder feedback and calculation and delivery of drive compensation. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 18 │ │ │ │ │ │ │ │ │ │ Capítulo 2 │ │ │ │ │ │ │ │ │ │ Stepper Timing │ │ │ │ │ This page is for step and direction timing of stepper drives. │ │ │ │ │ @@ -378,15 +378,15 @@ │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ │ │ │ │ │ 1000 │ │ │ │ │ │ │ │ │ │ Falling │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 202 │ │ │ │ │ │ │ │ │ │ @@ -478,15 +478,15 @@ │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g212rev15.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g213vrev7.html │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 320 │ │ │ │ │ │ │ │ │ │ @@ -623,15 +623,15 @@ │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_manual.pdf │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.piclist.com/techref/io/stepper/linistep/index.htm │ │ │ │ │ http://www.piclist.com/techref/io/stepper/THB6064/index.htm │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ *Motion │ │ │ │ │ Control │ │ │ │ │ │ │ │ │ │ MSD542 │ │ │ │ │ @@ -855,15 +855,15 @@ │ │ │ │ │ http://www.kelinginc.net/kL6852.pdf │ │ │ │ │ https://www.sherline.com/- │ │ │ │ │ │ │ │ │ │ http://www.lewetz.de/download/ibstep3se.pdf │ │ │ │ │ http://www.compumotor.com │ │ │ │ │ manuals/ZETA/ZETA_Rev_A_Entire.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ www.cncdrive.com │ │ │ │ │ Dugong │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ @@ -1102,15 +1102,15 @@ │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM503d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM705d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM806d_P.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M415Bm.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M542V2m.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M752m.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ Time │ │ │ │ │ 1500 │ │ │ │ │ @@ -1289,15 +1289,15 @@ │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ Rising │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ http://cnc4you.co.uk/resources/CW5045.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 18 │ │ │ │ │ │ │ │ │ │ Capítulo 3 │ │ │ │ │ │ │ │ │ │ Best Wiring Practices │ │ │ │ │ 3.1. Electrical Noise │ │ │ │ │ @@ -1325,15 +1325,15 @@ │ │ │ │ │ this discussion the terms earth and common must be made distinct from each other to avoid confusion. │ │ │ │ │ │ │ │ │ │ 3.3. Wire Selection and Use │ │ │ │ │ Wire comes in many types, sizes and configurations. Wading through all the wire available is a monumental task of its own, but for the purposes of this article it is only necessary to consider the types of │ │ │ │ │ wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have │ │ │ │ │ some effect on the overall system. What follows are some tips that may prove helpful. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 18 │ │ │ │ │ │ │ │ │ │ 3.3.1. Single Conductor Wire │ │ │ │ │ Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than │ │ │ │ │ stranded, but more likely to break if used in applications where repeated bending is expected. Fortunately, the prevalence of stranded wire on the market means that its use should be encouraged │ │ │ │ │ wherever possible. │ │ │ │ │ @@ -1376,15 +1376,15 @@ │ │ │ │ │ For very noisy environments, a further subset of the above two shielding methodologies may be employed, whereby both braid and foil shielding is used simultaneously. Individual wires in a multi-conductor │ │ │ │ │ cable may also be shielded along with an overall shield being applied to the entire cable jacket. │ │ │ │ │ │ │ │ │ │ 3.4. AC Line Voltage │ │ │ │ │ The incoming mains AC that powers the CNC system can pick up and carry noise into the power │ │ │ │ │ supplies and other equipment. For example, if the incoming supply is also used to feed large motors, │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 18 │ │ │ │ │ │ │ │ │ │ electrical noise may be generated on the line feeding the CNC components. Although most modern │ │ │ │ │ electronic devices feature built-in mains filtering to help minimise the susceptibility to mains-borne │ │ │ │ │ interference, the custom and modularised nature of a CNC system can mean that components used │ │ │ │ │ come from a wide variety of sources with differing degrees of inherent noise immunity. │ │ │ │ │ @@ -1423,15 +1423,15 @@ │ │ │ │ │ In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system │ │ │ │ │ separate from each other, and separate from the AC mains earth unless there is a specific requirement │ │ │ │ │ to tie them together. In most cases the common points of the heavy-duty power sections of the CNC │ │ │ │ │ system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common │ │ │ │ │ points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool │ │ │ │ │ probe circuitry etc) to prevent cross-contamination of the two systems. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 18 │ │ │ │ │ │ │ │ │ │ Should it be necessary to connect several common points of different PSUs together, or to connect │ │ │ │ │ a common of a PSU to AC main earth, it should be done at a single point only and as close to the │ │ │ │ │ common terminal of the PSUs as possible. │ │ │ │ │ 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. │ │ │ │ │ @@ -1472,15 +1472,15 @@ │ │ │ │ │ issues with a limit switch operating with a 24V signal. │ │ │ │ │ │ │ │ │ │ 3.8. Stepper or Servo Motor Drivers │ │ │ │ │ The metal housing of the driver should be connected to the local mains earth in the CNC system. Some │ │ │ │ │ driver enclosures will indicate a specific terminal as being the earthing point, in which case this point │ │ │ │ │ must be connected to earth via a dedicated wire. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 18 │ │ │ │ │ │ │ │ │ │ Control and power wiring should be segregated as much as possible. Route signal input wires well │ │ │ │ │ away from power supply and motor drive output lines. │ │ │ │ │ It is recommended to run both driver input and motor output wiring in shielded cable with the shield │ │ │ │ │ terminated to mains earth. The shield on the input lines helps reduce the amount of interference they │ │ │ │ │ @@ -1516,15 +1516,15 @@ │ │ │ │ │ against this surface as much as possible while wiring between two points. │ │ │ │ │ │ │ │ │ │ 3.11. Mechanical Noise │ │ │ │ │ Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly │ │ │ │ │ when operated. More often than not the switch contacts will physically bounce against each other │ │ │ │ │ several times within a very short space of time when operated. This may be interpreted by the machine │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 18 │ │ │ │ │ │ │ │ │ │ controller as multiple operations of the same signal when in reality only one clean state change was │ │ │ │ │ expected. Sometimes it doesn’t matter, but in many circumstances it is desirable to ensure that any │ │ │ │ │ state change is as clean as possible and does not interfere with the operation of the machine. This is │ │ │ │ │ accomplished by debouncing. │ │ │ │ │ @@ -1562,15 +1562,15 @@ │ │ │ │ │ 3.12.2. Wiring Schematics │ │ │ │ │ As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The │ │ │ │ │ schematic does not have to be all that neat, but it should be understandable in such a way that it │ │ │ │ │ could be easily interpreted at a later date, ideally by anyone who may need to service the equipment. │ │ │ │ │ Include details such as wire colours used, pin numbers, part numbers and any other notes that will │ │ │ │ │ help explain particular details not immediately apparent from first glance at the schematic. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 18 │ │ │ │ │ │ │ │ │ │ 3.12.3. Wiring Identification │ │ │ │ │ Take the time to identify each wire in the system. When a bundle of wires has been cable-tied in place │ │ │ │ │ it can be very difficult to look at them and know for sure which wire goes where. Label the motor wires │ │ │ │ │ with the joint or axis they are associated with, or identify each signal wire so that it is easy to identify ├── linuxcnc-doc-fr_2.9.0~pre1+git20230208.f1270d6ed7-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary │ │ --rw-r--r-- 0 0 0 1132 2023-02-10 04:33:18.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 25959972 2023-02-10 04:33:18.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 1136 2023-02-10 04:33:18.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 25958684 2023-02-10 04:33:18.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: linuxcnc-doc-fr │ │ │ │ Source: linuxcnc │ │ │ │ Version: 2.9.0~pre1+git20230208.f1270d6ed7-1 │ │ │ │ Architecture: all │ │ │ │ Maintainer: LinuxCNC Developers │ │ │ │ -Installed-Size: 26736 │ │ │ │ +Installed-Size: 26735 │ │ │ │ Recommends: xdg-utils │ │ │ │ Suggests: pdf-viewer │ │ │ │ Breaks: linuxcnc-uspace (<= 2.9.0~pre0+git20220402.2500863908-4) │ │ │ │ Replaces: linuxcnc-uspace (<= 2.9.0~pre0+git20220402.2500863908-4) │ │ │ │ Provides: linuxcnc-doc │ │ │ │ Section: misc │ │ │ │ Priority: optional │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -4,18 +4,18 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/applications/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 331 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-documentation_fr.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 357 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gcoderef_fr.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 372 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-gettingstarted_fr.desktop │ │ │ │ -rw-r--r-- 0 root (0) root (0) 361 2022-10-24 01:10:25.000000 ./usr/share/applications/linuxcnc-integratorinfo_fr.desktop │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 823628 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 25817380 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 498737 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf │ │ │ │ --rw-r--r-- 0 root (0) root (0) 151649 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 823596 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 25816180 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 498730 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_fr.pdf │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 151621 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_fr.pdf │ │ │ │ -rw-r--r-- 0 root (0) root (0) 14404 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc/gcode_fr.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-fr/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7077 2023-02-10 04:33:18.000000 ./usr/share/doc/linuxcnc-doc-fr/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 42238 2023-02-09 21:12:22.000000 ./usr/share/doc/linuxcnc-doc-fr/copyright │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 277 2022-07-01 22:54:06.000000 ./usr/share/doc-base/linuxcnc-doc-fr.linuxcnc-doc-fr │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/lintian/ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Developer_fr.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Manuel du développeur │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Table des matières │ │ │ │ │ 1 Introduction │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ │ │ │ │ │ 15 │ │ │ │ │ │ │ │ │ │ 3.8.3.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 16 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.8.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 16 │ │ │ │ │ │ │ │ │ │ @@ -283,15 +283,15 @@ │ │ │ │ │ │ │ │ │ │ 19 │ │ │ │ │ │ │ │ │ │ 3.8.16.1Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 20 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 3.8.16.2Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 20 │ │ │ │ │ │ │ │ │ │ @@ -451,15 +451,15 @@ │ │ │ │ │ │ │ │ │ │ 3.21.3Process line │ │ │ │ │ │ │ │ │ │ 27 │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 3.21.4Configuration Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 28 │ │ │ │ │ │ │ │ │ │ @@ -625,15 +625,15 @@ │ │ │ │ │ │ │ │ │ │ 40 │ │ │ │ │ │ │ │ │ │ 4.14Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 40 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ 5 Coding Style │ │ │ │ │ │ │ │ │ │ 41 │ │ │ │ │ │ │ │ │ │ @@ -779,15 +779,15 @@ │ │ │ │ │ │ │ │ │ │ 53 │ │ │ │ │ │ │ │ │ │ 8.4.1 Repo Git officiel de LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 53 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 8.4.2 Use of Git in the LinuxCNC project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ @@ -876,15 +876,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 63 │ │ │ │ │ 63 │ │ │ │ │ 68 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 1 │ │ │ │ │ │ │ │ │ │ Introduction │ │ │ │ │ │ │ │ │ │ @@ -904,15 +904,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 2 │ │ │ │ │ │ │ │ │ │ HAL General Reference │ │ │ │ │ 2.1 HAL Entity Names │ │ │ │ │ @@ -941,15 +941,15 @@ │ │ │ │ │ This results in a structure that resembles a directory tree. Even though halcmd doesn’t recognize the │ │ │ │ │ tree structure, proper choice of naming conventions will let it group related items together (since it │ │ │ │ │ sorts the names). In addition, higher level tools can be designed to recognize such structure, if the │ │ │ │ │ names provide the necessary information. To do that, all HAL components should follow these rules: │ │ │ │ │ — Dots (“.”) separate levels of the hierarchy. This is analogous to the slash (“/”) in a filename. │ │ │ │ │ — Hyphens (“-”) separate words or fields in the same level of the hierarchy. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 69 │ │ │ │ │ │ │ │ │ │ — HAL components should not use underscores or “MixedCase”. 1 │ │ │ │ │ — Use only lowercase letters and numbers in names. │ │ │ │ │ │ │ │ │ │ 2.3 Hardware Driver Naming Conventions │ │ │ │ │ @@ -993,15 +993,15 @@ │ │ │ │ │ way for the user to say, the device-num 0 is specific to the device that has ID XXX, its subsets will all carry a number starting │ │ │ │ │ with 0. But at present, some drivers use the ID directly as the peripheral number. Which means it is possible to have a device │ │ │ │ │ number 2, without having any in number 0. This is a bug that should disappear in version 2.1. │ │ │ │ │ 3. One exception to the ”channel numbers start at zero” rule is the parallel port. Its HAL pins are numbered with the │ │ │ │ │ corresponding pin number on the DB-25 connector. This is convenient for wiring, but inconsistent with other drivers. There is │ │ │ │ │ some debate over whether this is a bug or a feature. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 69 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ An individual I/O channel might have just a single HAL pin associated with it, but most have more │ │ │ │ │ than one. For example, a digital input has two pins, one is the state of the physical pin, the other │ │ │ │ │ is the same thing inverted. That allows the configurator to choose between active high and active │ │ │ │ │ @@ -1044,15 +1044,15 @@ │ │ │ │ │ Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc │ │ │ │ │ board. │ │ │ │ │ │ │ │ │ │ 4. Note to driver programmers: do NOT implement separate functions for different I/O types unless they are interruptible │ │ │ │ │ and can work in independent threads. If interrupting an encoder read, reading digital inputs, and then resuming the encoder │ │ │ │ │ read will cause problems, then implement a single function that does everything. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 3 │ │ │ │ │ │ │ │ │ │ Code Notes │ │ │ │ │ 3.1 Intended audience │ │ │ │ │ @@ -1082,15 +1082,15 @@ │ │ │ │ │ follow this distinction, but the internals of the motion controller do. │ │ │ │ │ — JOINT - A joint is one of the movable parts of the machine. Joints are distinct from axes, although │ │ │ │ │ the two terms are sometimes (mis)used to mean the same thing. In LinuxCNC, a joint is a physical thing that can be moved, not a coordinate in space. For example, the quill, knee, saddle, and │ │ │ │ │ table of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as │ │ │ │ │ are the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated │ │ │ │ │ with it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 69 │ │ │ │ │ │ │ │ │ │ trivial kinematics that may be the case. Even on those machines, joint position and axis position │ │ │ │ │ are fundamentally different things. In this document, the terms joint and axis are used carefully │ │ │ │ │ to respect their distinct meanings. Unfortunately that isn’t necessarily true everywhere else. In │ │ │ │ │ particular, GUIs for machines with trivial kinematics may gloss over or completely hide the distinction between joints and axes. In addition, the INI file uses the term axis for data that would │ │ │ │ │ @@ -1119,19 +1119,19 @@ │ │ │ │ │ 3.4 Architecture overview │ │ │ │ │ There are four components contained in the LinuxCNC Architecture: a motion controller (EMCMOT), │ │ │ │ │ a discrete IO controller (EMCIO), a task executor which coordinates them (EMCTASK) and several │ │ │ │ │ text-mode and graphical User Interfaces. Each of them will be described in the current document, │ │ │ │ │ both from the design point of view and from the developers point of view (where to find needed data, │ │ │ │ │ how to easily extend/modify things, etc.). │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 69 │ │ │ │ │ │ │ │ │ │ 3.4.1 LinuxCNC software architecture │ │ │ │ │ At the coarsest level, LinuxCNC is a hierarchy of three controllers: the task level command handler and program interpreter, the motion controller, and the discrete I/O controller. The discrete I/O │ │ │ │ │ controller is implemented as a hierarchy of controllers, in this case for spindle, coolant, and auxiliary │ │ │ │ │ (e.g., estop, lube) subsystems. The task controller coordinates the actions of the motion and discrete │ │ │ │ │ @@ -1159,19 +1159,19 @@ │ │ │ │ │ processes. For realtime motion control, the script first loads the default tpmod and homemod modules │ │ │ │ │ and then loads the kinematics and motion modules according to settings in halfiles specified by the │ │ │ │ │ INI file. │ │ │ │ │ Custom (user-built) homing or trajectory-planning modules can be used in place of the default modules │ │ │ │ │ via INI file settings or command line options. Custom modules must implement all functions used by │ │ │ │ │ the default modules. The halcompile utility can be used to create a custom module. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 69 │ │ │ │ │ │ │ │ │ │ 3.6 Block diagrams and Data Flow │ │ │ │ │ The following figure is a block diagram of a joint controller. There is one joint controller per joint. │ │ │ │ │ The joint controllers work at a lower level than the kinematics, a level where all joints are completely │ │ │ │ │ independent. All the data for a joint is in a single joint structure. Some members of that structure are │ │ │ │ │ @@ -1187,15 +1187,15 @@ │ │ │ │ │ — emcmotStatus->joints[n].coarse_pos - This is the desired position, in joint coordinates, but before │ │ │ │ │ interpolation. It is updated at the traj rate, not the servo rate. In coord mode, it is generated by │ │ │ │ │ applying inverse kins to (1) In teleop mode, it is generated by applying inverse kins to (1) In free │ │ │ │ │ mode, it is copied from (3), I think. │ │ │ │ │ — ’emcmotStatus->joints[n].pos_cmd - This is the desired position, in joint coords, after interpolation. │ │ │ │ │ A new set of these coords is generated every servo period. In coord mode, it is generated from (2) │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 69 │ │ │ │ │ │ │ │ │ │ by the interpolator. In teleop mode, it is generated from (2) by the interpolator. In free mode, it is │ │ │ │ │ generated by the free mode traj planner. │ │ │ │ │ — emcmotStatus->joints[n].motor_pos_cmd - This is the desired position, in motor coords. Motor coords are generated by adding backlash compensation, lead screw error compensation, and offset │ │ │ │ │ (for homing) to (3). It is generated the same way regardless of the mode, and is the output to the │ │ │ │ │ @@ -1212,26 +1212,26 @@ │ │ │ │ │ because one or more axes aren’t homed. In that case, the options are: A) fake it by copying (1), or │ │ │ │ │ B) admit that we don’t really know the Cartesian coordinates, and simply don’t update actualPos. │ │ │ │ │ Whatever approach is used, I can see no reason not to do it the same way regardless of the operating │ │ │ │ │ mode. I would propose the following: If there are forward kins, use them, unless they don’t work │ │ │ │ │ because of unhomed axes or other problems, in which case do (B). If no forward kins, do (A), since │ │ │ │ │ otherwise actualPos would never get updated. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3.7 Homing │ │ │ │ │ 3.7.1 Homing state diagram │ │ │ │ │ │ │ │ │ │ 13 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 69 │ │ │ │ │ │ │ │ │ │ 3.7.2 Another homing diagram │ │ │ │ │ │ │ │ │ │ 3.8 Commands │ │ │ │ │ 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. │ │ │ │ │ @@ -1247,15 +1247,15 @@ │ │ │ │ │ It does not disable the motion controller or change any state information, it simply cancels any motion │ │ │ │ │ that is currently in progress. 1 │ │ │ │ │ 1. It seems that the higher level code (TASK and above) also use ABORT to clear faults. Whenever there is a persistent fault │ │ │ │ │ (such as being outside the hardware limit switches), the higher level code sends a constant stream of ABORTs to the motion │ │ │ │ │ controller trying to make the fault go away. Thousands of them…. That means that the motion controller should avoid persistent │ │ │ │ │ faults. This needs to be looked into. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.1.1 Requirements │ │ │ │ │ None. The command is always accepted and acted on immediately. │ │ │ │ │ 3.8.1.2 Results │ │ │ │ │ In free mode, the free mode trajectory planners are disabled. That results in each joint stopping as fast │ │ │ │ │ @@ -1287,15 +1287,15 @@ │ │ │ │ │ free mode. However the trajectory planner per se is not used, instead movement is controlled by a │ │ │ │ │ velocity vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space │ │ │ │ │ instead of joint space. On a machine with trivial kinematics, there is little difference between teleop │ │ │ │ │ mode and free mode, and GUIs for those machines might never even issue this command. However │ │ │ │ │ for non-trivial machines like robots and hexapods, teleop mode is used for most user commanded jog │ │ │ │ │ type movements. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.3.1 Requirements │ │ │ │ │ The command handler will reject the TELEOP command with an error message if the kinematics │ │ │ │ │ cannot be activated because the one or more joints have not been homed. In addition, if any joint is in │ │ │ │ │ motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error │ │ │ │ │ @@ -1330,15 +1330,15 @@ │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.5.2 Results │ │ │ │ │ If the controller is already enabled, nothing. If not, the controller is enabled. Queues and interpolators │ │ │ │ │ are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated │ │ │ │ │ with active joints are turned on. If forward kinematics are not available, the machine is switched to │ │ │ │ │ free mode. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.6 DISABLE │ │ │ │ │ The DISABLE command disables the motion controller. │ │ │ │ │ 3.8.6.1 Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ @@ -1366,15 +1366,15 @@ │ │ │ │ │ Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually │ │ │ │ │ it will set the amp enable HAL pin false. │ │ │ │ │ │ │ │ │ │ 3.8.9 ACTIVATE_JOINT │ │ │ │ │ The ACTIVATE_JOINT command turns on all the calculations associated with a single joint, but does │ │ │ │ │ not change the joint’s amp enable output pin. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.9.1 Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.9.2 Results │ │ │ │ │ Calculations for the specified joint are enabled. The amp enable pin is not changed, however, any │ │ │ │ │ @@ -1401,15 +1401,15 @@ │ │ │ │ │ The DISABLE_WATCHDOG command disables a hardware based watchdog (if present). │ │ │ │ │ 3.8.12.1 Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.12.2 Results │ │ │ │ │ Currently nothing. The old watchdog was a strange thing that used a specific sound card. A new │ │ │ │ │ watchdog interface may be designed in the future. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.13 PAUSE │ │ │ │ │ The PAUSE command stops the trajectory planner. It has no effect in free or teleop mode. At this point │ │ │ │ │ I don’t know if it pauses all motion immediately, or if it completes the current move and then pauses │ │ │ │ │ before pulling another move from the queue. │ │ │ │ │ @@ -1437,15 +1437,15 @@ │ │ │ │ │ │ │ │ │ │ 3.8.16 SCALE │ │ │ │ │ The SCALE command scales all velocity limits and commands by a specified amount. It is used to │ │ │ │ │ implement feed rate override and other similar functions. The scaling works in free, teleop, and coord │ │ │ │ │ modes, and affects everything, including homing velocities, etc. However, individual joint velocity │ │ │ │ │ limits are unaffected. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.16.1 Requirements │ │ │ │ │ None. The command can be issued at any time, and will always be accepted. │ │ │ │ │ 3.8.16.2 Results │ │ │ │ │ All velocity commands are scaled by the specified constant. │ │ │ │ │ @@ -1475,15 +1475,15 @@ │ │ │ │ │ 3.8.19 JOG_CONT │ │ │ │ │ The JOG_CONT command initiates a continuous jog on a single joint. A continuous jog is generated │ │ │ │ │ by setting the free mode trajectory planner’s target position to a point beyond the end of the joint’s │ │ │ │ │ range of travel. This ensures that the planner will move constantly until it is stopped by either the joint │ │ │ │ │ limits or an ABORT command. Normally, a GUI sends a JOG_CONT command when the user presses │ │ │ │ │ a jog button, and ABORT when the button is released. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.19.1 Requirements │ │ │ │ │ The command handler will reject the JOG_CONT command with an error message if machine is not in │ │ │ │ │ free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not │ │ │ │ │ enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the │ │ │ │ │ @@ -1520,15 +1520,15 @@ │ │ │ │ │ location, however they also stop when they hit a limit, or on an ABORT command. │ │ │ │ │ 3.8.21.1 Requirements │ │ │ │ │ The command handler will silently reject the JOG_ABS command if machine is not in free mode, or if │ │ │ │ │ any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will │ │ │ │ │ also silently ignore the command if the joint is already at or beyond its limit and the commanded jog │ │ │ │ │ would make it worse. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 69 │ │ │ │ │ │ │ │ │ │ 3.8.21.2 Results │ │ │ │ │ The free mode trajectory planner for the joint identified by emcmotCommand->axis is activated, the │ │ │ │ │ target position is set to emcmotCommand->offset, and the velocity limit is set to emcmotCommand>vel. The free mode trajectory planner will generate a smooth trapezoidal move from the present │ │ │ │ │ position to the target position. The planner can correctly handle changes in the target position that │ │ │ │ │ @@ -1561,15 +1561,15 @@ │ │ │ │ │ (More later) │ │ │ │ │ │ │ │ │ │ 3.8.27 SET_xix │ │ │ │ │ There are approximately 15 SET_xxx commands, where xxx is the name of some configuration parameter. It is anticipated that there will be several more SET commands as more parameters are added. │ │ │ │ │ I would like to find a cleaner way of setting and reading configuration parameters. The existing methods require many lines of code to be added to multiple files each time a parameter is added. Much │ │ │ │ │ of that code is identical or nearly identical for every parameter. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 69 │ │ │ │ │ │ │ │ │ │ 3.9 Backlash and Screw Error Compensation │ │ │ │ │ + FIXME Backlash and Screw Error Compensation │ │ │ │ │ │ │ │ │ │ 3.10 Task controller (EMCTASK) │ │ │ │ │ @@ -1587,15 +1587,15 @@ │ │ │ │ │ iocontrol main loop process: │ │ │ │ │ — registers for SIGTERM and SIGINT signals from the OS. │ │ │ │ │ — checks to see it HAL inputs have changed │ │ │ │ │ — checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status │ │ │ │ │ — checks for I/O related NML messages │ │ │ │ │ nml message numbers: from emc.hh: │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 69 │ │ │ │ │ │ │ │ │ │ #define EMC_IO_INIT_TYPE │ │ │ │ │ ((NMLTYPE) 1601) │ │ │ │ │ #define EMC_TOOL_STAT_TYPE │ │ │ │ │ ((NMLTYPE) 1199) │ │ │ │ │ @@ -1643,15 +1643,15 @@ │ │ │ │ │ to the data, and the size of the data. │ │ │ │ │ No memory for data storage is allocated. │ │ │ │ │ │ │ │ │ │ 3.16 SharedMemory │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 69 │ │ │ │ │ │ │ │ │ │ 3.17 ShmBuffer │ │ │ │ │ Class for passing NML messages between local processes using a shared memory buffer. Much of │ │ │ │ │ internal workings are inherited from the CMS class. │ │ │ │ │ │ │ │ │ │ @@ -1685,15 +1685,15 @@ │ │ │ │ │ message buffer or just buffer). This buffer may exist as a shared memory block accessed by other │ │ │ │ │ CMS/NML processes, or a local and private buffer for data being transferred by network or serial │ │ │ │ │ interfaces. │ │ │ │ │ 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 │ │ │ │ │ for internal use and allow for the message to be encoded if this option is chosen (encoded data will │ │ │ │ │ be covered later). The following figure is an internal view of the buffer space. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 69 │ │ │ │ │ │ │ │ │ │ CMS buffer The CMS base class is primarily responsible for creating the communications pathways │ │ │ │ │ and interfacing to the operating system. │ │ │ │ │ │ │ │ │ │ 3.21 Configuration file format │ │ │ │ │ @@ -1711,15 +1711,15 @@ │ │ │ │ │ — neut - a boolean to indicate if the data in the buffer is encoded in a machine independent format, │ │ │ │ │ or raw. │ │ │ │ │ — RPC# - Obsolete - Place holder retained for backward compatibility only. │ │ │ │ │ — buffer# - A unique ID number used if a server controls multiple buffers. │ │ │ │ │ — max_procs - is the maximum processes allowed to connect to this buffer. │ │ │ │ │ — key - is a numerical identifier for a shared memory buffer │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 69 │ │ │ │ │ │ │ │ │ │ 3.21.2 Type specific configs │ │ │ │ │ The buffer type implies additional configuration options whilst the host operating system precludes │ │ │ │ │ certain combinations. In an attempt to distill published documentation in to a coherent format, only │ │ │ │ │ the SHMEM buffer type will be covered. │ │ │ │ │ @@ -1753,15 +1753,15 @@ │ │ │ │ │ — host - specifies where on the network this process is running. │ │ │ │ │ — ops - gives the process read only, write only, or read/write access to the buffer. │ │ │ │ │ — server - specifies if this process will running a server for this buffer. │ │ │ │ │ — timeout - sets the timeout characteristics for accesses to the buffer. │ │ │ │ │ — master - indicates if this process is responsible for creating and destroying the buffer. │ │ │ │ │ — c_num - an integer between zero and (max_procs -1) │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 69 │ │ │ │ │ │ │ │ │ │ 3.21.4 Configuration Comments │ │ │ │ │ Some of the configuration combinations are invalid, whilst others imply certain constraints. On a │ │ │ │ │ Linux system, GLOBMEM is obsolete, whilst PHANTOM is only really useful in the testing stage of an │ │ │ │ │ application, likewise for FILEMEM. LOCMEM is of little use for a multi-process application, and only │ │ │ │ │ @@ -1799,15 +1799,15 @@ │ │ │ │ │ Not to be confused with NMLmsg, RCS_STAT_MSG, or RCS_CMD_MSG. │ │ │ │ │ NML is responsible for parsing the config file, configuring the cms buffers and is the mechanism for │ │ │ │ │ routing messages to the correct buffer(s). To do this, NML creates several lists for: │ │ │ │ │ — cms buffers created or connected to. │ │ │ │ │ — processes and the buffers they connect to │ │ │ │ │ — a long list of format functions for each message type │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 69 │ │ │ │ │ │ │ │ │ │ This last item is probably the nub of much of the malignment of libnml/rcslib and NML in general. Each │ │ │ │ │ message that is passed via NML requires a certain amount of information to be attached in addition to │ │ │ │ │ the actual data. To do this, several formatting functions are called in sequence to assemble fragments │ │ │ │ │ of the overall message. The format functions will include NML_TYPE, MSG_TYPE, in addition to the │ │ │ │ │ @@ -1846,15 +1846,15 @@ │ │ │ │ │ is to be used. │ │ │ │ │ │ │ │ │ │ 3.23 Adding custom NML commands │ │ │ │ │ LinuxCNC is pretty awesome, but some parts need some tweaking. As you know communication is │ │ │ │ │ done through NML channels, the data sent through such a channel is one of the classes defined │ │ │ │ │ in emc.hh (implemented in emc.cc). If somebody needs a message type that doesn’t exist, he should │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 69 │ │ │ │ │ │ │ │ │ │ follow these steps to add a new one. (The Message I added in the example is called EMC_IO_GENERIC │ │ │ │ │ (inherits EMC_IO_CMD_MSG (inherits RCS_CMD_MSG))) │ │ │ │ │ 1. add the definition of the EMC_IO_GENERIC class to emc2/src/emc/nml_intf/emc.hh │ │ │ │ │ 2. add the type define: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605) │ │ │ │ │ @@ -1886,15 +1886,15 @@ │ │ │ │ │ 3.24.1.2 Random Toolchangers │ │ │ │ │ Random toolchanger hardware swaps the tool in the spindle (if any) with the requested tool on tool │ │ │ │ │ change. Thus the pocket that a tool resides in changes as it is swapped in and out of the spindle. │ │ │ │ │ An example of random toolchanger hardware is a carousel toolchanger. │ │ │ │ │ When configured for a random toolchanger, LinuxCNC swaps the pocket number of the old and the │ │ │ │ │ new tool in the tool table file when tools are loaded. Internal to LinuxCNC, on tool change, the tool │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 69 │ │ │ │ │ │ │ │ │ │ information is swapped between the tool table’s source pocket and pocket 0 (which represents the │ │ │ │ │ spindle). So after a tool change, pocket 0 in the tool table has the tool information for the new tool, │ │ │ │ │ and the pocket that the new tool came from has the tool information for the old tool (the tool that was │ │ │ │ │ in the spindle before the tool change), if any. │ │ │ │ │ @@ -1931,15 +1931,15 @@ │ │ │ │ │ │ │ │ │ │ 3.24.3 G-codes affectant les outils │ │ │ │ │ The G-codes that use or affect tool information are: │ │ │ │ │ 3.24.3.1 Txxx │ │ │ │ │ Tells the toolchanger hardware to prepare to switch to a specified tool xxx. │ │ │ │ │ Handled by Interp::convert_tool_select(). │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 69 │ │ │ │ │ │ │ │ │ │ 1. The machine is asked to prepare to switch to the selected tool by calling the Canon function │ │ │ │ │ SELECT_TOOL() with the tool number of the requested tool. │ │ │ │ │ a. (saicanon) No-op. │ │ │ │ │ b. (emccanon) Builds an EMC_TOOL_PREPARE message with the requested pocket number and │ │ │ │ │ @@ -1979,15 +1979,15 @@ │ │ │ │ │ information from pocket 0 (spindle). │ │ │ │ │ 3.24.3.3 G43/G43.1/G49 │ │ │ │ │ Apply tool length offset. G43 uses the TLO of the currently loaded tool, or of a specified tool if the │ │ │ │ │ H-word is given in the block. G43.1 gets TLO from axis-words in the block. G49 cancels the TLO (it │ │ │ │ │ uses 0 for the offset for all axes). │ │ │ │ │ Handled by Interp::convert_tool_length_offset(). │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 69 │ │ │ │ │ │ │ │ │ │ 1. It starts by building an EmcPose containing the 9-axis offsets to use. For G43.1, these tool offsets │ │ │ │ │ come from axis words in the current block. For G43 these offsets come from the current tool (the │ │ │ │ │ tool in pocket 0), or from the tool specified by the H-word in the block. For G49, the offsets are │ │ │ │ │ all 0. │ │ │ │ │ @@ -2027,15 +2027,15 @@ │ │ │ │ │ spindle (by copying the information from interp’s settings->tool_table to settings->parameters). │ │ │ │ │ (FIXME: this is a buglet, the params should only be updated if it was the current tool that was │ │ │ │ │ modified). │ │ │ │ │ 6. If the modified tool is currently loaded in the spindle, and if the config is for a nonrandom toolchanger, then the new tool information is written to the tool table’s pocket 0 as well, via a second │ │ │ │ │ call to SET_TOOL_TABLE_ENTRY(). (This second tool-table update is not needed on random toolchanger machines because there, tools don’t have a home pocket and instead we just updated │ │ │ │ │ the tool in pocket 0 directly.) │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 69 │ │ │ │ │ │ │ │ │ │ 3.24.3.5 M61 │ │ │ │ │ Set current tool number. This switches LinuxCNC’s internal representation of which tool is in the │ │ │ │ │ spindle, without actually moving the toolchanger or swapping any tools. │ │ │ │ │ Handled by Interp::convert_tool_change(). │ │ │ │ │ @@ -2066,15 +2066,15 @@ │ │ │ │ │ Tool number of the tool currently installed in the spindle. Exported on the HAL pin iocontrol.0.tool-n │ │ │ │ │ (s32). │ │ │ │ │ emcioStatus.tool.toolTable[] │ │ │ │ │ An array of CANON_TOOL_TABLE structures, CANON_POCKETS_MAX long. Loaded from the tool table │ │ │ │ │ file at startup and maintained there after. Index 0 is the spindle, indexes 1-(CANON_POCKETS_MAX1) are the pockets in the toolchanger. This is a complete copy of the tool information, maintained │ │ │ │ │ separately from Interp’s settings.tool_table. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 69 │ │ │ │ │ │ │ │ │ │ 3.24.4.2 interp │ │ │ │ │ │ │ │ │ │ settings is of type settings, defined as struct setup_struct in src/emc/rs274ngc/interp_internal.hh │ │ │ │ │ │ │ │ │ │ @@ -2119,15 +2119,15 @@ │ │ │ │ │ performed. │ │ │ │ │ │ │ │ │ │ 3.25 Reckoning of joints and axes │ │ │ │ │ 3.25.1 In the status buffer │ │ │ │ │ The status buffer is used by Task and the UIs. │ │ │ │ │ FIXME: axis_mask and axes overspecify the number of axes │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 69 │ │ │ │ │ │ │ │ │ │ status.motion.traj.axis_mask │ │ │ │ │ A bitmask with a ”1” for the axes that are present and a ”0” for the axes that are not present. X is │ │ │ │ │ bit 0 with value 20 = 1 if set, Y is bit 1 with value 21 = 2, Z is bit 2 with value 4, etc. For example, │ │ │ │ │ a machine with X and Z axes would have an axis_mask of 0x5, an XYZ machine would have 0x7, │ │ │ │ │ @@ -2151,15 +2151,15 @@ │ │ │ │ │ 3.25.2 En mouvement │ │ │ │ │ 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. │ │ │ │ │ Motion’s number of joints can be changed at runtime using the EMCMOT_SET_NUM_JOINTS command │ │ │ │ │ from Task. │ │ │ │ │ The Motion controller always operates on EMCMOT_MAX_AXIS axes. It always creates nine sets of axis.*.* │ │ │ │ │ pins. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Chapitre 4 │ │ │ │ │ │ │ │ │ │ NML Messages │ │ │ │ │ List of NML messages. │ │ │ │ │ For details see src/emc/nml_intf/emc.hh. │ │ │ │ │ │ │ │ │ │ @@ -2191,15 +2191,15 @@ │ │ │ │ │ EMC_JOINT_UNHOME_TYPE │ │ │ │ │ EMC_JOINT_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.3 AXIS │ │ │ │ │ │ │ │ │ │ 37 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_AXIS_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.4 JOG │ │ │ │ │ EMC_JOG_CONT_TYPE │ │ │ │ │ EMC_JOG_INCR_TYPE │ │ │ │ │ EMC_JOG_ABS_TYPE │ │ │ │ │ @@ -2245,15 +2245,15 @@ │ │ │ │ │ EMC_TRAJ_RIGID_TAP_TYPE │ │ │ │ │ EMC_TRAJ_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 4.6 MOTION │ │ │ │ │ │ │ │ │ │ 38 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EMC_MOTION_INIT_TYPE │ │ │ │ │ EMC_MOTION_HALT_TYPE │ │ │ │ │ EMC_MOTION_ABORT_TYPE │ │ │ │ │ EMC_MOTION_SET_AOUT_TYPE │ │ │ │ │ EMC_MOTION_SET_DOUT_TYPE │ │ │ │ │ EMC_MOTION_ADAPTIVE_TYPE │ │ │ │ │ @@ -2299,15 +2299,15 @@ │ │ │ │ │ EMC_AUX_ESTOP_OFF_TYPE │ │ │ │ │ EMC_AUX_ESTOP_RESET_TYPE │ │ │ │ │ EMC_AUX_INPUT_WAIT_TYPE │ │ │ │ │ EMC_AUX_STAT_TYPE │ │ │ │ │ │ │ │ │ │ 39 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4.10 SPINDLE │ │ │ │ │ EMC_SPINDLE_ON_TYPE │ │ │ │ │ EMC_SPINDLE_OFF_TYPE │ │ │ │ │ EMC_SPINDLE_INCREASE_TYPE │ │ │ │ │ EMC_SPINDLE_DECREASE_TYPE │ │ │ │ │ EMC_SPINDLE_CONSTANT_TYPE │ │ │ │ │ @@ -2346,15 +2346,15 @@ │ │ │ │ │ EMC_HALT_TYPE │ │ │ │ │ EMC_ABORT_TYPE │ │ │ │ │ EMC_STAT_TYPE │ │ │ │ │ EMC_EXEC_PLUGIN_CALL_TYPE │ │ │ │ │ │ │ │ │ │ 40 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 5 │ │ │ │ │ │ │ │ │ │ Coding Style │ │ │ │ │ This chapter describes the source code style preferred by the LinuxCNC team. │ │ │ │ │ @@ -2379,15 +2379,15 @@ │ │ │ │ │ if (x) { │ │ │ │ │ // do something appropriate │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ The closing brace is on a line of its own, except in the cases where it is followed by a continuation of │ │ │ │ │ the same statement, i.e. a while in a do-statement or an else in an if-statement, like this: │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 69 │ │ │ │ │ │ │ │ │ │ do { │ │ │ │ │ // something important │ │ │ │ │ } while (x > 0); │ │ │ │ │ │ │ │ │ │ @@ -2430,15 +2430,15 @@ │ │ │ │ │ function. │ │ │ │ │ However, if you have a complex function, and you suspect that a less-than-gifted first-year high-school │ │ │ │ │ student might not even understand what the function is all about, you should adhere to the maximum │ │ │ │ │ limits all the more closely. Use helper functions with descriptive names (you can ask the compiler to │ │ │ │ │ in-line them if you think it’s performance-critical, and it will probably do a better job of it that you │ │ │ │ │ would have done). │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 69 │ │ │ │ │ │ │ │ │ │ Another measure of the function is the number of local variables. They shouldn’t exceed 5-10, or │ │ │ │ │ you’re doing something wrong. Re-think the function, and split it into smaller pieces. A human brain │ │ │ │ │ can generally easily keep track of about 7 different things, anything more and it gets confused. You │ │ │ │ │ know you’re brilliant, but maybe you’d like to understand what you did 2 weeks from now. │ │ │ │ │ @@ -2476,15 +2476,15 @@ │ │ │ │ │ class name. Rationale: Maintains a common style across C and C++ sources, e.g., get_foo_bar(). │ │ │ │ │ However, boolean methods are easier to read if they avoid underscores and use an is prefix (not to be │ │ │ │ │ confused with methods that manipulate a boolean). Rationale: Identifies the return value as TRUE or │ │ │ │ │ FALSE and nothing else, e.g., isOpen, isHomed. │ │ │ │ │ Do NOT use Not in a boolean name, it leads only leads to confusion when doing logical tests, e.g., │ │ │ │ │ isNotOnLimit or is_not_on_limit are BAD. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 69 │ │ │ │ │ │ │ │ │ │ Variable names should avoid the use of upper case and underscores except for local or private names. │ │ │ │ │ The use of global variables should be avoided as much as possible. Rationale: Clarifies which are │ │ │ │ │ variables and which are methods. Public: e.g., axislimit Private: e.g., maxvelocity_ . │ │ │ │ │ │ │ │ │ │ @@ -2519,24 +2519,24 @@ │ │ │ │ │ File names: C++ sources and headers use .cc and .hh extension. The use of .c and .h are reserved for │ │ │ │ │ plain C. Headers are for class, method, and structure declarations, not code (unless the functions are │ │ │ │ │ declared inline). │ │ │ │ │ │ │ │ │ │ 5.10 Python coding standards │ │ │ │ │ Use the PEP 8 style for Python code. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 69 │ │ │ │ │ │ │ │ │ │ 5.11 Comp coding standards │ │ │ │ │ In the declaration portion of a .comp file, begin each declaration at the first column. Insert extra blank │ │ │ │ │ lines when they help group related items. │ │ │ │ │ In the code portion of a .comp file, follow normal C coding style. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 6 │ │ │ │ │ │ │ │ │ │ Building LinuxCNC │ │ │ │ │ 6.1 Introduction │ │ │ │ │ @@ -2565,15 +2565,15 @@ │ │ │ │ │ │ │ │ │ │ This might fail too! Read this whole document, but especially the section on Setting up the test environment. │ │ │ │ │ │ │ │ │ │ 6.2 Supported Platforms │ │ │ │ │ The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and │ │ │ │ │ Mint. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 69 │ │ │ │ │ │ │ │ │ │ We continuously test on the platforms listed at http://buildbot.linuxcnc.org. │ │ │ │ │ LinuxCNC builds on most other Linux distributions, though dependency management will be more │ │ │ │ │ manual and less automatic. Patches to improve portability to new platforms are always welcome. │ │ │ │ │ │ │ │ │ │ @@ -2606,15 +2606,15 @@ │ │ │ │ │ within the build directory. Nothing is installed outside the build directory. │ │ │ │ │ This is quick and easy, and suitable for rapid iteration of changes. │ │ │ │ │ The LinuxCNC test suite runs only in a Run-In-Place build. │ │ │ │ │ Most LinuxCNC developers primarily build using this mode. │ │ │ │ │ Building for Run-In-Place follows the steps in the Quick Start section at the top of this document, │ │ │ │ │ possibly with different arguments to src/configure and make. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 69 │ │ │ │ │ │ │ │ │ │ 6.3.1.1 src/configure arguments │ │ │ │ │ The src/configure script configures how the source code will be compiled. It takes many optional │ │ │ │ │ arguments. │ │ │ │ │ List all arguments to src/configure by running this: │ │ │ │ │ @@ -2655,15 +2655,15 @@ │ │ │ │ │ in a Debian package, complete with dependency information. This takes more time, and the programs │ │ │ │ │ can’t be used until the Debian package is installed on a target machine. │ │ │ │ │ This build mode is primarily useful when packaging the software for delivery to end users, and when │ │ │ │ │ building the software for a machine that doesn’t have the build environment installed, or that doesn’t │ │ │ │ │ have internet access. │ │ │ │ │ Building Debian packages requires the dpkg-buildpackage tool, from the dpkg-dev package: │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 69 │ │ │ │ │ │ │ │ │ │ $ sudo apt-get install dpkg-dev │ │ │ │ │ │ │ │ │ │ Building Debian packages also requires that all build dependencies are installed, as described in the │ │ │ │ │ section Satisfying Build Dependencies. │ │ │ │ │ @@ -2704,15 +2704,15 @@ │ │ │ │ │ Configure the Debian package for the currently running RTAI kernel. You must be running an │ │ │ │ │ RTAI kernel on your build machine for this to work! │ │ │ │ │ $KERNEL_VERSION │ │ │ │ │ Configure the debian package for the specified RTAI kernel version (for example ”3.4.9-rtai-686pae”). The matching kernel headers debian package must be installed on your build machine (for │ │ │ │ │ example ”linux-headers-3.4.9-rtai-686-pae”). Note that you can build LinuxCNC in this configuration, but if you are not running the matching RTAI kernel you will not be able to run LinuxCNC, │ │ │ │ │ including the test suite. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 69 │ │ │ │ │ │ │ │ │ │ 6.4 Satisfying Build Dependencies │ │ │ │ │ On Debian-based platforms we provide packaging meta-data that knows what external software packages need to be installed in order to build LinuxCNC. This is called the Build Dependencies of │ │ │ │ │ LinuxCNC. You can use this meta-data to easily list the required packages missing from your build │ │ │ │ │ system. │ │ │ │ │ @@ -2751,15 +2751,15 @@ │ │ │ │ │ on locked memory: │ │ │ │ │ RTAPI: ERROR: failed to map shmem │ │ │ │ │ RTAPI: Locked memory limit is 32KiB, recommended at least 20480KiB. │ │ │ │ │ │ │ │ │ │ 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: │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 69 │ │ │ │ │ │ │ │ │ │ * - memlock 20480 │ │ │ │ │ │ │ │ │ │ Log out and log back in to make the changes take effect. Verify that the memory lock limit is raised │ │ │ │ │ using the following command: │ │ │ │ │ @@ -2775,15 +2775,15 @@ │ │ │ │ │ at github, and use that to track and publish your changes. │ │ │ │ │ After creating your own github fork of LinuxCNC, clone it to your development machine and proceed │ │ │ │ │ with your hacking as usual. │ │ │ │ │ We of the LinuxCNC project hope that you will share your changes with us, so that the community can │ │ │ │ │ benefit from your work. Github makes this sharing very easy: after you polish your changes and push │ │ │ │ │ them to your github fork, send us a Pull Request. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 7 │ │ │ │ │ │ │ │ │ │ Adding Configuration Selection Items │ │ │ │ │ Example Configurations can be added to the Configuration Selector by two methods: │ │ │ │ │ @@ -2794,15 +2794,15 @@ │ │ │ │ │ │ │ │ │ │ — Runtime settings — the configuration selector can also offer configuration subdirectories specified │ │ │ │ │ at runtime using an exported environamental variable (LINUXCNC_AUX_CONFIGS). This variable │ │ │ │ │ should be a path list of one or more configuration directories separated by a (:). Typically, this │ │ │ │ │ variable would be set in a shell starting linuxcnc or in a user’s ~/.profile startup script. Example: │ │ │ │ │ export LINUXCNC_AUX_CONFIGS=~/myconfigs:/opt/otherconfigs │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 8 │ │ │ │ │ │ │ │ │ │ Contribuer à LinuxCNC │ │ │ │ │ 8.1 Introduction │ │ │ │ │ @@ -2823,15 +2823,15 @@ │ │ │ │ │ All of the LinuxCNC source is maintained in the Git revision control system. │ │ │ │ │ │ │ │ │ │ 8.4.1 Repo Git officiel de LinuxCNC │ │ │ │ │ The official LinuxCNC git repo is at https://github.com/linuxcnc/linuxcnc/ │ │ │ │ │ Anyone can get a read-only copy of the LinuxCNC source tree via git: │ │ │ │ │ git clone https://github.com/linuxcnc/linuxcnc linuxcnc-dev │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 69 │ │ │ │ │ │ │ │ │ │ If you are a developer with push access, then follow github’s instructions for setting up a repository │ │ │ │ │ that you can push from. │ │ │ │ │ Note that the clone command put the local LinuxCNC repo in a directory called linuxcnc-dev, instead │ │ │ │ │ of the default linuxcnc. This is because the LinuxCNC software by default expects configs and G-code │ │ │ │ │ @@ -2869,15 +2869,15 @@ │ │ │ │ │ — Clone the git repo │ │ │ │ │ — Make your changes in a local branch, making sure you ”sign off” your commits according to our │ │ │ │ │ signed-off-by policy (see below). │ │ │ │ │ — Adding documentation and tests is an important part of adding a new feature. Otherwise, others │ │ │ │ │ won’t know how to use your feature, and if other changes break your feature it can go unnoticed │ │ │ │ │ without a test. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 55 / 69 │ │ │ │ │ │ │ │ │ │ — Share your changes with the other project developers in one of these ways: │ │ │ │ │ — Push your branch to github and create a github pull request to https://github.com/linuxcnc/linuxcnc (this requires a github account) │ │ │ │ │ — Push your branch to a publicly visible git repo (such as github, bitbucket, your own publiclyaccessible server, etc) and share that location on the emc-developers mailing list, or │ │ │ │ │ — Email your commits to the LinuxCNC-developers mailing list (emc-developers@lists.sourceforge.net) │ │ │ │ │ @@ -2906,15 +2906,15 @@ │ │ │ │ │ Use the first line as a summary of the intent of the change (almost like the subject line of an e-mail). │ │ │ │ │ Follow it with a blank line, then a longer message explaining the change. Example: │ │ │ │ │ │ │ │ │ │ 8.7.3 Commit to the proper branch │ │ │ │ │ Bugfixes should go on the oldest applicable branch. New features should go in the master branch. If │ │ │ │ │ you’re not sure where a change belongs, ask on irc or on the mailing list. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 69 │ │ │ │ │ │ │ │ │ │ 8.7.4 Use multiple commits to organize changes │ │ │ │ │ When appropriate, organize your changes into a branch (a series of commits) where each commit │ │ │ │ │ is a logical step towards your ultimate goal. For example, first factor out some complex code into a │ │ │ │ │ new function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new │ │ │ │ │ @@ -2955,15 +2955,15 @@ │ │ │ │ │ While the branch HEAD will build, not every commit might build in such a case. That breaks git │ │ │ │ │ bisect - something somebody else might use later on to find the commit which introduced a bug. So │ │ │ │ │ beyond making sure your branch builds, it is important to assure every single commit builds as well. │ │ │ │ │ │ │ │ │ │ There’s 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): │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ cd linuxcnc-dev │ │ │ │ │ git-test-sequence origin/master.. │ │ │ │ │ │ │ │ │ │ 57 / 69 │ │ │ │ │ │ │ │ │ │ ’(cd src && make && ../scripts/runtests)’ │ │ │ │ │ @@ -2994,15 +2994,15 @@ │ │ │ │ │ 8.9 Other ways to contribute │ │ │ │ │ There are many ways to contribute to LinuxCNC, that are not addressed by this document. These ways │ │ │ │ │ include: │ │ │ │ │ — Answering questions on the forum, mailing lists, and in IRC │ │ │ │ │ — Reporting bugs on the bug tracker, forum, mailing lists, or in IRC │ │ │ │ │ — Helping test experimental features │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 58 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 9 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -3039,15 +3039,15 @@ │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 69 │ │ │ │ │ │ │ │ │ │ Ball Nut │ │ │ │ │ A special nut designed for use with a ball-screw. It contains an internal passage to re-circulate │ │ │ │ │ the balls from one end of the screw to the other. │ │ │ │ │ CNC │ │ │ │ │ @@ -3093,15 +3093,15 @@ │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ Relatively slow, controlled motion of the tool used when making a cut. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 60 / 69 │ │ │ │ │ │ │ │ │ │ Feed rate │ │ │ │ │ The speed at which a cutting motion occurs. In auto or MDI mode, feed rate is commanded using │ │ │ │ │ an F word. F10 would mean ten machine units per minute. │ │ │ │ │ Feedback │ │ │ │ │ @@ -3146,15 +3146,15 @@ │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ are two types of kinematics. Forward kinematics is used to calculate world coordinates from joint │ │ │ │ │ coordinates. Inverse kinematics is used for exactly the opposite purpose. Note that kinematics │ │ │ │ │ does not take into account, the forces, moments etc. on the machine. It is for positioning only. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 61 / 69 │ │ │ │ │ │ │ │ │ │ Lead-screw │ │ │ │ │ An screw that is rotated by a motor to move a table or other part of a machine. Lead-screws are │ │ │ │ │ usually either ball-screws or acme screws, although conventional triangular threaded screws │ │ │ │ │ may be used where accuracy and long life are not as important as low cost. │ │ │ │ │ @@ -3204,15 +3204,15 @@ │ │ │ │ │ RTLINUX │ │ │ │ │ See https://en.wikipedia.org/wiki/RTLinux, an older real-time extension for Linux that LinuxCNC │ │ │ │ │ used to use to achieve real-time performance. Obsolete, replaced by RTAI. │ │ │ │ │ RTAPI │ │ │ │ │ A portable interface to real-time operating systems including RTAI and POSIX pthreads with │ │ │ │ │ realtime extensions. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 69 │ │ │ │ │ │ │ │ │ │ RS-274/NGC │ │ │ │ │ The formal name for the language used by LinuxCNC part programs. │ │ │ │ │ Servo Motor │ │ │ │ │ Generally, any motor that is used with error-sensing feedback to correct the position of an actuator. Also, a motor which is specially-designed to provide improved performance in such applications. │ │ │ │ │ @@ -3248,15 +3248,15 @@ │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 69 │ │ │ │ │ │ │ │ │ │ Chapitre 10 │ │ │ │ │ │ │ │ │ │ Legal Section │ │ │ │ │ Translations of this file provided in the source tree are not legally binding. │ │ │ │ │ @@ -3282,15 +3282,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 64 / 69 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any such │ │ │ │ │ manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -3339,15 +3339,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover │ │ │ │ │ must present the full title with all words of the title equally prominent and visible. You may add other │ │ │ │ │ material on the covers in addition. Copying with changes limited to the covers, as long as they preserve │ │ │ │ │ the title of the Document and satisfy these conditions, can be treated as verbatim copying in other │ │ │ │ │ respects. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 69 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ 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 │ │ │ │ │ @@ -3393,15 +3393,15 @@ │ │ │ │ │ N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any Invariant │ │ │ │ │ Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 69 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -3442,15 +3442,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of this │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 69 │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ You may not copy, modify, sublicense, or distribute the Document except as expressly provided for │ │ │ │ │ @@ -3477,15 +3477,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Chapitre 11 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ A │ │ │ │ │ acme screw, 58 │ │ │ │ │ axis, 58 │ │ │ │ │ @@ -3559,15 +3559,15 @@ │ │ │ │ │ RTLINUX, 61 │ │ │ │ │ S │ │ │ │ │ servo motor, 62 │ │ │ │ │ Signed Integer, 62 │ │ │ │ │ │ │ │ │ │ 68 / 69 │ │ │ │ │ │ │ │ │ │ - Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Manuel du développeur V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ spindle, 62 │ │ │ │ │ stepper motor, 62 │ │ │ │ │ T │ │ │ │ │ TASK, 62 │ │ │ │ │ Tk, 62 │ │ │ │ │ Traverse Move, 62 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Documentation_fr.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ LinuxCNC │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Table des matières │ │ │ │ │ │ │ │ │ │ I Getting Started & Configuration │ │ │ │ │ │ │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ │ │ │ │ │ │ 7 │ │ │ │ │ │ │ │ │ │ 1.3.3 Testing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 1.3.4 Installing LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ @@ -282,15 +282,15 @@ │ │ │ │ │ │ │ │ │ │ 26 │ │ │ │ │ │ │ │ │ │ 1.5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 26 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 1.5.6.1 halcompile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 26 │ │ │ │ │ │ │ │ │ │ @@ -448,15 +448,15 @@ │ │ │ │ │ │ │ │ │ │ 36 │ │ │ │ │ │ │ │ │ │ 1.5.14.7Configs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 36 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 1.5.15Changes after 2.8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 36 │ │ │ │ │ │ │ │ │ │ @@ -618,15 +618,15 @@ │ │ │ │ │ │ │ │ │ │ 2.3.1 Trajectory Control │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2.3.1.1 Trajectory Planning │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ @@ -786,15 +786,15 @@ │ │ │ │ │ │ │ │ │ │ 65 │ │ │ │ │ │ │ │ │ │ 2.5.2.12Tool Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 65 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vii │ │ │ │ │ │ │ │ │ │ 2.5.2.13Pallet Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 65 │ │ │ │ │ │ │ │ │ │ @@ -950,15 +950,15 @@ │ │ │ │ │ │ │ │ │ │ 80 │ │ │ │ │ │ │ │ │ │ 2.7.7.3 Hypersensing with a MESA THCAD-5 . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 81 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ viii │ │ │ │ │ │ │ │ │ │ 2.7.7.4 Example HAL Code for Hypersensing . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 82 │ │ │ │ │ │ │ │ │ │ @@ -1112,15 +1112,15 @@ │ │ │ │ │ │ │ │ │ │ 98 │ │ │ │ │ │ │ │ │ │ 3.1.6 Parallel Port 2 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 99 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ix │ │ │ │ │ │ │ │ │ │ 3.1.7 Axis Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 3.1.7.1 Finding Maximum Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ 3.1.7.2 Finding Maximum Acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ 3.1.8 Spindle Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 │ │ │ │ │ @@ -1167,15 +1167,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 │ │ │ │ │ │ │ │ │ │ 4.1.3.1 Base Period . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 │ │ │ │ │ 4.1.3.2 Step Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 │ │ │ │ │ 4.1.4 Servo Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 │ │ │ │ │ 4.1.4.1 Basic Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ x │ │ │ │ │ │ │ │ │ │ 4.1.4.2 Proportional term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 │ │ │ │ │ 4.1.4.3 Integral term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 │ │ │ │ │ 4.1.4.4 Derivative term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 │ │ │ │ │ 4.1.4.5 Loop tuning │ │ │ │ │ @@ -1238,15 +1238,15 @@ │ │ │ │ │ 4.4.2.6 [TASK] Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 │ │ │ │ │ │ │ │ │ │ 4.4.2.7 [HAL] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 │ │ │ │ │ 4.4.2.8 [HALUI] section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xi │ │ │ │ │ │ │ │ │ │ 4.4.2.9 [APPLICATIONS] Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 │ │ │ │ │ 4.4.2.10[TRAJ] Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 │ │ │ │ │ @@ -1299,15 +1299,15 @@ │ │ │ │ │ 4.6.4 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 │ │ │ │ │ 4.6.5 Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 │ │ │ │ │ 4.7 Lathe Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 │ │ │ │ │ 4.7.1 Default Plane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 │ │ │ │ │ 4.7.2 INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 │ │ │ │ │ 4.8 Stepper Quickstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xii │ │ │ │ │ │ │ │ │ │ 4.8.1 Latency Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ 4.8.2 Sherline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ 4.8.3 Xylotex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ 4.8.4 Machine Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 │ │ │ │ │ @@ -1354,15 +1354,15 @@ │ │ │ │ │ 5.1.1.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ 5.1.1.4 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ 5.1.1.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ 5.1.2 HAL Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 │ │ │ │ │ 5.1.3 HAL components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 │ │ │ │ │ 5.1.4 Timing Issues In HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiii │ │ │ │ │ │ │ │ │ │ 5.2 HAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 │ │ │ │ │ 5.2.1 HAL Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 │ │ │ │ │ 5.2.1.1 loadrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ 5.2.1.2 addf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 │ │ │ │ │ @@ -1422,15 +1422,15 @@ │ │ │ │ │ │ │ │ │ │ 5.4.2.2 Tab-completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 │ │ │ │ │ 5.4.2.3 The RTAPI environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 │ │ │ │ │ 5.4.3 A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 │ │ │ │ │ 5.4.3.1 Loading a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 │ │ │ │ │ 5.4.3.2 Examining the HAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xiv │ │ │ │ │ │ │ │ │ │ 5.4.3.3 Making realtime code run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 │ │ │ │ │ 5.4.3.4 Changing Parameters │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 │ │ │ │ │ @@ -1478,15 +1478,15 @@ │ │ │ │ │ 5.6.2 Broche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 │ │ │ │ │ 5.6.2.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 │ │ │ │ │ 5.6.3 Axis and Joint Pins and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 │ │ │ │ │ 5.6.4 iocontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 │ │ │ │ │ 5.6.4.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 │ │ │ │ │ 5.6.5 INI settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xv │ │ │ │ │ │ │ │ │ │ 5.6.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 │ │ │ │ │ 5.7 HAL Component List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 │ │ │ │ │ 5.7.1 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 │ │ │ │ │ 5.7.1.1 User Interfaces (Userspace) │ │ │ │ │ @@ -1530,15 +1530,15 @@ │ │ │ │ │ 5.8.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 │ │ │ │ │ 5.8.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 │ │ │ │ │ 5.8.5.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 │ │ │ │ │ 5.8.6 Debounce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 │ │ │ │ │ 5.8.6.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 │ │ │ │ │ 5.8.6.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvi │ │ │ │ │ │ │ │ │ │ 5.8.6.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 │ │ │ │ │ 5.8.7 Siggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 │ │ │ │ │ 5.8.7.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 │ │ │ │ │ 5.8.7.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 │ │ │ │ │ @@ -1586,15 +1586,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 │ │ │ │ │ │ │ │ │ │ 5.9.16Command Line Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ 5.10HALTCL Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ 5.10.1Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ 5.10.2Haltcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xvii │ │ │ │ │ │ │ │ │ │ 5.10.3Haltcl INI-file variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 │ │ │ │ │ 5.10.4Converting HAL files to Tcl files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 │ │ │ │ │ 5.10.5Haltcl Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 │ │ │ │ │ 5.10.6Haltcl Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 │ │ │ │ │ @@ -1653,15 +1653,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ │ │ │ │ │ 5.11.6.22 │ │ │ │ │ stream_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.11.6.23 │ │ │ │ │ stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xviii │ │ │ │ │ │ │ │ │ │ 5.11.6.24 │ │ │ │ │ set_p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.11.7Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 │ │ │ │ │ 5.11.8System Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 │ │ │ │ │ @@ -1700,15 +1700,15 @@ │ │ │ │ │ 5.13.3Halshow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 │ │ │ │ │ 5.13.4Halscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 │ │ │ │ │ 5.13.5Sim Pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 │ │ │ │ │ 5.13.6Simulate Probe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 │ │ │ │ │ 5.13.7HAL Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 5.13.8Halreport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xix │ │ │ │ │ │ │ │ │ │ 6 Hardware Drivers │ │ │ │ │ │ │ │ │ │ 312 │ │ │ │ │ │ │ │ │ │ @@ -1750,15 +1750,15 @@ │ │ │ │ │ 6.3.5.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 6.3.5.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 6.3.6 Status LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 6.3.6.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 │ │ │ │ │ 6.3.6.2 RS485 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ 6.3.6.3 EMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xx │ │ │ │ │ │ │ │ │ │ 6.3.6.4 Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ 6.3.6.5 Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ 6.3.7 RS485 I/O expander modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 │ │ │ │ │ 6.3.7.1 Relay output module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ @@ -1797,15 +1797,15 @@ │ │ │ │ │ 6.5.13.3Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 │ │ │ │ │ 6.5.14PWMGen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 │ │ │ │ │ 6.5.14.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 │ │ │ │ │ 6.5.14.2Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 │ │ │ │ │ 6.5.14.3Output Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 │ │ │ │ │ 6.5.15Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxi │ │ │ │ │ │ │ │ │ │ 6.5.15.1Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 │ │ │ │ │ 6.5.15.2Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 │ │ │ │ │ 6.5.165I25 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 │ │ │ │ │ 6.5.16.1Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 │ │ │ │ │ @@ -1847,15 +1847,15 @@ │ │ │ │ │ 6.8.1 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 │ │ │ │ │ 6.8.2 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 │ │ │ │ │ 6.8.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 │ │ │ │ │ 6.9 Opto22 Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 │ │ │ │ │ 6.9.1 The Adapter Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 │ │ │ │ │ 6.9.2 The Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxii │ │ │ │ │ │ │ │ │ │ 6.9.3 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 │ │ │ │ │ 6.9.4 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 │ │ │ │ │ 6.9.5 FUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 │ │ │ │ │ 6.9.6 Configuring I/O Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 │ │ │ │ │ @@ -1897,15 +1897,15 @@ │ │ │ │ │ 6.12.3Reference: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 │ │ │ │ │ 6.13Servo To Go Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ 6.13.1Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ 6.13.2Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 │ │ │ │ │ 6.13.3Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 │ │ │ │ │ 6.13.4Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiii │ │ │ │ │ │ │ │ │ │ 6.14Shuttle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 │ │ │ │ │ 6.14.1Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 │ │ │ │ │ 6.14.2Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 │ │ │ │ │ 6.14.3Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 │ │ │ │ │ @@ -1945,15 +1945,15 @@ │ │ │ │ │ 8.1 ClassicLadder Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 │ │ │ │ │ 8.1.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 │ │ │ │ │ 8.1.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 │ │ │ │ │ 8.1.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ 8.1.4 Basic Latching On-Off Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 │ │ │ │ │ 8.2 ClassicLadder Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxiv │ │ │ │ │ │ │ │ │ │ 8.2.1 Ladder Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 │ │ │ │ │ 8.2.2 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 │ │ │ │ │ 8.2.3 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 │ │ │ │ │ 8.2.3.1 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 │ │ │ │ │ @@ -2004,15 +2004,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 │ │ │ │ │ │ │ │ │ │ 8.3.2 Reject Extra Pulses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 │ │ │ │ │ 8.3.3 External E-Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 │ │ │ │ │ 8.3.4 Timer/Operate Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxv │ │ │ │ │ │ │ │ │ │ 9 Sujets avancés │ │ │ │ │ │ │ │ │ │ 437 │ │ │ │ │ │ │ │ │ │ @@ -2054,15 +2054,15 @@ │ │ │ │ │ 9.3.8 Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 │ │ │ │ │ 9.3.9 REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 │ │ │ │ │ 9.4 Switchable Kinematics (switchkins) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 │ │ │ │ │ 9.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 │ │ │ │ │ 9.4.2 Switchable Kinematic Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 │ │ │ │ │ 9.4.2.1 Identity letter assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvi │ │ │ │ │ │ │ │ │ │ 9.4.2.2 Backwards compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 │ │ │ │ │ 9.4.3 HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 │ │ │ │ │ 9.4.3.1 HAL Pin Summary │ │ │ │ │ │ │ │ │ │ @@ -2121,15 +2121,15 @@ │ │ │ │ │ . 499 │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . 500 │ │ │ │ │ │ │ │ │ │ 9.6.5.4 Configuring iocontrol with a remapped M6 . . . . . . . . . . . . . . . . . . 502 │ │ │ │ │ 9.6.5.5 Writing the change and prepare O-word procedures . . . . . . . . . . . . . . 502 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxvii │ │ │ │ │ │ │ │ │ │ 9.6.5.6 Making minimal changes to the built in codes, including M6 . . . . . . . . . 503 │ │ │ │ │ 9.6.5.7 Specifying the T (prepare) replacement . . . . . . . . . . . . . . . . . . . . . 503 │ │ │ │ │ 9.6.5.8 Error handling: dealing with abort . . . . . . . . . . . . . . . . . . . . . . . . . 504 │ │ │ │ │ 9.6.5.9 Error handling: failing a remapped code NGC procedure . . . . . . . . . . . 506 │ │ │ │ │ @@ -2171,15 +2171,15 @@ │ │ │ │ │ 9.6.14Remappable Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 │ │ │ │ │ 9.6.14.1Existing codes which can be remapped . . . . . . . . . . . . . . . . . . . . . . 520 │ │ │ │ │ 9.6.14.2Currently unallocated G-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 │ │ │ │ │ 9.6.14.3Currently unallocated M-codes: . . . . . . . . . . . . . . . . . . . . . . . . . . 523 │ │ │ │ │ 9.6.14.4readahead time and execution time . . . . . . . . . . . . . . . . . . . . . . . . 524 │ │ │ │ │ 9.6.14.5plugin/pickle hack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxviii │ │ │ │ │ │ │ │ │ │ 9.6.14.6Module, methods, classes, etc reference . . . . . . . . . . . . . . . . . . . . . 524 │ │ │ │ │ 9.6.15Introduction: Extending Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 524 │ │ │ │ │ 9.6.15.1Why would you want to change Task Execution? . . . . . . . . . . . . . . . . 524 │ │ │ │ │ 9.6.15.2A diagram: task, interp, iocontrol, UI (??) . . . . . . . . . . . . . . . . . . 524 │ │ │ │ │ @@ -2225,15 +2225,15 @@ │ │ │ │ │ 9.9.2.1 Per-Axis Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 │ │ │ │ │ 9.9.2.2 Other Motion HAL Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 │ │ │ │ │ 9.9.3 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 │ │ │ │ │ 9.9.3.1 Offset Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 │ │ │ │ │ 9.9.3.2 Machine-off/Machine-on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 │ │ │ │ │ 9.9.3.3 Soft Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxix │ │ │ │ │ │ │ │ │ │ 9.9.3.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ 9.9.3.5 Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 │ │ │ │ │ 9.9.4 Related HAL Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 │ │ │ │ │ 9.9.4.1 eoffset_per_angle.comp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538 │ │ │ │ │ @@ -2287,15 +2287,15 @@ │ │ │ │ │ 10.1.3.6MDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 │ │ │ │ │ 10.1.3.7Feed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 │ │ │ │ │ 10.1.3.8Spindle Speed Override . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 │ │ │ │ │ 10.1.3.9Jog Speed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 │ │ │ │ │ 10.1.3.10 │ │ │ │ │ Max Velocity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxx │ │ │ │ │ │ │ │ │ │ 10.1.4Keyboard Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 │ │ │ │ │ 10.1.4.1Feed Override Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 │ │ │ │ │ 10.1.5Show LinuxCNC Status (linuxcnctop) . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 │ │ │ │ │ 10.1.6MDI interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 │ │ │ │ │ @@ -2369,15 +2369,15 @@ │ │ │ │ │ 10.1.14.15 │ │ │ │ │ Change a label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 │ │ │ │ │ 10.1.14.16 │ │ │ │ │ Redirect an existing command . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 │ │ │ │ │ 10.1.14.17 │ │ │ │ │ Change the DRO color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxi │ │ │ │ │ │ │ │ │ │ 10.1.14.18 │ │ │ │ │ Change the Toolbar Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 │ │ │ │ │ 10.1.14.19 │ │ │ │ │ Change Plotter Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 │ │ │ │ │ @@ -2417,15 +2417,15 @@ │ │ │ │ │ 10.2.7.1Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 │ │ │ │ │ 10.2.7.2Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 │ │ │ │ │ 10.2.7.3Advanced Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 │ │ │ │ │ 10.2.8Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 │ │ │ │ │ 10.2.8.1Custom Icon Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 │ │ │ │ │ 10.2.8.2Symbolic Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxii │ │ │ │ │ │ │ │ │ │ 10.2.9Lathe Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 │ │ │ │ │ 10.2.10 │ │ │ │ │ Plasma Specific Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612 │ │ │ │ │ 10.2.11 │ │ │ │ │ @@ -2481,15 +2481,15 @@ │ │ │ │ │ 10.4.6INI Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 │ │ │ │ │ 10.4.7User Dialog Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 │ │ │ │ │ 10.4.7.1Copy the Stock Handler/Glade File For Modification . . . . . . . . . . . . . . 632 │ │ │ │ │ 10.5QtDragon GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 │ │ │ │ │ 10.5.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 │ │ │ │ │ 10.5.1.1QtDragon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiii │ │ │ │ │ │ │ │ │ │ 10.5.1.2QtDragon_hd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 │ │ │ │ │ 10.5.2Getting Started - The INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 │ │ │ │ │ 10.5.2.1Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 │ │ │ │ │ 10.5.2.2Preferences │ │ │ │ │ @@ -2549,15 +2549,15 @@ │ │ │ │ │ 10.5.14.5 │ │ │ │ │ Needed HAL Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 │ │ │ │ │ 10.5.15 │ │ │ │ │ Run from Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 │ │ │ │ │ 10.5.16 │ │ │ │ │ Laser buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxiv │ │ │ │ │ │ │ │ │ │ 10.5.17 │ │ │ │ │ Tabs Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 │ │ │ │ │ 10.5.17.1 │ │ │ │ │ Main tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 │ │ │ │ │ @@ -2613,15 +2613,15 @@ │ │ │ │ │ 10.6.6.2Gcode-meta-compiler (.gcmc) file requirements . . . . . . . . . . . . . . . . . 671 │ │ │ │ │ 10.6.7DB25 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 │ │ │ │ │ 10.6.8Creating a subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 │ │ │ │ │ 10.7TkLinuxCNC GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 │ │ │ │ │ 10.7.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 │ │ │ │ │ 10.7.2Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxv │ │ │ │ │ │ │ │ │ │ 10.7.2.1A typical session with TkLinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . 675 │ │ │ │ │ 10.7.3Elements of the TkLinuxCNC window . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 │ │ │ │ │ 10.7.3.1Main buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 │ │ │ │ │ 10.7.3.2Offset display status bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676 │ │ │ │ │ @@ -2660,15 +2660,15 @@ │ │ │ │ │ 10.8.7.3Contact Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 │ │ │ │ │ 10.8.7.4Desktop Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 │ │ │ │ │ 10.8.7.5QtPlasmaC Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 │ │ │ │ │ 10.8.7.6INI File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 │ │ │ │ │ 10.8.8QtPlasmaC GUI Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 │ │ │ │ │ 10.8.8.1Exiting QtPlasmaC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvi │ │ │ │ │ │ │ │ │ │ 10.8.8.2MAIN Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 │ │ │ │ │ 10.8.8.3Preview Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 │ │ │ │ │ 10.8.8.4CONVERSATIONAL Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710 │ │ │ │ │ 10.8.8.5PARAMETERS Tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 │ │ │ │ │ @@ -2730,15 +2730,15 @@ │ │ │ │ │ 10.8.9.30 │ │ │ │ │ Ignore Arc OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 │ │ │ │ │ 10.8.9.31 │ │ │ │ │ Cut Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 │ │ │ │ │ 10.8.9.32 │ │ │ │ │ Run From Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxvii │ │ │ │ │ │ │ │ │ │ 10.8.9.33 │ │ │ │ │ Scribe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 │ │ │ │ │ 10.8.9.34 │ │ │ │ │ Spotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 │ │ │ │ │ @@ -2816,15 +2816,15 @@ │ │ │ │ │ 10.8.15.10 │ │ │ │ │ Max Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 │ │ │ │ │ 10.8.15.11 │ │ │ │ │ Enable Tabs During Automated Motion . . . . . . . . . . . . . . . . . . . . . . 773 │ │ │ │ │ 10.8.15.12 │ │ │ │ │ Override Jog Inhibit Via Z+ Jog . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxviii │ │ │ │ │ │ │ │ │ │ 10.8.15.13 │ │ │ │ │ QtPlasmaC State Outputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 │ │ │ │ │ 10.8.15.14 │ │ │ │ │ QtPlasmaC Debug Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 │ │ │ │ │ @@ -2890,15 +2890,15 @@ │ │ │ │ │ │ │ │ │ │ 11.1.4Local and Global Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 │ │ │ │ │ 11.1.4.1The G52 command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794 │ │ │ │ │ 11.1.5G92 Axes Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 │ │ │ │ │ 11.1.5.1The G92 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 │ │ │ │ │ 11.1.5.2Setting G92 Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xxxix │ │ │ │ │ │ │ │ │ │ 11.1.5.3G92 Persistence Cautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 │ │ │ │ │ 11.1.5.4G92 and G52 Interaction Cautions . . . . . . . . . . . . . . . . . . . . . . . . . 797 │ │ │ │ │ 11.1.6Sample Programs Using Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 │ │ │ │ │ 11.1.6.1Sample Program Using Workpiece Coordinate Offsets . . . . . . . . . . . . . 797 │ │ │ │ │ @@ -2943,15 +2943,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 │ │ │ │ │ │ │ │ │ │ 11.4.6Binary Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 │ │ │ │ │ 11.4.7Equality and floating-point values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ 11.4.8Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xl │ │ │ │ │ │ │ │ │ │ 11.4.9Repeated Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 │ │ │ │ │ 11.4.10 │ │ │ │ │ Item order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 │ │ │ │ │ 11.4.11 │ │ │ │ │ @@ -3019,15 +3019,15 @@ │ │ │ │ │ 11.5.14 │ │ │ │ │ G10 L2 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 │ │ │ │ │ 11.5.15 │ │ │ │ │ G10 L10 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 │ │ │ │ │ 11.5.16 │ │ │ │ │ G10 L11 Set Tool Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xli │ │ │ │ │ │ │ │ │ │ 11.5.17 │ │ │ │ │ G10 L20 Set Coordinate System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846 │ │ │ │ │ 11.5.18 │ │ │ │ │ G17 - G19.1 Plane Select │ │ │ │ │ @@ -3117,15 +3117,15 @@ │ │ │ │ │ 11.5.46 │ │ │ │ │ G82 Drilling Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 │ │ │ │ │ 11.5.47 │ │ │ │ │ G83 Peck Drilling Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 │ │ │ │ │ 11.5.48 │ │ │ │ │ G84 Right-hand Tapping Cycle, Dwell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11.5.49 │ │ │ │ │ G85 Boring Cycle, Feed Out │ │ │ │ │ │ │ │ │ │ xlii │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871 │ │ │ │ │ @@ -3206,15 +3206,15 @@ │ │ │ │ │ 11.6.21 │ │ │ │ │ M72 Restore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 │ │ │ │ │ 11.6.22 │ │ │ │ │ M73 Save and Autorestore Modal State . . . . . . . . . . . . . . . . . . . . . . . . . . 884 │ │ │ │ │ 11.6.23 │ │ │ │ │ M98 and M99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliii │ │ │ │ │ │ │ │ │ │ 11.6.23.1 │ │ │ │ │ Selectively Restoring Modal State . . . . . . . . . . . . . . . . . . . . . . . . . 885 │ │ │ │ │ 11.6.24 │ │ │ │ │ M100-M199 User Defined Commands │ │ │ │ │ @@ -3277,15 +3277,15 @@ │ │ │ │ │ 11.10.4.2 │ │ │ │ │ Invert Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 │ │ │ │ │ 11.10.4.3 │ │ │ │ │ Normalize Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 │ │ │ │ │ 11.10.4.4 │ │ │ │ │ Expand Image Border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xliv │ │ │ │ │ │ │ │ │ │ 11.10.4.5 │ │ │ │ │ Tolerance (units) │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 │ │ │ │ │ @@ -3356,15 +3356,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921 │ │ │ │ │ │ │ │ │ │ 12.1.6.10 │ │ │ │ │ Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923 │ │ │ │ │ 12.2PyVCP Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlv │ │ │ │ │ │ │ │ │ │ 12.2.1AXIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928 │ │ │ │ │ 12.2.2Floating Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928 │ │ │ │ │ 12.2.3Jog Buttons Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 │ │ │ │ │ 12.2.3.1Create the Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930 │ │ │ │ │ @@ -3416,15 +3416,15 @@ │ │ │ │ │ 12.3.6.10 │ │ │ │ │ Speed Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955 │ │ │ │ │ 12.3.6.11 │ │ │ │ │ Label │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvi │ │ │ │ │ │ │ │ │ │ 12.3.6.12 │ │ │ │ │ Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958 │ │ │ │ │ 12.3.6.13 │ │ │ │ │ LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959 │ │ │ │ │ @@ -3488,15 +3488,15 @@ │ │ │ │ │ 12.3.8.9Persistent variables in GladeVCP │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . 989 │ │ │ │ │ │ │ │ │ │ 12.3.8.10 │ │ │ │ │ Using persistent variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlvii │ │ │ │ │ │ │ │ │ │ 12.3.8.11 │ │ │ │ │ Saving the state on GladeVCP shutdown . . . . . . . . . . . . . . . . . . . . . 990 │ │ │ │ │ 12.3.8.12 │ │ │ │ │ Saving state when Ctrl-C is pressed . . . . . . . . . . . . . . . . . . . . . . . . 990 │ │ │ │ │ @@ -3557,15 +3557,15 @@ │ │ │ │ │ 12.5.5Handler File In Detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019 │ │ │ │ │ 12.5.5.1Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020 │ │ │ │ │ 12.5.5.2IMPORT Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ 12.5.5.3INSTANTIATE LIBRARIES Section │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlviii │ │ │ │ │ │ │ │ │ │ 12.5.5.4HANDLER CLASS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ 12.5.5.5INITIALIZE Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023 │ │ │ │ │ 12.5.5.6SPECIAL FUNCTIONS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 │ │ │ │ │ 12.5.5.7STATUS CALLBACKS Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024 │ │ │ │ │ @@ -3606,15 +3606,15 @@ │ │ │ │ │ 12.7.1.2Slider - HAL Pin Value Adjusting Widget . . . . . . . . . . . . . . . . . . . . 1041 │ │ │ │ │ 12.7.1.3LED - Indicator Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042 │ │ │ │ │ 12.7.1.4CheckBox Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042 │ │ │ │ │ 12.7.1.5RadioButton Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042 │ │ │ │ │ 12.7.1.6Gauge - Round Dial Gauge Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1043 │ │ │ │ │ 12.7.1.7HALPad - HAL Buttons Joypad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xlix │ │ │ │ │ │ │ │ │ │ 12.7.1.8PushButton - HAL Pin Toggle Widget . . . . . . . . . . . . . . . . . . . . . . . 1046 │ │ │ │ │ 12.7.1.9focusOverlay - Focus Overlay Widget . . . . . . . . . . . . . . . . . . . . . . 1046 │ │ │ │ │ 12.7.1.10 │ │ │ │ │ gridLayout - Grid Layout Widget . . . . . . . . . . . . . . . . . . . . . . . . . 1047 │ │ │ │ │ @@ -3683,15 +3683,15 @@ │ │ │ │ │ 12.7.2.27 │ │ │ │ │ JointEnableWidget - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076 │ │ │ │ │ 12.7.2.28 │ │ │ │ │ StatusImageSwitcher - Controller Status Image Switching Widget . . . . 1077 │ │ │ │ │ 12.7.2.29 │ │ │ │ │ FileManager - File Loading Selector Widget . . . . . . . . . . . . . . . . . . . 1077 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ l │ │ │ │ │ │ │ │ │ │ 12.7.2.30 │ │ │ │ │ RadioAxisSelector - FIXME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078 │ │ │ │ │ 12.7.2.31 │ │ │ │ │ ToolOffsetView - Tools Offsets View And Edit Widget │ │ │ │ │ @@ -3737,15 +3737,15 @@ │ │ │ │ │ 12.8.1.2Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 │ │ │ │ │ 12.8.2Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 │ │ │ │ │ 12.8.2.1Available data and defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098 │ │ │ │ │ 12.8.2.2User message dialog info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 │ │ │ │ │ 12.8.2.3Embedded program info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 │ │ │ │ │ 12.8.2.4Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ li │ │ │ │ │ │ │ │ │ │ 12.8.2.5Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 │ │ │ │ │ 12.8.3Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 │ │ │ │ │ 12.8.3.1Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 │ │ │ │ │ 12.8.3.2Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100 │ │ │ │ │ @@ -3808,15 +3808,15 @@ │ │ │ │ │ Primitives Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1113 │ │ │ │ │ 12.8.15.3 │ │ │ │ │ Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 │ │ │ │ │ 12.8.15.4 │ │ │ │ │ More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 │ │ │ │ │ 12.9QtVismach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lii │ │ │ │ │ │ │ │ │ │ 12.9.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 │ │ │ │ │ 12.9.2Hierarchy of Machine Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1117 │ │ │ │ │ 12.9.3Start the script │ │ │ │ │ │ │ │ │ │ @@ -3883,15 +3883,15 @@ │ │ │ │ │ 12.10.7.2 │ │ │ │ │ SystemToolbutton Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135 │ │ │ │ │ 12.10.7.3 │ │ │ │ │ Making a plugin with a MenuEntry dialog box . . . . . . . . . . . . . . . . . 1136 │ │ │ │ │ 12.11 │ │ │ │ │ QtVCP Handler File Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liii │ │ │ │ │ │ │ │ │ │ 12.11.1 │ │ │ │ │ Preference File Loading/Saving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138 │ │ │ │ │ 12.11.2 │ │ │ │ │ Use QSettings To Read/Save Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139 │ │ │ │ │ @@ -3967,15 +3967,15 @@ │ │ │ │ │ │ │ │ │ │ 13.1Panelui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 │ │ │ │ │ 13.1.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 │ │ │ │ │ 13.1.2Loading Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 │ │ │ │ │ 13.1.3panelui.ini file reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1158 │ │ │ │ │ 13.1.4Internal Command reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ liv │ │ │ │ │ │ │ │ │ │ 13.1.5ZMQ Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162 │ │ │ │ │ 13.1.6Handler File Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162 │ │ │ │ │ 13.2Filter Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163 │ │ │ │ │ 13.2.1Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163 │ │ │ │ │ @@ -4041,15 +4041,15 @@ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 │ │ │ │ │ │ │ │ │ │ 13.5.1The linuxcnc Python module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 │ │ │ │ │ 13.5.2Usage Patterns for the LinuxCNC NML interface . . . . . . . . . . . . . . . . . . . . . 1175 │ │ │ │ │ 13.5.3Reading LinuxCNC status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 │ │ │ │ │ 13.5.3.1linuxcnc.stat attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ lv │ │ │ │ │ │ │ │ │ │ 13.5.3.2The axis dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180 │ │ │ │ │ 13.5.3.3The joint dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 │ │ │ │ │ 13.5.4The spindle dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 │ │ │ │ │ 13.5.5Preparing to send commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182 │ │ │ │ │ @@ -4102,15 +4102,15 @@ │ │ │ │ │ │ │ │ │ │ 1211 │ │ │ │ │ │ │ │ │ │ 16.1Legal Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211 │ │ │ │ │ 16.1.1Copyright Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211 │ │ │ │ │ 16.1.2GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 Histoire de LinuxCNC │ │ │ │ │ │ │ │ │ │ lvi │ │ │ │ │ │ │ │ │ │ 1216 │ │ │ │ │ │ │ │ │ │ @@ -4118,23 +4118,23 @@ │ │ │ │ │ 17.1.1Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217 │ │ │ │ │ 17.1.2Additional Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217 │ │ │ │ │ │ │ │ │ │ 18 Index │ │ │ │ │ │ │ │ │ │ 1218 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 1224 │ │ │ │ │ │ │ │ │ │ Première partie │ │ │ │ │ │ │ │ │ │ Getting Started & Configuration │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 1 │ │ │ │ │ │ │ │ │ │ Getting Started with LinuxCNC │ │ │ │ │ 1.1 About LinuxCNC │ │ │ │ │ @@ -4166,15 +4166,15 @@ │ │ │ │ │ a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed │ │ │ │ │ override, and constant velocity control. │ │ │ │ │ — Support for non-Cartesian motion systems is provided via custom kinematics modules. Available │ │ │ │ │ architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary │ │ │ │ │ joints to provide motion such as PUMA or SCARA robots. │ │ │ │ │ — LinuxCNC runs on Linux using real time extensions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 1224 │ │ │ │ │ │ │ │ │ │ 1.1.2 The Operating System │ │ │ │ │ LinuxCNC is available as ready-to-use packages for the Ubuntu and Debian distributions. │ │ │ │ │ │ │ │ │ │ 1.1.3 Getting Help │ │ │ │ │ @@ -4210,15 +4210,15 @@ │ │ │ │ │ This is quite active but the demographic is more user-biased than the mailing list. If you want to be │ │ │ │ │ sure that your message is seen by the developers then the mailing list is to be preferred. │ │ │ │ │ 1.1.3.4 LinuxCNC Wiki │ │ │ │ │ A Wiki site is a user maintained web site that anyone can add to or edit. │ │ │ │ │ │ │ │ │ │ The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 1224 │ │ │ │ │ │ │ │ │ │ 1.1.3.5 Bug Reports │ │ │ │ │ Report bugs to the LinuxCNC github bug tracker. │ │ │ │ │ │ │ │ │ │ 1.2 System Requirements │ │ │ │ │ @@ -4252,15 +4252,15 @@ │ │ │ │ │ uname -a │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC │ │ │ │ │ version to install. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 1224 │ │ │ │ │ │ │ │ │ │ 1.2.2.1 Preempt-RT with linuxcnc-uspace package │ │ │ │ │ Preempt-RT is the newest of the realtime systems, and is also the version that is closest to a mainline │ │ │ │ │ kernel. Preempt-RT kernels are available as precompiled packages from the main repositories. The │ │ │ │ │ search term ”PREEMPT_RT” will find them, and one can be downloaded and installed just like any │ │ │ │ │ @@ -4294,15 +4294,15 @@ │ │ │ │ │ There are also Alternate Install Methods for the adventurous. If you have an existing install that you │ │ │ │ │ want to upgrade, go to the Updating LinuxCNC section instead. │ │ │ │ │ Note │ │ │ │ │ LinuxCNC requires a special kernel with real-time extensions. There are three possibilities here: │ │ │ │ │ preempt-rt, RTAI or Xenomai. In addition there are two versions of LinuxCNC which work with these │ │ │ │ │ kernels. See the table below for details. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 1224 │ │ │ │ │ │ │ │ │ │ Fresh installs of LinuxCNC are most easily created using the Live/Install Image. This is a hybrid ISO │ │ │ │ │ filesystem image that can be written to a USB storage device or a DVD and used to boot a computer. At │ │ │ │ │ boot time you will be given a choice of booting the ”Live” system (to run LinuxCNC without making any │ │ │ │ │ permanent changes to your computer) or booting the Installer (to install LinuxCNC and its operating │ │ │ │ │ @@ -4340,15 +4340,15 @@ │ │ │ │ │ ou │ │ │ │ │ zsync https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip.zsync │ │ │ │ │ │ │ │ │ │ zsync in Windows There is a Windows port of zsync. It works as a console application. It can be │ │ │ │ │ downloaded from: │ │ │ │ │ https://www.assembla.com/spaces/zsync-windows/documents │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 1224 │ │ │ │ │ │ │ │ │ │ 1.3.1.3 Verify the image │ │ │ │ │ (This step is unnecessary if you used zsync) │ │ │ │ │ 1. After downloading, verify the checksum of the image to ensure integrity. │ │ │ │ │ md5sum linuxcnc-2.8.4-buster.iso │ │ │ │ │ @@ -4391,15 +4391,15 @@ │ │ │ │ │ │ │ │ │ │ 5. Note that this may take a long time to complete and there will be no feedback during the process. │ │ │ │ │ Writing the image to a DVD in Linux │ │ │ │ │ 1. Insert a blank DVD into your burner. A CD/DVD Creator or Choose Disc Type window will pop │ │ │ │ │ up. Close this, as we will not be using it. │ │ │ │ │ 2. Browse to the downloaded image in the file browser. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 1224 │ │ │ │ │ │ │ │ │ │ 3. Right click on the ISO image file and choose Write to Disc. │ │ │ │ │ 4. Select the write speed. It is recommended that you write at the lowest possible speed. │ │ │ │ │ 5. Start the burning process. │ │ │ │ │ 6. If a choose a file name for the disc image window pops up, just pick OK. │ │ │ │ │ @@ -4438,15 +4438,15 @@ │ │ │ │ │ With the normal install the Update Manager will notify you of updates to LinuxCNC when you go on │ │ │ │ │ line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything │ │ │ │ │ except the operating system when asked to. │ │ │ │ │ AVERTISSEMENT │ │ │ │ │ Do not upgrade the operating system if prompted to do so. You should accept OS updates │ │ │ │ │ however, especially security updates. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 1224 │ │ │ │ │ │ │ │ │ │ 1.3.6 Install Problems │ │ │ │ │ In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot │ │ │ │ │ recognize the hard drive during the boot up. │ │ │ │ │ │ │ │ │ │ @@ -4549,15 +4549,15 @@ │ │ │ │ │ — Debian Wheezy: deb https://linuxcnc.org wheezy base │ │ │ │ │ — Ubuntu Precise: deb https://linuxcnc.org precise base │ │ │ │ │ Note │ │ │ │ │ Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is │ │ │ │ │ strongly advised not to use either for a new install, and to seriously consider upgrading an existing │ │ │ │ │ installation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 1224 │ │ │ │ │ │ │ │ │ │ The Buster / RTAI package is only available on amd64, but there are very few surviving systems that │ │ │ │ │ can not run a 64-bit OS. │ │ │ │ │ AVERTISSEMENT │ │ │ │ │ There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The │ │ │ │ │ @@ -4597,15 +4597,15 @@ │ │ │ │ │ system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels │ │ │ │ │ need not be deleted, but grub boot configuration changes will be needed beyond the scope of │ │ │ │ │ this document. │ │ │ │ │ 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 1224 │ │ │ │ │ │ │ │ │ │ 6. Add the apt repository: │ │ │ │ │ echo deb https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee -a /etc/apt/sources ←.list.d/linuxcnc.list │ │ │ │ │ echo deb-src https://linuxcnc.org/ buster base 2.8-rtpreempt | sudo tee -a /etc/apt/ ←sources.list.d/linuxcnc.list │ │ │ │ │ │ │ │ │ │ @@ -4644,15 +4644,15 @@ │ │ │ │ │ sudo apt-get install rtai-modules-4.19.195 │ │ │ │ │ │ │ │ │ │ 7. Install LinuxCNC (may be necessary to reboot before installing) │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ Reboot the machine, ensuring that the system boots from the new 4.19.195-rtai kernel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 1224 │ │ │ │ │ │ │ │ │ │ 1.3.7.3 Installing on Raspbian 10 │ │ │ │ │ 1. Download a stock Raspbian image to an SD card and install in the usual way. │ │ │ │ │ 2. Boot the Pi and open a terminal. │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring. │ │ │ │ │ @@ -4699,15 +4699,15 @@ │ │ │ │ │ 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name │ │ │ │ │ is 3.4-9-rtai-686-pae. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Run │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 1224 │ │ │ │ │ │ │ │ │ │ 1.4 Running LinuxCNC │ │ │ │ │ 1.4.1 Invoking LinuxCNC │ │ │ │ │ After installation, LinuxCNC starts just like any other Linux program: run it from the terminal by │ │ │ │ │ issuing the command linuxcnc, or select it in the Applications -> CNC menu. │ │ │ │ │ @@ -4747,15 +4747,15 @@ │ │ │ │ │ The by_interface configurations are organized around common, supported interfaces like: │ │ │ │ │ — general mechatronics │ │ │ │ │ — mesa │ │ │ │ │ — parport │ │ │ │ │ — pico │ │ │ │ │ — pluto │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 1224 │ │ │ │ │ │ │ │ │ │ — servotogo │ │ │ │ │ — vigilant │ │ │ │ │ — vitalsystems │ │ │ │ │ Related hardware may be required to use these configurations as starting points for a system. │ │ │ │ │ @@ -4780,15 +4780,15 @@ │ │ │ │ │ — parport - Applications to test parport. │ │ │ │ │ — pyvcp - Example pyvcp applications. │ │ │ │ │ — xhc-hb04 - Applications to test an xhc-hb04 USB wireless MPG │ │ │ │ │ Note │ │ │ │ │ Under the Apps directory, only applications that are usefully modified by the user are offered for │ │ │ │ │ copying to the user’s directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 1.1 – LinuxCNC Configuration Selector │ │ │ │ │ Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration. │ │ │ │ │ Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly │ │ │ │ │ launch this configuration without showing the Configuration Selector screen. │ │ │ │ │ @@ -4804,15 +4804,15 @@ │ │ │ │ │ All configurations listed under Sample Configurations/sim are intended to run on any computer. No │ │ │ │ │ specific hardware is required and real-time support is not needed. │ │ │ │ │ These configurations are useful for studying individual capabilities or options. The sim configurations │ │ │ │ │ are organized according to the graphical user interface used in the demonstration. The directory for │ │ │ │ │ axis contains the most choices and subdirectories because it is the most tested GUI. The capabilities │ │ │ │ │ demonstrated with any specific GUI may be available in other GUIs as well. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 1224 │ │ │ │ │ │ │ │ │ │ 1.4.5 Configuration Resources │ │ │ │ │ The Configuration Selector copies all files needed for a configuration to a new subdirectory of ~/linuxcnc/configs (equivalently: /home/username/linuxcnc/configs). Each created directory will include │ │ │ │ │ at least one INI file (iniflename.ini) that is used to describe a specific configuration. │ │ │ │ │ File resources within the copied directory will typically include one or more INI file (filename.ini) │ │ │ │ │ @@ -4854,15 +4854,15 @@ │ │ │ │ │ The details will depend on which platform you’re running on. Open a terminal then type lsb_release │ │ │ │ │ -ic to find this information out: │ │ │ │ │ lsb_release -ic │ │ │ │ │ Distributor ID: Debian │ │ │ │ │ Codename: │ │ │ │ │ wheezy │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 1224 │ │ │ │ │ │ │ │ │ │ You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also │ │ │ │ │ available for Debian Jessie or Debian Buster if you happen to already be running one of those. │ │ │ │ │ You will also need to check which realtime kernel is being used: │ │ │ │ │ uname -r │ │ │ │ │ @@ -4909,15 +4909,15 @@ │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Platform │ │ │ │ │ Debian Buster - RTAI │ │ │ │ │ │ │ │ │ │ 18 / 1224 │ │ │ │ │ │ │ │ │ │ apt source line │ │ │ │ │ @@ -4940,15 +4940,15 @@ │ │ │ │ │ will be automatically upgraded to the new one. │ │ │ │ │ 1.5.1.3 Ubuntu Precise │ │ │ │ │ — Click on the Dash Home icon in the top left. │ │ │ │ │ — In the Search field, type ”update”, then click on the Update Manager icon. │ │ │ │ │ — Click the Check button to fetch the list of packages available. │ │ │ │ │ — Click the Install Updates button to install the new versions of all packages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.2 Updating without Network │ │ │ │ │ To update without a network connection you need to download the .deb then install it with dpkg. The │ │ │ │ │ .debs can be found in https://linuxcnc.org/dists/ . │ │ │ │ │ You have to drill down from the above link to find the correct deb for your installation. Open a terminal │ │ │ │ │ @@ -4988,15 +4988,15 @@ │ │ │ │ │ The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your │ │ │ │ │ machine configuration. │ │ │ │ │ The main difference is that LinuxCNC no longer makes any assumptions about which joint controls │ │ │ │ │ which axis. This change is generally termed ”joints-axes” after the name of the development branch │ │ │ │ │ where the changes started. This change has been in development since at least 2010, and has finally │ │ │ │ │ been merged. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.4.1 Distribution Configurations (updates for joints_axes) │ │ │ │ │ The LinuxCNC distribution includes many example configurations organized in directory hierarchies │ │ │ │ │ named: by_machine, by_interface, and sim (simulated machines). These configurations are often used │ │ │ │ │ as starting points for making a new configuration, as examples for study, or as complete simulated │ │ │ │ │ @@ -5034,15 +5034,15 @@ │ │ │ │ │ motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will │ │ │ │ │ take care of these changes. To control extra spindles the G and M-codes which control spindle speed │ │ │ │ │ now accept an additional ”$” argument, for example M3 $2 to start the third spindle. ”$” was chosen │ │ │ │ │ to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match │ │ │ │ │ any other multi-spindle controller. See the G-code and M-code manuals for code changes, and man │ │ │ │ │ motion for the HAL pin changes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.4.4 TRAJ velocities, accelerations names │ │ │ │ │ With incorporation of joints_axes functionality, some names were changed to clarify available functionality. │ │ │ │ │ was: [TRAJ]MAX_VELOCITY │ │ │ │ │ was: [TRAJ]DEFAULT_VELOCITY │ │ │ │ │ @@ -5090,15 +5090,15 @@ │ │ │ │ │ │ │ │ │ │ 1.5.4.6 Lathe Configurations │ │ │ │ │ Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation │ │ │ │ │ configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for │ │ │ │ │ homing the unused Y coordinate. These arrangements are no longer required or recommended. │ │ │ │ │ Historical lathe configurations used the default options for the trivkins kinematics module. These default options configure all axis letters (XYZABCUVW). With joints_axes incorporation, a more appropriate kinematics specification sets the coordinates to the exact ones used (XZ) and sets the number │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 1224 │ │ │ │ │ │ │ │ │ │ of joints accordingly to 2. There is no need for an INI file [AXIS_Y] section and only two [JOINT_N] │ │ │ │ │ sections need be defined. │ │ │ │ │ Example INI file items for a lathe (only sections relevant to kinematics are shown): │ │ │ │ │ [KINS] │ │ │ │ │ @@ -5142,15 +5142,15 @@ │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 4 │ │ │ │ │ [TRAJ]COORDINATES = XYYZ │ │ │ │ │ │ │ │ │ │ Gantry using trivkins (KINEMATICS_BOTH) with duplicated axis letters and a rotary axis with skipped │ │ │ │ │ axis letters (A,B skipped): │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 1224 │ │ │ │ │ │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XYYZC kinstype=BOTH │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 5 │ │ │ │ │ [TRAJ]COORDINATES = XYYZC │ │ │ │ │ @@ -5194,15 +5194,15 @@ │ │ │ │ │ HAL) │ │ │ │ │ │ │ │ │ │ To create these HAL pins for locking joints, specify all joints that are used as locking indexers with the │ │ │ │ │ unlock_joints_mask parameter for the motmod module. (bit0(LSB)==>joint0, bit1==>joint1, etc.) │ │ │ │ │ [EMCMOT] │ │ │ │ │ EMCMOT = motmod unlock_joints_mask=BITMASK │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 1224 │ │ │ │ │ │ │ │ │ │ As an example, consider a machine using trivkins kinematics with coordinates XYZB where B is a │ │ │ │ │ locking indexer. For trivkins, joint numbers (starting with 0) are assigned consecutively to the coordinates specified (axis coordinate letters may be omitted). For this example, X==>joint0, Y==>joint1, │ │ │ │ │ Z==>joint2, B==>joint3. The mask to specify joint 3 is 000001000 (binary) == 0x08 (hexadecimal) │ │ │ │ │ The required INI file entries for this trivkins XYZB example are: │ │ │ │ │ @@ -5241,15 +5241,15 @@ │ │ │ │ │ In 2.7.x versions, trajectory planning ([TRAJ]) settings included: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_ACCELERATION │ │ │ │ │ MAX_ACCELERATION │ │ │ │ │ │ │ │ │ │ Interim work prepared for distinct linear and angular items by renaming these items as: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 1224 │ │ │ │ │ │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_LINEAR_ACCEL │ │ │ │ │ MAX_LINEAR_ACCEL │ │ │ │ │ │ │ │ │ │ @@ -5322,15 +5322,15 @@ │ │ │ │ │ net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode │ │ │ │ │ │ │ │ │ │ (The signal names jora_1_y_* are examples, names prior to conversion for joints_axes will depend │ │ │ │ │ upon the specific configuration details.) │ │ │ │ │ Configurations with non-identity kinematics and configurations that use duplicated axis letters (for │ │ │ │ │ example, gantries using more than one joint for an axis coordinate) will require appropriate independent control logic to support both joint and teleop (world) jogging. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.5.2 INI HAL pins │ │ │ │ │ HAL pins are created for INI file items for both joints ([JOINT_N]) and axes ([AXIS_L]): │ │ │ │ │ For N = 0 … [KINS](JOINTS-1): │ │ │ │ │ INI file item │ │ │ │ │ @@ -5387,15 +5387,15 @@ │ │ │ │ │ (servo last period in clks) │ │ │ │ │ motion.servo.last-period_ns (kernel-dependent availability) │ │ │ │ │ │ │ │ │ │ 1.5.7 Interface changes for joints_axes 2.8.x │ │ │ │ │ 1.5.7.1 Python LinuxCNC module │ │ │ │ │ The jog() interface includes a joint-flag to specify joint (True) or teleop (False) jogging: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 1224 │ │ │ │ │ │ │ │ │ │ jog(command, joint-flag, axis-or-joint-number, velocity[, distance]) │ │ │ │ │ jog(linuxcnc.JOG_STOP, joint-flag, axis-or-joint-number) │ │ │ │ │ jog(linuxcnc.JOG_CONTINUOUS, joint-flag, joint-flag, velocity) │ │ │ │ │ jog(linuxcnc.JOG_INCREMENT, joint-flag, axis-or-joint-number, velocity, distance) │ │ │ │ │ @@ -5433,15 +5433,15 @@ │ │ │ │ │ By default, the trivkins module declares itself as having IDENTITY kinematics. The distinctions of │ │ │ │ │ joint/world operations can be made visible in the AXIS GUI when using trivkins by setting the kinemetics type to a non-IDENTITY type using kinstype=both. The both setting indicates that both forward │ │ │ │ │ and inverse kinematics functions are available and GUI provisions that hide the distinctions of joints │ │ │ │ │ and axis letters should not be employed. For example, for an xyz configuration, specify: │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins coordinates=xyz kinstype=both │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 1224 │ │ │ │ │ │ │ │ │ │ With this setting, identity kinematics will be used but the AXIS GUI will: │ │ │ │ │ 1. show joint numbers prior to homing │ │ │ │ │ 2. show axis letters after successful homing │ │ │ │ │ 3. support toggling between joint and teleop modes with the $ key │ │ │ │ │ @@ -5490,15 +5490,15 @@ │ │ │ │ │ [KINS] │ │ │ │ │ KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH │ │ │ │ │ ... │ │ │ │ │ [TRAJ] │ │ │ │ │ COORDINATES = XYYZ │ │ │ │ │ ... │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 1224 │ │ │ │ │ │ │ │ │ │ This machine, after homing, has a one-to-one correspondence between a single axis letter (Y) and a │ │ │ │ │ pair of joints (1,2). Using kinematics=BOTH allows control of individual joints in joint mode if/when │ │ │ │ │ required. │ │ │ │ │ The AXIS GUI supports configurations using non-identity kinematics with: │ │ │ │ │ @@ -5542,15 +5542,15 @@ │ │ │ │ │ 2. emc_abs_cmd_pos │ │ │ │ │ 3. emc_abs_act_pos │ │ │ │ │ 4. emc_rel_cmd_pos │ │ │ │ │ 5. emc_rel_act_pos │ │ │ │ │ 6. emc_tool_offset │ │ │ │ │ 7. emc_probed_pos │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.8.5 Touchy │ │ │ │ │ The Touchy GUI continues to support the identity kinematics configurations that it supported prior to │ │ │ │ │ joints_axes incorporation. Jogging is done in teleop mode. │ │ │ │ │ 1.5.8.6 Gscreen │ │ │ │ │ @@ -5587,15 +5587,15 @@ │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234 │ │ │ │ │ in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided │ │ │ │ │ the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding │ │ │ │ │ command is: set jog x 1.234. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.9 Tools │ │ │ │ │ 1.5.9.1 Calibration (emccalib.tcl) │ │ │ │ │ The calibration/tuning tool now supports stanzas: │ │ │ │ │ [JOINT_N], [AXIS_L], [SPINDLE_S], [TUNE] │ │ │ │ │ @@ -5628,15 +5628,15 @@ │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ HALFILE = simulated_home.hal │ │ │ │ │ │ │ │ │ │ Lathe configs often shared the same HAL files and used the expedient method of specifying 3 axes with │ │ │ │ │ Y unused. More complex sim configs provided specific sets of HAL files according to the configuration │ │ │ │ │ purpose. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.12.2 Post-joints_axes │ │ │ │ │ With the incorporation of joints_axes functionality, many sims provided in the distribution now take │ │ │ │ │ advantage of a general purpose HAL file that supports numerous configurations automatically. A typical sim config HALFILE specification is: │ │ │ │ │ [HAL] │ │ │ │ │ @@ -5680,15 +5680,15 @@ │ │ │ │ │ 2. To use this new equivalent HAL file in the original simulator configuration INI file (or a copy of │ │ │ │ │ it), edit to change: │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = LIB:basic_sim.tcl other_parameters │ │ │ │ │ │ │ │ │ │ to: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 1224 │ │ │ │ │ │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = ./example_cmds.hal │ │ │ │ │ │ │ │ │ │ All components and connections made by LIB:basic_sim.tcl can be viewed using halcmd. The entire │ │ │ │ │ @@ -5722,15 +5722,15 @@ │ │ │ │ │ the pins: is-manual and amux-enable. These two pins are typically connected to halui.mode.is-manual │ │ │ │ │ and halui.mode.is-teleop respectively. │ │ │ │ │ Remove signal pendant:jogenable-off for removed pin pendant_util.jogenable-off. │ │ │ │ │ Support new motion pins for reduced accelerations (axis.L.jog-accel-fraction, joint.N.jog-accel-fraction) │ │ │ │ │ for wheel jogging. The use of [APPLICATIONS]APP=xhc-hb04-accels is no longer supported. Reduced │ │ │ │ │ accels are applied for wheel jogging only (not for nml commands issued by GUIs). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.13.5 XHC-WHB04B-6 pendant support │ │ │ │ │ See the documentation for the xhc-whb04b-6 component. │ │ │ │ │ 1.5.13.6 bldc3_hall │ │ │ │ │ The bldc_hall3 component has been removed. The bldc component is more flexible and better tested. │ │ │ │ │ @@ -5757,15 +5757,15 @@ │ │ │ │ │ 4. Make sure the interpreter in the first line of the script is Python 3, not Python 2. │ │ │ │ │ 5. Open the ui file in glade, and save it. It should convert everything that can be converted automatically, and give you warnings. │ │ │ │ │ 1.5.14.2 LinuxCNC Startup │ │ │ │ │ The main script, linuxcnc, supports a new option (-H dirname) to specify an additional user-specified │ │ │ │ │ directory for HAL files. This directory is searched before the usual search of 1) the INI directory and │ │ │ │ │ 2)the system HAL file library directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 1224 │ │ │ │ │ │ │ │ │ │ 1.5.14.3 G-code changes │ │ │ │ │ G43.2 (additional offsets) now accepts transient offsets to be added by axis words as well as from the │ │ │ │ │ tool table. │ │ │ │ │ 1.5.14.4 Configuration Updates │ │ │ │ │ @@ -5803,15 +5803,15 @@ │ │ │ │ │ identity kinematics mode. │ │ │ │ │ Kinematic modules supporting switchkins: │ │ │ │ │ 1. xyzac-trt-kins table-rotary-tilting (supersedes xyzac-trt-kins) │ │ │ │ │ 2. xyzbc-trt-kins table-rotary-tilting (supersedes xyzbc-trt-kins) │ │ │ │ │ 3. genserkins generalized serial-link kinematics │ │ │ │ │ 4. genhexkins generalized hexapod parallel kinematics │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 1224 │ │ │ │ │ │ │ │ │ │ 5. scarakins scara robot │ │ │ │ │ 6. pumakins puma robot │ │ │ │ │ 7. 5axiskins bridgemill (xyzbcw 6axes) │ │ │ │ │ The switchkins modules above (and trivkins) support a coordinates= parameter that optionally specifies an ordered set of coordinate letters that are sequentially assigned to joint numbers (beginning │ │ │ │ │ @@ -5839,15 +5839,15 @@ │ │ │ │ │ 1.5.15 Changes after 2.8.x │ │ │ │ │ Future versions of this document will take into account changes made to the development branch │ │ │ │ │ after the latest 2.8.x release. │ │ │ │ │ │ │ │ │ │ 1.6 Linux FAQ │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 1224 │ │ │ │ │ │ │ │ │ │ 1.6.1 Automatic Login │ │ │ │ │ 1.6.1.1 Debian │ │ │ │ │ Debian Stretch uses the Xfce desktop environment by default, with the lightDM display manager │ │ │ │ │ lightDM. To get automatic login with Stretch: │ │ │ │ │ @@ -5881,15 +5881,15 @@ │ │ │ │ │ 1.6.3 Terminal │ │ │ │ │ Many things need to be done from the terminal like checking the kernel message buffer with dmesg. │ │ │ │ │ Ubuntu and Linux Mint have a keyboard shortcut Ctrl + Alt + t. Debian Stretch does not have any │ │ │ │ │ keyboard shortcuts defined. It can be easily created with the Configuration Manager. Most modern │ │ │ │ │ file managers support the right key to open a terminal just make sure your right clicking on a blank │ │ │ │ │ area or a directory not a file name. Most OS’s have the terminal as a menu item, usually in Accessories. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 1224 │ │ │ │ │ │ │ │ │ │ 1.6.4 Man Pages │ │ │ │ │ A man page (short for manual page) is a form of software documentation usually found on a Unix or │ │ │ │ │ Unix-like operating system like Linux. │ │ │ │ │ To view a man page open up a terminal to find out something about the find command in the terminal │ │ │ │ │ @@ -5924,15 +5924,15 @@ │ │ │ │ │ Open the file with File > Open > Edit │ │ │ │ │ 1.6.6.2 The GUI Way │ │ │ │ │ 1. Right click on the desktop and select Create Launcher │ │ │ │ │ 2. Type a name in like sudo edit │ │ │ │ │ 3. Type gksudo ”gnome-open %u” as the command and save the launcher to your desktop │ │ │ │ │ 4. Drag a file onto your launcher to open and edit │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 1224 │ │ │ │ │ │ │ │ │ │ 1.6.6.3 Root Access │ │ │ │ │ In Ubuntu you can become root by typing in ”sudo -i” in a terminal window then typing in your password. Be careful, because you can really foul things up as root if you don’t know what you’re doing. │ │ │ │ │ │ │ │ │ │ 1.6.7 Terminal Commands │ │ │ │ │ @@ -5965,15 +5965,15 @@ │ │ │ │ │ The find command can be a bit confusing to a new Linux user. The basic syntax is: │ │ │ │ │ find starting-directory parameters actions │ │ │ │ │ │ │ │ │ │ For example to find all the .ini files in your linuxcnc directory you first need to use the pwd command │ │ │ │ │ to find out the directory. │ │ │ │ │ Open a new terminal window and type: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 1224 │ │ │ │ │ │ │ │ │ │ pwd │ │ │ │ │ │ │ │ │ │ And pwd might return the following result: │ │ │ │ │ /home/joe │ │ │ │ │ @@ -6008,15 +6008,15 @@ │ │ │ │ │ │ │ │ │ │ 1.6.8 Convenience Items │ │ │ │ │ 1.6.8.1 Terminal Launcher │ │ │ │ │ If you want to add a terminal launcher to the panel bar on top of the screen you typically can right click │ │ │ │ │ on the panel at the top of the screen and select ”Add to Panel”. Select Custom Application Launcher │ │ │ │ │ and Add. Give it a name and put gnome-terminal in the command box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 1224 │ │ │ │ │ │ │ │ │ │ 1.6.9 Hardware Problems │ │ │ │ │ 1.6.9.1 Hardware Info │ │ │ │ │ To find out what hardware is connected to your motherboard in a terminal window type: │ │ │ │ │ lspci -v │ │ │ │ │ @@ -6034,15 +6034,15 @@ │ │ │ │ │ is the same as f0, e.g., a file named f0 in the startup directory │ │ │ │ │ ../f1 │ │ │ │ │ refers to a file f1 in the parent directory │ │ │ │ │ ../../f2 │ │ │ │ │ refers to a file f2 in the parent of the parent directory │ │ │ │ │ ../../../f3 etc. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 2 │ │ │ │ │ │ │ │ │ │ General User Information │ │ │ │ │ 2.1 User Foreword │ │ │ │ │ @@ -6073,15 +6073,15 @@ │ │ │ │ │ The Separation rule requires that we make distinct parts that do little things. By separating functions │ │ │ │ │ debugging is much easier and replacement modules can be dropped into the system and comparisons │ │ │ │ │ easily made. │ │ │ │ │ What does the Unix way mean for you as a user of LinuxCNC. It means that you are able to make │ │ │ │ │ choices about how you will use the system. Many of these choices are a part of machine integration, │ │ │ │ │ 1. Found at link:https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy, 2022-11-13 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 1224 │ │ │ │ │ │ │ │ │ │ but many also affect the way you will use your machine. As you read you will find many places where │ │ │ │ │ you will need to make comparisons. Eventually you will make choices, ”I’ll use this interface rather │ │ │ │ │ than that” or, “I’ll write part offsets this way rather than that way.” Throughout these handbooks we │ │ │ │ │ describe the range of abilities currently available. │ │ │ │ │ @@ -6113,15 +6113,15 @@ │ │ │ │ │ — the high level controllers that coordinate the generation and execution of motion control of the CNC │ │ │ │ │ machine, namely the motion controller (EMCMOT), the discrete input/output controller (EMCIO) │ │ │ │ │ and the task executor (EMCTASK). │ │ │ │ │ The below illustration is a simple block diagram showing what a typical 3-axis CNC mill with stepper │ │ │ │ │ motors might look like: │ │ │ │ │ 2. Found at link:https://en.wikipedia.org/wiki/Unix_philosophy, 07/06/2008 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.1 – Simple LinuxCNC Controlled Machine │ │ │ │ │ A computer running LinuxCNC sends a sequence of pulses via the parallel port to the stepper drives, │ │ │ │ │ each of which has one stepper motor connected to it. Each drive receives two independent signals; │ │ │ │ │ one signal to command the drive to move its associated stepper motor in a clockwise or anti-clockwise │ │ │ │ │ @@ -6144,15 +6144,15 @@ │ │ │ │ │ mill, such as the number of steps each stepper motor must turn to complete one full revolution, │ │ │ │ │ the maximum rate at which each stepper may operate at, the limits of travel of each axis or the │ │ │ │ │ configuration and behaviour of limit switches on each axis. │ │ │ │ │ — My_CNC.hal │ │ │ │ │ This HAL file contains information that tells LinuxCNC how to link the internal virtual signals │ │ │ │ │ to physical connections beyond the computer. For example, specifying pin 4 on the parallel port │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 1224 │ │ │ │ │ │ │ │ │ │ to send out the Z axis step direction signal, or directing LinuxCNC to cease driving the X axis │ │ │ │ │ motor when a limit switch is triggered on parallel port pin 13. │ │ │ │ │ — custom.HAL │ │ │ │ │ Customisations to the mill configuration beyond the scope of the wizard may be performed by │ │ │ │ │ @@ -6178,77 +6178,77 @@ │ │ │ │ │ 2.2.3 Graphical User Interfaces │ │ │ │ │ A graphical user interface is the part of the LinuxCNC that the machine tool operator interacts with. │ │ │ │ │ LinuxCNC comes with several types of user interfaces which may be chosen from by editing certain │ │ │ │ │ fields contained in the INI file: │ │ │ │ │ AXIS │ │ │ │ │ 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: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 2.2 – AXIS, the standard keyboard GUI interface │ │ │ │ │ │ │ │ │ │ Touchy │ │ │ │ │ Touchy, a touch screens GUI: │ │ │ │ │ │ │ │ │ │ 46 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 2.3 – Touchy, a touch screen GUI │ │ │ │ │ │ │ │ │ │ Gscreen │ │ │ │ │ Gscreen, a user-configurable touch screen GUI: │ │ │ │ │ │ │ │ │ │ 47 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.4 – Gscreen, a configurable base touch screen GUI │ │ │ │ │ │ │ │ │ │ GMOCCAPY │ │ │ │ │ GMOCCAPY, a touch screen GUI based on Gscreen. GMOCCAPY is also designed to work equally │ │ │ │ │ well in applications where a keyboard and mouse are the preferred methods of controlling the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.5 – GMOCCAPY, a touch screen GUI based on Gscreen │ │ │ │ │ │ │ │ │ │ NGCGUI │ │ │ │ │ NGCGUI, a subroutine GUI that provides wizard-style programming of G code. NGCGUI may be │ │ │ │ │ run as a standalone program or embedded into another GUI as a series of tabs. The following │ │ │ │ │ screenshot shows NGCGUI embedded into AXIS: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.6 – NGCGUI, a graphical interface integrated into AXIS │ │ │ │ │ │ │ │ │ │ TkLinuxCNC │ │ │ │ │ TkLinuxCNC, another interface based on Tcl/Tk. Once the most popular interface after AXIS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 2.7 – TkLinuxCNC graphical interface │ │ │ │ │ │ │ │ │ │ Xemc │ │ │ │ │ an X-Window program │ │ │ │ │ halui │ │ │ │ │ A HAL based user interface allowing to control LinuxCNC using buttons and switches │ │ │ │ │ linuxcncrsh │ │ │ │ │ A telnet based user interface allowing to send commands from remote computers. │ │ │ │ │ │ │ │ │ │ 51 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 1224 │ │ │ │ │ │ │ │ │ │ 2.2.4 Virtual Control Panels │ │ │ │ │ As mentioned above, many of LinuxCNC’s GUIs may be customized by the user. This may be done to │ │ │ │ │ add indicators, readouts, switches or sliders to the basic appearance of one of the GUIs for increased │ │ │ │ │ flexibility or functionality. Two styles of Virtual Control Panel are offered in LinuxCNC: │ │ │ │ │ @@ -6262,15 +6262,15 @@ │ │ │ │ │ GladeVCP │ │ │ │ │ GladeVCP, a Glade-based virtual control panel that can be added to the AXIS or Touchy GUIs. │ │ │ │ │ GladeVCP has the advantage over PyVCP in that it is not limited to the display or control of HAL │ │ │ │ │ virtual signals, but can include other external interfaces outside LinuxCNC such as window or │ │ │ │ │ network events. GladeVCP is also more flexible in how it may be configured to appear on the │ │ │ │ │ GUI: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.9 – GladeVCP Example Embedded Into AXIS GUI │ │ │ │ │ │ │ │ │ │ 2.2.5 Languages │ │ │ │ │ LinuxCNC uses translation files to translate LinuxCNC User Interfaces into many languages including │ │ │ │ │ @@ -6292,15 +6292,15 @@ │ │ │ │ │ │ │ │ │ │ 2.2.7 Modes of Operation │ │ │ │ │ When LinuxCNC is running, there are three different major modes used for inputting commands. │ │ │ │ │ These are Manual, Auto, and Manual Data Input (MDI). Changing from one mode to another makes │ │ │ │ │ a big difference in the way that the LinuxCNC control behaves. There are specific things that can be │ │ │ │ │ done in one mode that cannot be done in another. An operator can home an axis in manual mode but │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 1224 │ │ │ │ │ │ │ │ │ │ not in auto or MDI modes. An operator can cause the machine to execute a whole file full of G-codes │ │ │ │ │ in the auto mode but not in manual or MDI. │ │ │ │ │ In manual mode, each command is entered separately. In human terms a manual command might be │ │ │ │ │ ”turn on coolant” or ”jog X at 25 inches per minute”. These are roughly equivalent to flipping a switch │ │ │ │ │ @@ -6340,15 +6340,15 @@ │ │ │ │ │ chapter. │ │ │ │ │ 2.3.1.2 Path Following │ │ │ │ │ A less straightforward problem is that of path following. When you program a corner in G-code, the │ │ │ │ │ trajectory planner can do several things, all of which are right in some cases: │ │ │ │ │ — It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new │ │ │ │ │ direction. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 55 / 1224 │ │ │ │ │ │ │ │ │ │ — It can also do what is called blending, which is to keep the feed rate up while going through the │ │ │ │ │ corner, making it necessary to round the corner off in order to obey machine constraints. │ │ │ │ │ You can see that there is a trade off here: you can slow down to get better path following, or keep the │ │ │ │ │ speed up and have worse path following. Depending on the particular cut, the material, the tooling, │ │ │ │ │ @@ -6394,15 +6394,15 @@ │ │ │ │ │ controlled point will touch at least one point on each movement. The machine will 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). On G2/3 moves in the G17 (XY) plane, │ │ │ │ │ when the maximum deviation of an arc from a straight line is less than the G64 Q- tolerance, the │ │ │ │ │ arc is broken into two lines (from start of arc to midpoint, and from midpoint to end). Those lines │ │ │ │ │ are then subject to the naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 56 / 1224 │ │ │ │ │ │ │ │ │ │ as well as line-line benefit from the naive cam detector. This improves contouring performance │ │ │ │ │ by simplifying the path. │ │ │ │ │ In the following figure the blue line represents the actual machine velocity. The red lines are the │ │ │ │ │ acceleration capability of the machine. The horizontal lines below each plot is the planned move. │ │ │ │ │ @@ -6437,15 +6437,15 @@ │ │ │ │ │ G- and M-codes define the behavior of LinuxCNC and it is important that you understand what each │ │ │ │ │ one does before running LinuxCNC. The defaults can be changed when running a G-Code file and │ │ │ │ │ left in a different state than when you started your LinuxCNC session. The best practice is to set the │ │ │ │ │ defaults needed for the job in the preamble of your G-Code file and not assume that the defaults have │ │ │ │ │ not changed. Printing out the G-Code Quick Reference page can help you remember what each one │ │ │ │ │ is. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 57 / 1224 │ │ │ │ │ │ │ │ │ │ 2.3.2.2 Feed Rate │ │ │ │ │ How the feed rate is applied depends on if an axis involved with the move is a rotary axis. Read and │ │ │ │ │ understand the Feed Rate section if you have a rotary axis or a lathe. │ │ │ │ │ 2.3.2.3 Tool Radius Offset │ │ │ │ │ @@ -6479,15 +6479,15 @@ │ │ │ │ │ same line as a move. Normally you are in the G54 coordinate system. │ │ │ │ │ 2.3.5.2 G54-59.3 User Coordinates │ │ │ │ │ Normally you use the G54 Coordinate System. When an offset is applied to a current user coordinate │ │ │ │ │ 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 │ │ │ │ │ Machine menu or program G10 L2 P1 X0 Y0 Z0 at the end of your G-code file. Change the P number │ │ │ │ │ to suit the coordinate system you wish to clear the offset in. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 58 / 1224 │ │ │ │ │ │ │ │ │ │ — Offsets stored in a user coordinate system are retained when LinuxCNC is shut down. │ │ │ │ │ — Using the Touch Off button in AXIS sets an offset for the chosen User Coordinate System. │ │ │ │ │ 2.3.5.3 When You Are Lost │ │ │ │ │ If you’re having trouble getting 0,0,0 on the DRO when you think you should, you may have some │ │ │ │ │ @@ -6509,22 +6509,22 @@ │ │ │ │ │ in relation to the material. │ │ │ │ │ Note also the position of the limit switches and the direction of activation of their cams. Several │ │ │ │ │ combinations are possible, for example it is possible (contrary to the drawing) to place a single fixed │ │ │ │ │ limit switch in the middle of the table and two mobile cams to activate it. In this case the limits will │ │ │ │ │ be reversed, +X will be on the right of the table and -X on the left. This inversion does not change │ │ │ │ │ anything from the point of view of the direction of movement of the tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 59 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.11 – Typical Mill Configuration │ │ │ │ │ The following diagram shows a typical lathe showing direction of travel of the tool and limit switches. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 2.12 – Typical Lathe Configuration │ │ │ │ │ │ │ │ │ │ 2.4 Starting LinuxCNC │ │ │ │ │ 2.4.1 Running LinuxCNC │ │ │ │ │ LinuxCNC is started with the script file linuxcnc. │ │ │ │ │ linuxcnc [options] [] │ │ │ │ │ @@ -6539,15 +6539,15 @@ │ │ │ │ │ $ linuxcnc [Options] path/to/your_ini_file │ │ │ │ │ Name the configuration INI file using its path │ │ │ │ │ $ linuxcnc [Options] -l │ │ │ │ │ Use the previously used configuration inifile │ │ │ │ │ │ │ │ │ │ 60 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 61 / 1224 │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ -d: Turn on ”debug” mode │ │ │ │ │ -v: Turn on ”verbose” mode │ │ │ │ │ -k: Continue in the presence of errors in HAL files │ │ │ │ │ @@ -6569,15 +6569,15 @@ │ │ │ │ │ or GladeVCP objects with HAL pins you must use the postgui HAL file to make any connections to │ │ │ │ │ those pins. See the [HAL] section of the INI configuration for more information. │ │ │ │ │ 2.4.1.1 Configuration Selector │ │ │ │ │ If no INI file is passed to the linuxcnc script it loads the configuration selector so you can choose and │ │ │ │ │ save a sample configuration. Once a sample configuration has been saved it can be modified to suit │ │ │ │ │ your application. The configuration files are saved in linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 62 / 1224 │ │ │ │ │ │ │ │ │ │ 2.5 CNC Machine Overview │ │ │ │ │ This section gives a brief description of how a CNC machine is viewed from the input and output ends │ │ │ │ │ of the Interpreter. │ │ │ │ │ │ │ │ │ │ @@ -6614,15 +6614,15 @@ │ │ │ │ │ of a lathe. The spindle may or may not be controlled by the CNC software. LinuxCNC offers support for │ │ │ │ │ up to 8 spindles, which can be individually controlled and can run simultaneously at different speeds │ │ │ │ │ and in different directions. │ │ │ │ │ 2.5.1.3 Coolant │ │ │ │ │ Flood coolant and mist coolant may each be turned on independently. The RS274/NGC language turns │ │ │ │ │ them off together see section M7 M8 M9. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 63 / 1224 │ │ │ │ │ │ │ │ │ │ 2.5.1.4 Feed and Speed Override │ │ │ │ │ A CNC machine can have separate feed and speed override controls, which let the operator specify │ │ │ │ │ that the actual feed rate or spindle speed used in machining at some percentage of the programmed │ │ │ │ │ rate. │ │ │ │ │ @@ -6654,15 +6654,15 @@ │ │ │ │ │ the spindle. The location of the controlled point can be moved out along the spindle axis by specifying │ │ │ │ │ some positive amount for the tool length offset. This amount is normally the length of the cutting tool │ │ │ │ │ in use, so that the controlled point is at the end of the cutting tool. On a lathe, tool length offsets can │ │ │ │ │ be specified for X and Z axes, and the controlled point is either at the tool tip or slightly outside it │ │ │ │ │ (where the perpendicular, axis-aligned lines touched by the front and side of the tool intersect). │ │ │ │ │ 3. If the parallelism requirement is violated, the system builder will have to say how to distinguish clockwise from counterclockwise. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 64 / 1224 │ │ │ │ │ │ │ │ │ │ 2.5.2.4 Coordinated Linear Motion │ │ │ │ │ To drive a tool along a specified path, a machining center must often coordinate the motion of several │ │ │ │ │ axes. We use the term coordinated linear motion to describe the situation in which, nominally, each │ │ │ │ │ axis moves at constant speed and all axes move from their starting positions to their end positions at │ │ │ │ │ @@ -6695,15 +6695,15 @@ │ │ │ │ │ 2.5.2.8 Units │ │ │ │ │ Units used for distances along the X, Y, and Z axes may be measured in millimeters or inches. Units for │ │ │ │ │ all other quantities involved in machine control cannot be changed. Different quantities use different │ │ │ │ │ specific units. Spindle speed is measured in revolutions per minute. The positions of rotational axes │ │ │ │ │ are measured in degrees. Feed rates are expressed in current length units per minute, or degrees per │ │ │ │ │ minute, or length units per spindle revolution, as described in section G93 G94 G95. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 65 / 1224 │ │ │ │ │ │ │ │ │ │ 2.5.2.9 Current Position │ │ │ │ │ The controlled point is always at some location called the current position, and the controller always │ │ │ │ │ knows where that is. The numbers representing the current position must be adjusted in the absence │ │ │ │ │ of any axis motion if any of several events take place: │ │ │ │ │ @@ -6733,15 +6733,15 @@ │ │ │ │ │ In exact path mode, the machine follows the programmed path as exactly as possible, slowing or │ │ │ │ │ stopping if necessary at sharp corners of the path. │ │ │ │ │ continuous mode │ │ │ │ │ In continuous mode, sharp corners of the path may be rounded slightly so that the feed rate may │ │ │ │ │ be kept up (but by no more than the tolerance, if specified). │ │ │ │ │ See sections G61 and G64. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 66 / 1224 │ │ │ │ │ │ │ │ │ │ 2.5.3 Interpreter Interaction with Switches │ │ │ │ │ The Interpreter interacts with several switches. This section describes the interactions in more detail. │ │ │ │ │ In no case does the Interpreter know what the setting of any of these switches is. │ │ │ │ │ 2.5.3.1 Feed and Speed Override Switches │ │ │ │ │ @@ -6775,15 +6775,15 @@ │ │ │ │ │ │ │ │ │ │ 2.5.5 Parameters │ │ │ │ │ In the RS274/NGC language view, a machining center maintains an array of numerical parameters │ │ │ │ │ defined by a system definition (RS274NGC_MAX_PARAMETERS). Many of them have specific uses │ │ │ │ │ especially in defining coordinate systems. The number of numerical parameters can increase as development adds support for new parameters. The parameter array persists over time, even if the │ │ │ │ │ machining center is powered down. LinuxCNC uses a parameter file to ensure persistence and gives │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 67 / 1224 │ │ │ │ │ │ │ │ │ │ the Interpreter the responsibility for maintaining the file. The Interpreter reads the file when it starts │ │ │ │ │ up, and writes the file when it exits. │ │ │ │ │ All parameters are available for use in G-code programs. │ │ │ │ │ The format of a parameter file is shown in the following table. The file consists of any number of │ │ │ │ │ @@ -6829,15 +6829,15 @@ │ │ │ │ │ [DISPLAY] │ │ │ │ │ # Tell the AXIS GUI our machine is a lathe. │ │ │ │ │ LATHE = TRUE │ │ │ │ │ │ │ │ │ │ Lathe Mode in AXIS does not set your default plane to G18 (XZ). You must program that in the preamble │ │ │ │ │ of each G-code file or (better) add it to your INI file, like this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 68 / 1224 │ │ │ │ │ │ │ │ │ │ [RS274NGC] │ │ │ │ │ # G-code modal codes (modes) that the interpreter is initialized with │ │ │ │ │ # on startup │ │ │ │ │ RS274NGC_STARTUP_CODE = G18 G20 G90 │ │ │ │ │ @@ -6858,15 +6858,15 @@ │ │ │ │ │ 2.6.3 Lathe Tool Orientation │ │ │ │ │ The following figure shows the lathe tool orientations with the center line angle of each orientation │ │ │ │ │ and info on FRONTANGLE and BACKANGLE. │ │ │ │ │ The FRONTANGLE and BACKANGLE are clockwise starting at a line parallel to Z+. │ │ │ │ │ │ │ │ │ │ Figure 2.13 – Lathe Tool Orientations │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 69 / 1224 │ │ │ │ │ │ │ │ │ │ In AXIS the following figures show what the Tool Positions look like, as entered in the tool table. │ │ │ │ │ Tool Positions 1, 2, 3 & 4Tool Positions 123 & 4 23 & 4 3 & 4 │ │ │ │ │ │ │ │ │ │ Tool Positions 5, 6, 7 & 8Tool Positions 567 & 8 67 & 8 7 & 8 │ │ │ │ │ @@ -6890,15 +6890,15 @@ │ │ │ │ │ 2. Set the current tool with Tn M6 G43 where n is the tool number. │ │ │ │ │ 3. Select the X axis in the Manual Control window. │ │ │ │ │ 4. Move the X to a known position or take a test cut and measure the diameter. │ │ │ │ │ 5. Select Touch Off and pick Tool Table then enter the position or the diameter. │ │ │ │ │ 6. Follow the same sequence to correct the Z axis. │ │ │ │ │ Note: if you are in Radius Mode you must enter the radius, not the diameter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 70 / 1224 │ │ │ │ │ │ │ │ │ │ 2.6.4.2 Z Touch Off │ │ │ │ │ The Z axis offsets can be a bit confusing at first because there are two elements to the Z offset. There │ │ │ │ │ is the tool table offset, and the machine coordinate offset. First we will look at the tool table offsets. │ │ │ │ │ One method is to use a fixed point on your lathe and set the Z offset for all tools from this point. Some │ │ │ │ │ @@ -6938,15 +6938,15 @@ │ │ │ │ │ Constant Surface Speed CSS or Constant Surface Speed uses the machine X origin modified by │ │ │ │ │ the tool X offset to compute the spindle speed in RPM. CSS will track changes in tool offsets. The X │ │ │ │ │ machine origin should be when the reference tool (the one with zero offset) is at the center of rotation. │ │ │ │ │ For more information see the G96 Section. │ │ │ │ │ Feed per Revolution Feed per revolution will move the Z axis by the F amount per revolution. This │ │ │ │ │ is not for threading, use G76 for threading. For more information see the G95 Section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 71 / 1224 │ │ │ │ │ │ │ │ │ │ 2.6.6 Arcs │ │ │ │ │ Calculating arcs can be mind challenging enough without considering radius and diameter mode on │ │ │ │ │ lathes as well as machine coordinate system orientation. The following applies to center format arcs. │ │ │ │ │ On a lathe you should include G18 in your preamble as the default is G17 even if you’re in lathe mode, │ │ │ │ │ @@ -6974,15 +6974,15 @@ │ │ │ │ │ The control point for the tool follows the programmed path. The control point is the intersection of a │ │ │ │ │ line parallel to the X and Z axis and tangent to the tool tip diameter, as defined when you touch off the │ │ │ │ │ X and Z axes for that tool. When turning or facing straight sided parts the cutting path and the tool │ │ │ │ │ edge follow the same path. When turning radius and angles the edge of the tool tip will not follow the │ │ │ │ │ programmed path unless cutter comp is in effect. In the following figures you can see how the control │ │ │ │ │ point does not follow the tool edge as you might assume. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 72 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.14 – Control point │ │ │ │ │ │ │ │ │ │ 2.6.7.2 Cutting Angles without Cutter Comp │ │ │ │ │ Now imagine we program a ramp without cutter comp. The programmed path is shown in the following │ │ │ │ │ @@ -6990,28 +6990,28 @@ │ │ │ │ │ same as long as we are moving in an X or Z direction only. │ │ │ │ │ │ │ │ │ │ Figure 2.15 – Ramp Entry │ │ │ │ │ Now as the control point progresses along the programmed path the actual cutter edge does not follow │ │ │ │ │ the programmed path as shown in the following figure. There are two ways to solve this, cutter comp │ │ │ │ │ and adjusting your programmed path to compensate for tip radius. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 73 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 2.16 – Ramp Path │ │ │ │ │ In the above example it is a simple exercise to adjust the programmed path to give the desired actual │ │ │ │ │ path by moving the programmed path for the ramp to the left the radius of the tool tip. │ │ │ │ │ 2.6.7.3 Cutting a Radius │ │ │ │ │ In this example we will examine what happens during a radius cut without cutter comp. In the next │ │ │ │ │ figure you see the tool turning the OD of the part. The control point of the tool is following the programmed path and the tool is touching the OD of the part. │ │ │ │ │ │ │ │ │ │ Figure 2.17 – Turning Cut │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 74 / 1224 │ │ │ │ │ │ │ │ │ │ In this next figure you can see as the tool approaches the end of the part the control point still follows │ │ │ │ │ the path but the tool tip has left the part and is cutting air. You can also see that even though a radius │ │ │ │ │ has been programmed the part will actually end up with a square corner. │ │ │ │ │ │ │ │ │ │ @@ -7019,15 +7019,15 @@ │ │ │ │ │ Now you can see as the control point follows the radius programmed the tool tip has left the part and │ │ │ │ │ is now cutting air. │ │ │ │ │ │ │ │ │ │ Figure 2.19 – Radius Cut │ │ │ │ │ In the final figure we can see the tool tip will finish cutting the face but leave a square corner instead │ │ │ │ │ of a nice radius. Notice also that if you program the cut to end at the center of the part a small amount │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 75 / 1224 │ │ │ │ │ │ │ │ │ │ of material will be left from the radius of the tool. To finish a face cut to the center of a part you have │ │ │ │ │ to program the tool to go past center at least the nose radius of the tool. │ │ │ │ │ │ │ │ │ │ Figure 2.20 – Face Cut │ │ │ │ │ @@ -7050,15 +7050,15 @@ │ │ │ │ │ sections separated by a center insulator. Inside the torch, the pilot arc starts in the gap between the │ │ │ │ │ negatively charged electrode and the positively charged tip. Once the pilot arc has ionised the plasma │ │ │ │ │ gas, the superheated column of gas flows through the small orifice in the torch tip, which is focused │ │ │ │ │ on the metal to be cut. │ │ │ │ │ In a Plasma Cutting Torch a cool gas enters Zone B, where a pilot arc between the electrode and the │ │ │ │ │ torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 76 / 1224 │ │ │ │ │ │ │ │ │ │ column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the │ │ │ │ │ torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown │ │ │ │ │ in Zone C. Direct current (DC) straight polarity is used for plasma cutting, as shown in the illustration. │ │ │ │ │ Zone A channels a secondary gas that cools the torch. This gas also assists the high velocity plasma │ │ │ │ │ @@ -7072,15 +7072,15 @@ │ │ │ │ │ works well, and starts quickly. But, because of the high frequency high voltage power that is required │ │ │ │ │ generated to ionise the air, it has some drawbacks. It often interferes with surrounding electronic │ │ │ │ │ circuitry, and can even damage components. Also a special circuit is needed to create a Pilot arc. │ │ │ │ │ Inexpensive models will not have a pilot arc, and require touching the consumable to the work to │ │ │ │ │ start. Employing a HF circuit also can increase maintenance issues, as there are usually adjustable │ │ │ │ │ points that must be cleaned and readjusted from time to time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 77 / 1224 │ │ │ │ │ │ │ │ │ │ 2.7.2.2 Blowback Start │ │ │ │ │ This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the │ │ │ │ │ torch head back to create a small spark between the inside surface of the consumable, ionising the │ │ │ │ │ air, and creating a small plasma flame. This also creates a ”pilot arc” that provides a plasma flame │ │ │ │ │ @@ -7105,15 +7105,15 @@ │ │ │ │ │ If the torch is too high or too low then the edges can become excessively bevelled. It is also critical │ │ │ │ │ that the torch is held perpendicular to the surface. │ │ │ │ │ — Torch to work distance can impact edge bevel │ │ │ │ │ │ │ │ │ │ — Negative cut angle: torch too low, increase torch to work distance. │ │ │ │ │ — Positive cut angle: torch too high, decrease torch to work distance. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 78 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ A slight variation in cut angles may be normal, as long as it is within tolerance. │ │ │ │ │ │ │ │ │ │ The ability to precisely control the cutting height in such a hostile and ever changing environment is │ │ │ │ │ @@ -7140,15 +7140,15 @@ │ │ │ │ │ — A Machine torch is preferred but many have used hand torches. │ │ │ │ │ — A fully shielded torch tip to allow ohmic sensing │ │ │ │ │ If you have the budget, a higher end machines will supply: │ │ │ │ │ — Manufacturer provided cut charts which will save many hours and material waste calibrating cut │ │ │ │ │ parameters │ │ │ │ │ — Dry Contacts for ArcOK │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 79 / 1224 │ │ │ │ │ │ │ │ │ │ — Terminals for Arc On switch │ │ │ │ │ — Raw arc voltage or divided arc voltage output │ │ │ │ │ — Optionally a RS485 interface if using a Hypertherm plasma cutter and want to control it from the │ │ │ │ │ LinuxCNC console. │ │ │ │ │ @@ -7194,15 +7194,15 @@ │ │ │ │ │ such as a Mesa card. If the dry contacts are a simple relay, there is a high probability that the current │ │ │ │ │ passing through the relay is less than the minimum current specification. Under these conditions, the │ │ │ │ │ relay contacts can suffer from a buildup of oxide which over time can result in intermittent contact │ │ │ │ │ operation. To prevent this from happening, a pull down resistor should be installed on the controller │ │ │ │ │ input pin. Care should be taken to ensure that this resistor is selected to ensure the minimum current │ │ │ │ │ passes through the relay and is of sufficient wattage to handle the power in the circuit. Finally, the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 80 / 1224 │ │ │ │ │ │ │ │ │ │ resistor should be mounted in such a way that the generated heat does not damage anything whilst │ │ │ │ │ in operation. │ │ │ │ │ If you have an ArcOK signal, it is recommended it is used over and above any synthesised signal to │ │ │ │ │ eliminate potential build issues. A synthesised signal available from an external THC or QtPlasmaC’s │ │ │ │ │ @@ -7243,15 +7243,15 @@ │ │ │ │ │ 1. Ohmic sensing only be implemented where the torch has a shield that is isolated from the torch │ │ │ │ │ tip that conveys the cutting arc. │ │ │ │ │ 2. The ohmic circuit uses a totally separate isolated power supply that activates an opto-isolated │ │ │ │ │ relay to enable the probing signal to be transmitted to the CNC controller. │ │ │ │ │ 3. The positive side of the circuit should be at the torch │ │ │ │ │ 4. Both sides of the circuit needs to be isolated by opto-isolated relays until probing is being undertaken │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 81 / 1224 │ │ │ │ │ │ │ │ │ │ 5. Blocking diodes be used to prevent arc voltage entering the ohmic sensing circuit. │ │ │ │ │ The following is an example circuit that has been proven to work and is compatible with the LinuxCNC │ │ │ │ │ QtPlasmaC configuration. │ │ │ │ │ │ │ │ │ │ @@ -7269,15 +7269,15 @@ │ │ │ │ │ threshold above which it is deemed contact is made and an output is enabled. By monitoring the voltage, a lower “break circuit” threshold can be set to build in strong switch hysteresis. This minimises │ │ │ │ │ false triggering. In our testing, we found the material sensing using this method was more sensitive │ │ │ │ │ and robust as well as being simpler to implement the wiring. One further advantage is using software │ │ │ │ │ outputs instead of physical I/O pins is that it frees up pins to use for other purposes. This advantage │ │ │ │ │ is helpful to get the most out of the Mesa 7I96 which has limited I/O pins. │ │ │ │ │ The following circuit diagram shows how to implement a hypersensing circuit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 82 / 1224 │ │ │ │ │ │ │ │ │ │ We used a 15 W Mean Well HDR-15 Ultra Slim DIN Rail Supply 24 V DIN rail based isolated power │ │ │ │ │ supply. This is a double insulated Isolation Class II device that will withstand any arc voltage that │ │ │ │ │ might be applied to the terminals. │ │ │ │ │ 2.7.7.4 Example HAL Code for Hypersensing │ │ │ │ │ @@ -7294,15 +7294,15 @@ │ │ │ │ │ setp ohmicsense.thcad-fullscale │ │ │ │ │ │ │ │ │ │ 140200 │ │ │ │ │ 988300 │ │ │ │ │ 32 │ │ │ │ │ 5 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 83 / 1224 │ │ │ │ │ │ │ │ │ │ setp ohmicsense.volt-divider │ │ │ │ │ 4.9 │ │ │ │ │ setp ohmicsense.ohmic-threshold │ │ │ │ │ 22.0 │ │ │ │ │ @@ -7335,15 +7335,15 @@ │ │ │ │ │ │ │ │ │ │ 2.7.10 Torch Breakaway │ │ │ │ │ It is recommended that a mechanism is provided to allow the torch to “break away” or fall off in the │ │ │ │ │ case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow │ │ │ │ │ the CNC controller to detect if this has occurred and pause the running program. Usually a break │ │ │ │ │ away is implemented using magnets to secure the torch to the Z axis stage. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 84 / 1224 │ │ │ │ │ │ │ │ │ │ 2.7.11 Corner Lock / Velocity Anti-Dive │ │ │ │ │ The LinuxCNC trajectory planner is responsible for translating velocity and acceleration commands │ │ │ │ │ into motion that obey the laws of physics. For example, motion will slow when negotiating a corner. │ │ │ │ │ Whilst this is not a problem with milling machines or routers, this poses a particular problem for │ │ │ │ │ @@ -7375,15 +7375,15 @@ │ │ │ │ │ his work using simple air plasma. │ │ │ │ │ The generally accepted method to get good holes from 37mm dia. and down to material thickness with │ │ │ │ │ minimal taper using an air plasma is: │ │ │ │ │ 1. Use recommended cutting current for consumables. │ │ │ │ │ 2. Use fixed (no THC) recommended cutting height for consumables. │ │ │ │ │ 3. Cut from 60% to 70% of the recommended feed rate of consumables and materials. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 85 / 1224 │ │ │ │ │ │ │ │ │ │ 4. Start lead in at or near center of hole. │ │ │ │ │ 5. Use perpendicular lead in. │ │ │ │ │ 6. No lead out, either a slight over burn or early torch off depending on what works best for you. │ │ │ │ │ You will need to experiment to get exact hole size because the kerf with this method will be wider │ │ │ │ │ @@ -7423,15 +7423,15 @@ │ │ │ │ │ — Usually connected to one of the ̀ ̀motion.digital- ̀ < │ │ │ │ │ ̀ nn> pins for use from G-code with M66 │ │ │ │ │ 2.7.14.2 Torch On (output) │ │ │ │ │ — Triggers a relay to close the torch on switch in the inverter. │ │ │ │ │ — Connect the torch on terminals on the inverter to the relay output terminals. │ │ │ │ │ — Connect one side of the coil to the output pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 86 / 1224 │ │ │ │ │ │ │ │ │ │ — Connect the other side of the coil to Field Power ground. │ │ │ │ │ — If a mechanical relay is used, connect a flyback diode (e.g., IN400x series) across the coil terminals │ │ │ │ │ with the band on the diode pointing towards the output pin. │ │ │ │ │ — If a Solid State Relay is used, polarity may need to be observed on the outputs. │ │ │ │ │ @@ -7468,15 +7468,15 @@ │ │ │ │ │ use of their THCAD board to read arc voltage. │ │ │ │ │ 2.7.14.6 Torch Breakaway Sensor │ │ │ │ │ — As mentioned earlier, a breakaway sensor should be installed that is triggered if the torch crashes │ │ │ │ │ and falls off. │ │ │ │ │ — Usually, this would be connected to halui.program-pause so the fault can be rectified and the │ │ │ │ │ program resumed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 87 / 1224 │ │ │ │ │ │ │ │ │ │ 2.7.15 G-code For Plasma Controllers │ │ │ │ │ Most plasma controllers offer a method to change settings from G-code. LinuxCNC support this via │ │ │ │ │ M67/M68 for analog commands and M62-M65 for digital (on/off commands). How this is implemented is │ │ │ │ │ totally arbitrary. Lets look at how the LinuxCNC QtPlasmaC configuration does this: │ │ │ │ │ @@ -7519,15 +7519,15 @@ │ │ │ │ │ to a fixed diameter and the external offset moves the tool in and out to machine the cam lobe via an │ │ │ │ │ applied external offset. To configure our lathe to machine this cam, we need to allocate some portion │ │ │ │ │ of the axis velocity and acceleration to external offsets or the tool can’t move. This is where the INI │ │ │ │ │ variable OFFSET_AV_RATIO comes in. Say we decide we need to allocate 20% of the velocity and │ │ │ │ │ acceleration to the external offset to the Z axis. We set this equal to 0.2. The consequence of this is │ │ │ │ │ that your maximum velocity and acceleration for the Lathe’s Z axis is only 80% of what it could be. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 88 / 1224 │ │ │ │ │ │ │ │ │ │ External offsets are a very powerful method to make torch height adjustments to the Z axis via a │ │ │ │ │ THC. But plasma is all about high velocities and rapid acceleration so it makes no sense to limit these │ │ │ │ │ parameters. Fortunately in a plasma machine, the Z axis is either 100% controlled by the THC or it │ │ │ │ │ isn’t. During the development of LinuxCNC’s external offsets it was recognised that Z axis motion │ │ │ │ │ @@ -7574,15 +7574,15 @@ │ │ │ │ │ Because the full scale is 10 Volts, then the frequency per Volt is: │ │ │ │ │ (29000 Hz - 3800 Hz) / 10 V = 2520 Hz per Volt │ │ │ │ │ So assuming we have a 5 Volt input, the calculated frequency would be: │ │ │ │ │ (2520 Hz/V * 5 V) + 3800 Hz = 16400 Hz │ │ │ │ │ So now it should be fairly clear how to convert the frequency to its voltage equivalent: │ │ │ │ │ Volts = (frequency [Hz] - 3800 Hz) / 2520 Hz/V │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 89 / 1224 │ │ │ │ │ │ │ │ │ │ 2.7.17.1 THCAD Connections │ │ │ │ │ On the high voltage side: │ │ │ │ │ — Connect the divided or raw arc voltage to IN + and IN — Connect the interconnect cable shield to the Shield connection. │ │ │ │ │ — Connect the other Shield terminal to frame ground. │ │ │ │ │ @@ -7618,15 +7618,15 @@ │ │ │ │ │ this configuration with a 120 A Thermal Dynamics plasma cutter. │ │ │ │ │ HF Start Install the THCAD at the inverter as the frequency signal is far more immune to EMI noise. │ │ │ │ │ — If you do not have a voltage divider and you have room inside the plasma cutter, install a THCAD300 inside the plasma cutter. │ │ │ │ │ — If you do not have a voltage divider and you do not have room inside the plasma cutter, install a │ │ │ │ │ THCAD-10 in a metal case outside the plasma cutter and install 50% of the scaling resistance on │ │ │ │ │ each of the IN + and IN - inside the plasma cutter case so no lethal voltages come out of the case. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 90 / 1224 │ │ │ │ │ │ │ │ │ │ — If you have a voltage divider, install a THCAD-10 in a metal case outside the plasma cutter │ │ │ │ │ Raw Arc voltage presented on a connector In this case, regardless of the arc starting method, │ │ │ │ │ there are probably already resistors included in the circuitry to avoid lethal shocks so a THCAD-10 is │ │ │ │ │ advised so this resistance (typically 200 kΩ) can be accounted for when choosing a scaling resistor as │ │ │ │ │ @@ -7670,15 +7670,15 @@ │ │ │ │ │ grounding point on the machine. Connect the plasma ground lead to this point and optionally an earth │ │ │ │ │ rod driven into the ground as close as possible to the machine (particularly if its a HF start plasma │ │ │ │ │ machine). │ │ │ │ │ External wiring to motors should be shielded and appropriately sized to handle the current passing │ │ │ │ │ through the circuit. The shield should be left unconnected at the motor end and earthed at the control │ │ │ │ │ box end. Consider using an additional pin on any connectors into the control box so the earth can │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 91 / 1224 │ │ │ │ │ │ │ │ │ │ be extended through into the control box and earthed to the chassis right at the stepper/servo motor │ │ │ │ │ controller itself. │ │ │ │ │ We are aware of at least one commercial system builder who has had problems with induced electrical │ │ │ │ │ noise on the ohmic sensing circuit. Whilst this can be mitigated by using ferrite beads and coiling the │ │ │ │ │ @@ -7720,15 +7720,15 @@ │ │ │ │ │ per motor revolution is considered ideal but even around 30 mm per revolutions is still acceptable. A │ │ │ │ │ 5 mm pitch ball screw with a 3:1 or 5:1 reduction drive is ideal for the Z axis. │ │ │ │ │ │ │ │ │ │ 2.7.24 QtPlasmaC LinuxCNC Plasma Configuration │ │ │ │ │ The QtPlasmaC which is comprised of a HAL component (plasmac.hal) plus a complete configurations │ │ │ │ │ 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 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 92 / 1224 │ │ │ │ │ │ │ │ │ │ much testing and development work in getting QtPlasmaC to its current working state. Everything │ │ │ │ │ from circuit design to G-code control and configuration has been included. Additionally, QtPlasmaC │ │ │ │ │ supports external THC’s such as the Proma 150 but really comes into its own when paired with a │ │ │ │ │ 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. │ │ │ │ │ @@ -7764,15 +7764,15 @@ │ │ │ │ │ and allows you to configure toolsets and code snippets to suit your needs. SheetCam post processors │ │ │ │ │ are text files written in the Lua programming language and are generally easy to modify to suit your │ │ │ │ │ exact requirements. For further information, consult the SheetCam web site and their support forum. │ │ │ │ │ Another popular post-processor is included with the popular Fusion360 package but the included │ │ │ │ │ post-processors will need some customisation. │ │ │ │ │ LinuxCNC is a CNC application and discussions of CAM techniques other than this introductory discussion are out of scope of LinuxCNC. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 93 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 3 │ │ │ │ │ │ │ │ │ │ Configuration Wizards │ │ │ │ │ 3.1 Stepper Configuration Wizard │ │ │ │ │ @@ -7783,15 +7783,15 @@ │ │ │ │ │ & direction. │ │ │ │ │ StepConf is installed when you install LinuxCNC and is in the CNC menu. │ │ │ │ │ StepConf places a file in the linuxcnc/config directory to store the choices for each configuration you │ │ │ │ │ create. When you change something, you need to pick the file that matches your configuration name. │ │ │ │ │ The file extension is .stepconf. │ │ │ │ │ The StepConf Wizard works best with at least 800 x 600 screen resolution. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 94 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.2 Start Page │ │ │ │ │ │ │ │ │ │ Figure 3.1 – StepConf Entry Page │ │ │ │ │ The three first radio buttons are self-explanatory: │ │ │ │ │ @@ -7805,15 +7805,15 @@ │ │ │ │ │ mach XML file will not be changed. │ │ │ │ │ These next options will be recorded in a preference file for the next run of StepConf. │ │ │ │ │ — Create Desktop Shortcut - This will place a link on your desktop to the files. │ │ │ │ │ — Create Desktop Launcher - This will place a launcher on your desktop to start your application. │ │ │ │ │ — Create Simulated Hardware - This allows you to build a config for testing, even if you don’t have │ │ │ │ │ the actual hardware. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 95 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.3 Basic Information │ │ │ │ │ │ │ │ │ │ Figure 3.2 – Basic Information Page │ │ │ │ │ — Create Simulated Hardware - This allows you to build a config for testing, even if you don’t have │ │ │ │ │ @@ -7827,15 +7827,15 @@ │ │ │ │ │ — Driver Type - If you have one of the stepper drivers listed in the pull down box, choose it. Otherwise, │ │ │ │ │ select Other and find the timing values in your driver’s data sheet and enter them as nano seconds │ │ │ │ │ in the Driver Timing Settings. If the data sheet gives a value in microseconds, multiply by 1000. │ │ │ │ │ For example, enter 4.5 µs as 4500 ns. │ │ │ │ │ A list of some popular drives, along with their timing values, is on the LinuxCNC.org Wiki under │ │ │ │ │ Stepper Drive Timing. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 96 / 1224 │ │ │ │ │ │ │ │ │ │ Additional signal conditioning or isolation such as optocouplers and RC filters on break out boards │ │ │ │ │ can impose timing constraints of their own, in addition to those of the driver. You may find it necessary to add some time to the drive requirements to allow for this. │ │ │ │ │ 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 │ │ │ │ │ will work with most drives. * Step Space - Minimum time between step pulses in nano seconds. If │ │ │ │ │ @@ -7858,15 +7858,15 @@ │ │ │ │ │ only, so no hardware needs to be connected to run the test. │ │ │ │ │ │ │ │ │ │ AVERTISSEMENT │ │ │ │ │ Do not attempt run LinuxCNC while the latency test is running. │ │ │ │ │ │ │ │ │ │ Figure 3.3 – Latency Test │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 97 / 1224 │ │ │ │ │ │ │ │ │ │ Latency is how long it takes the PC to stop what it is doing and respond to an external request. In our │ │ │ │ │ case, the request is the periodic heartbeat that serves as a timing reference for the step pulses. The │ │ │ │ │ lower the latency, the faster you can run the heartbeat, and the faster and smoother the step pulses │ │ │ │ │ will be. │ │ │ │ │ @@ -7881,15 +7881,15 @@ │ │ │ │ │ If your Max Jitter number is less than about 15-20 µs (15000-20000 ns), the computer should give very │ │ │ │ │ nice results with software stepping. If the max latency is more like 30-50 µs, you can still get good │ │ │ │ │ results, but your maximum step rate might be a little disappointing, especially if you use microstepping │ │ │ │ │ or have very fine pitch leadscrews. If the numbers are 100 µs or more (100,000 ns), then the PC is not │ │ │ │ │ a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 ns) mean the PC is │ │ │ │ │ not a good candidate for LinuxCNC, regardless of whether you use software stepping or not. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 98 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.5 Parallel Port Setup │ │ │ │ │ │ │ │ │ │ Figure 3.4 – Parallel Port Setup Page │ │ │ │ │ You may specify the address as a hexadecimal (often 0x378) or as linux’s default port number (probably │ │ │ │ │ @@ -7903,15 +7903,15 @@ │ │ │ │ │ uses all normally closed contacts. │ │ │ │ │ — Homing & Limit Switches - These can be selected from an input pin drop down box for most configurations. │ │ │ │ │ — Charge Pump - If your driver board requires a charge pump signal select Charge Pump from the │ │ │ │ │ drop down list for the output pin you wish to connect to your charge pump input. The charge pump │ │ │ │ │ output is connected to the base thread by StepConf. The charge pump output will be about 1/2 of │ │ │ │ │ the maximum step rate shown on the Basic Machine Configuration page. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 99 / 1224 │ │ │ │ │ │ │ │ │ │ — Plasma Arc Voltage - If you require a Mesa THCAD to input a plasma arc voltage then select Plasma │ │ │ │ │ Arc Voltage from the list of output pins. This will enable a THCAD page during the setup procedure │ │ │ │ │ for the entry of the card parameters. │ │ │ │ │ │ │ │ │ │ @@ -7919,15 +7919,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 3.5 – Parallel Port 2 Setup Page │ │ │ │ │ The second Parallel port (if selected) can be configured and It’s pins assigned on this page. No step and │ │ │ │ │ direction signals can be selected. You may select in or out to maximizes the number of input/output │ │ │ │ │ pins that are available. You may specify the address as a hexadecimal (often 0x378) or as linux’s │ │ │ │ │ default port number (probably 1). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 100 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.7 Axis Configuration │ │ │ │ │ │ │ │ │ │ Figure 3.6 – Axis Configuration Screen │ │ │ │ │ — Motor Steps Per Revolution - The number of full steps per motor revolution. If you know how many │ │ │ │ │ @@ -7940,15 +7940,15 @@ │ │ │ │ │ of threads per inch. If you chose mm units, enter the number of millimeters per revolution (e.g., │ │ │ │ │ enter 2 for 2mm/rev). If the machine travels in the wrong direction, enter a negative number here │ │ │ │ │ instead of a positive number, or invert the direction pin for the axis. │ │ │ │ │ — Maximum Velocity - Enter the maximum velocity for the axis in units per second. │ │ │ │ │ — 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 set the acceleration. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 101 / 1224 │ │ │ │ │ │ │ │ │ │ — Home Location - The position the machine moves to after completing the homing procedure for │ │ │ │ │ this axis. For machines without home switches, this is the location the operator manually moves │ │ │ │ │ the machine to before pressing the Home button. If you combine the home and limit switches you │ │ │ │ │ must move off of the switch to the home position or you will get a joint limit error. │ │ │ │ │ @@ -7977,15 +7977,15 @@ │ │ │ │ │ — Axis SCALE - The number that will be used in the INI file [SCALE] setting. This is how many steps │ │ │ │ │ per user unit. │ │ │ │ │ — Test this axis - This will open a window to allow testing for each axis. This can be used after filling │ │ │ │ │ out all the information for this axis. │ │ │ │ │ │ │ │ │ │ Figure 3.7 – Axis Test │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 102 / 1224 │ │ │ │ │ │ │ │ │ │ Test this axis is a basic tester that only outputs step and direction signals to try different values for │ │ │ │ │ acceleration and velocity. │ │ │ │ │ Important │ │ │ │ │ In order to use test this axis you have to manually enable the axis if this is required. If your │ │ │ │ │ @@ -8018,15 +8018,15 @@ │ │ │ │ │ 3.1.7.2 Finding Maximum Acceleration │ │ │ │ │ With the Maximum Velocity you found in the previous step, enter the acceleration value to test. Using │ │ │ │ │ the same procedure as above, adjust the Acceleration value up or down as necessary. In this test, it is │ │ │ │ │ important that the combination of Acceleration and Test Area allow the machine to reach the selected │ │ │ │ │ Velocity. Once you have found a value at which the axis does not stall or lose steps during this testing │ │ │ │ │ procedure, reduce it by 10% and use that as the axis Maximum Acceleration. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 103 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.8 Spindle Configuration │ │ │ │ │ │ │ │ │ │ Figure 3.8 – Spindle Configuration Page │ │ │ │ │ This page only appears when Spindle PWM is chosen in the Parallel Port Pinout page for one of the │ │ │ │ │ @@ -8036,15 +8036,15 @@ │ │ │ │ │ — PWM Rate - The carrier frequency of the PWM signal to the spindle. Enter 0 for PDM mode, which │ │ │ │ │ is useful for generating an analog control voltage. Refer to the documentation for your spindle │ │ │ │ │ controller for the appropriate value. │ │ │ │ │ — Speed 1 and 2, PWM 1 and 2 - The generated configuration file uses a simple linear relationship │ │ │ │ │ to determine the PWM value for a given RPM value. If the values are not known, they can be │ │ │ │ │ determined. For more information see Determining Spindle Calibration. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 104 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.8.2 Spindle-synchronized motion │ │ │ │ │ When the appropriate signals from a spindle encoder are connected to LinuxCNC via HAL, LinuxCNC │ │ │ │ │ supports lathe threading. These signals are: │ │ │ │ │ — Spindle Index - Is a pulse that occurs once per revolution of the spindle. │ │ │ │ │ @@ -8085,15 +8085,15 @@ │ │ │ │ │ Because most spindle drivers are somewhat nonlinear in their response curves, it is best to: │ │ │ │ │ — Make sure the two calibration speeds are not too close together in RPM. │ │ │ │ │ — Make sure the two calibration speeds are in the range of speeds you will typically use while milling. │ │ │ │ │ For instance, if your spindle will go from 0 RPM to 8000 RPM, but you generally use speeds from 400 │ │ │ │ │ RPM (10%) to 4000 RPM (100%), then find the PWM values that give 1600 RPM (40%) and 2800 RPM │ │ │ │ │ (70%). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 105 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.9 Options │ │ │ │ │ │ │ │ │ │ Figure 3.9 – Advanced Options Configuration │ │ │ │ │ — Include Halui - This will add the Halui user interface component. See the HALUI Chapter for more │ │ │ │ │ @@ -8101,15 +8101,15 @@ │ │ │ │ │ — Include PyVCP - This option adds the PyVCP panel base file or a sample file to work on. See the │ │ │ │ │ PyVCP Chapter for more information. │ │ │ │ │ — Include ClassicLadder PLC - This option will add the ClassicLadder PLC (Programmable Logic │ │ │ │ │ Controller). See the ClassicLadder Chapter for more information. │ │ │ │ │ — Onscreen Prompt For Tool Change - If this box is checked, LinuxCNC will pause and prompt you to │ │ │ │ │ change the tool when M6 is encountered. This feature is usually only useful if you have presettable │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 106 / 1224 │ │ │ │ │ │ │ │ │ │ tools. │ │ │ │ │ │ │ │ │ │ 3.1.10 Complete Machine Configuration │ │ │ │ │ Click Apply to write the configuration files. Later, you can re-run this program and tweak the settings │ │ │ │ │ @@ -8136,15 +8136,15 @@ │ │ │ │ │ The zero position is the location on the axis that is 0 in the machine coordinate system. Usually the zero │ │ │ │ │ position will be within the soft limits. On lathes, constant surface speed mode requires that machine │ │ │ │ │ X=0 correspond to the center of spindle rotation when no tool offset is in effect. │ │ │ │ │ The home position is the location within travel that the axis will be moved to at the end of the homing │ │ │ │ │ sequence. This value must be within the soft limits. In particular, the home position should never be │ │ │ │ │ exactly equal to a soft limit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 107 / 1224 │ │ │ │ │ │ │ │ │ │ 3.1.11.1 Operating without Limit Switches │ │ │ │ │ A machine can be operated without limit switches. In this case, only the soft limits stop the machine │ │ │ │ │ from reaching the hard stop. Soft limits only operate after the machine has been homed. │ │ │ │ │ 3.1.11.2 Operating without Home Switches │ │ │ │ │ @@ -8162,15 +8162,15 @@ │ │ │ │ │ LinuxCNC expects a TRUE value when a switch is closed, so the corresponding Invert box must be │ │ │ │ │ checked on the pinout configuration page. The pull up resistor show in the diagrams pulls the input │ │ │ │ │ high until the connection to ground is made and then the input goes low. Otherwise the input might │ │ │ │ │ float between on and off when the circuit is open. Typically for a parallel port you might use 47 kΩ;. │ │ │ │ │ │ │ │ │ │ Figure 3.11 – Normally Closed Switches (N/C) wiring in series (simplified diagram) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 108 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.12 – Normally Open Switches (N/O) wiring in parallel (simplified diagram) │ │ │ │ │ The following combinations of switches are permitted in StepConf: │ │ │ │ │ — Combine home switches for all axes │ │ │ │ │ — Combine limit switches for all axes │ │ │ │ │ @@ -8192,15 +8192,15 @@ │ │ │ │ │ The other is to use PnCconf to build a config that is close to what you want and then hand edit everything to tailor it to your needs. This would be the choice if you need extensive modifications beyond │ │ │ │ │ PnCconf’s scope or just want to tinker with / learn about LinuxCNC. │ │ │ │ │ You navigate the wizard pages with the forward, back, and cancel buttons there is also a help button │ │ │ │ │ that gives some help information about the pages, diagrams and an output page. │ │ │ │ │ ASTUCE │ │ │ │ │ PnCconf’s help page should have the most up to date info and has additional details. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 109 / 1224 │ │ │ │ │ │ │ │ │ │ 3.2.1 Step by Step Instructions │ │ │ │ │ │ │ │ │ │ Figure 3.13 – PnCconf Splash │ │ │ │ │ │ │ │ │ │ @@ -8212,15 +8212,15 @@ │ │ │ │ │ places a note in those files. It also allows you to select desktop shortcut / launcher options. A desktop │ │ │ │ │ shortcut will place a folder icon on the desktop that points to your new configuration files. Otherwise │ │ │ │ │ you would have to look in your home folder under linuxcnc/configs. │ │ │ │ │ A Desktop launcher will add an icon to the desktop for starting your config directly. You can also │ │ │ │ │ launch it from the main menu by using the Configuration Selector LinuxCNC found in CNC menu and │ │ │ │ │ selecting your config name. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 110 / 1224 │ │ │ │ │ │ │ │ │ │ 3.2.3 Basic Machine Information │ │ │ │ │ │ │ │ │ │ Figure 3.14 – PnCconf Basic │ │ │ │ │ Machine Basics │ │ │ │ │ @@ -8233,15 +8233,15 @@ │ │ │ │ │ │ │ │ │ │ Computer Response Time │ │ │ │ │ The servo period sets the heart beat of the system. Latency refers to the amount of time the │ │ │ │ │ computer can be longer then that period. Just like a railroad, LinuxCNC requires everything │ │ │ │ │ on a very tight and consistent time line or bad things happen. LinuxCNC requires and uses a │ │ │ │ │ real time operating system, which just means it has a low latency ( lateness ) response time │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 111 / 1224 │ │ │ │ │ │ │ │ │ │ when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be │ │ │ │ │ interrupted by lower priority requests (such as user input to screen buttons or drawing etc). │ │ │ │ │ Testing the latency is very important and a key thing to check early. Luckily by using the Mesa card │ │ │ │ │ to do the work that requires the fastest response time (encoder counting and PWM generation) we │ │ │ │ │ @@ -8291,15 +8291,15 @@ │ │ │ │ │ displayed for a few seconds during start up. For PCI parallel port cards the address can be found │ │ │ │ │ by pressing the parport address search button. This pops up the help output page with a list of │ │ │ │ │ all the PCI devices that can be found. In there should be a reference to a parallel port device with │ │ │ │ │ a list of addresses. One of those addresses should work. Not all PCI parallel ports work properly. │ │ │ │ │ Either type can be selected as in (maximum amount of input pins) or out (maximum amount of │ │ │ │ │ output pins). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 112 / 1224 │ │ │ │ │ │ │ │ │ │ GUI Front-end list │ │ │ │ │ This specifies the graphical display screens LinuxCNC will use. Each one has different option. │ │ │ │ │ AXIS │ │ │ │ │ — fully supports lathes. │ │ │ │ │ @@ -8325,15 +8325,15 @@ │ │ │ │ │ — fully featured plasmac configuration based on the QtVCP infrastructure. │ │ │ │ │ — mouse/keyboard operation or touchscreen operation │ │ │ │ │ — no VCP integration │ │ │ │ │ │ │ │ │ │ 3.2.4 External Configuration │ │ │ │ │ This page allows you to select external controls such as for jogging or overrides. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 113 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.15 – External Controls │ │ │ │ │ If you select a Joystick for jogging, You will need it always connected for LinuxCNC to load. To use │ │ │ │ │ the analog sticks for useful jogging you probably need to add some custom HAL code. MPG jogging │ │ │ │ │ requires a pulse generator connected to a MESA encoder counter. Override controls can either use │ │ │ │ │ @@ -8344,15 +8344,15 @@ │ │ │ │ │ connect to Linux’s device list. PnCconf will help to prepare this file. │ │ │ │ │ — Search for device rule will search the system for rules, you can use this to find the name of │ │ │ │ │ devices you have already built with PnCconf. │ │ │ │ │ — Add a device rule will allow you to configure a new device by following the prompts. You will │ │ │ │ │ need your device available. │ │ │ │ │ — test device allows you to load a device, see its pin names and check its functions with halmeter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 114 / 1224 │ │ │ │ │ │ │ │ │ │ joystick jogging uses HALUI and hal_input components. │ │ │ │ │ External buttons │ │ │ │ │ allows jogging the axis with simple buttons at a specified jog rate. Probably best for rapid jogging. │ │ │ │ │ MPG Jogging │ │ │ │ │ @@ -8366,15 +8366,15 @@ │ │ │ │ │ PnCconf allows overrides of feed rates and/or spindle speed using a pulse generator (MPG) or │ │ │ │ │ switches (eg. rotary). │ │ │ │ │ │ │ │ │ │ 3.2.5 GUI Configuration │ │ │ │ │ Here you can set defaults for the display screens, add virtual control panels (VCP), and set some │ │ │ │ │ LinuxCNC options.. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 115 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.16 – GUI Configuration │ │ │ │ │ Front-end GUI Options │ │ │ │ │ The default options allows general defaults to be chosen for any display screen. │ │ │ │ │ AXIS defaults are options specific to AXIS. If you choose size , position or force maximize options then │ │ │ │ │ @@ -8386,15 +8386,15 @@ │ │ │ │ │ Themes controls the basic look and feel of a program. You can download themes from the net or edit │ │ │ │ │ them yourself. There are a list of the current themes on the computer that you can pick from. To help │ │ │ │ │ some of the text to stand out PnCconf allows you to override the Themes’s defaults. The position and │ │ │ │ │ force max options can be used to move Touchy to a second monitor if the system is capable. │ │ │ │ │ QtPlasmaC options are specific to QtPlasmac, any common options that are not required will be disabled. If QtPlasmac is selected then the following screen will be a user button setup screen that is │ │ │ │ │ specific to QtPlasmaC and VCP options will not be available. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 116 / 1224 │ │ │ │ │ │ │ │ │ │ VCP options │ │ │ │ │ Virtual Control Panels allow one to add custom controls and displays to the screen. AXIS and │ │ │ │ │ Touchy can integrate these controls inside the screen in designated positions. There are two │ │ │ │ │ kinds of VCPs - PyVCP which uses Tkinter to draw the screen and GladeVCP that uses GTK to │ │ │ │ │ @@ -8438,15 +8438,15 @@ │ │ │ │ │ — Require homing before MDI / Running │ │ │ │ │ — If you want to be able to move the machine before homing uncheck this checkbox. │ │ │ │ │ — Popup Tool Prompt │ │ │ │ │ — Choose between an on screen prompt for tool changes or export standard signal names for │ │ │ │ │ a User supplied custom tool changer HAL file │ │ │ │ │ — Leave spindle on during tool change: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 117 / 1224 │ │ │ │ │ │ │ │ │ │ — Used for lathes │ │ │ │ │ — Force individual manual homing │ │ │ │ │ — Move spindle up before tool change │ │ │ │ │ — Restore joint position after shutdown │ │ │ │ │ @@ -8458,15 +8458,15 @@ │ │ │ │ │ 3.2.6 Mesa Configuration │ │ │ │ │ The Mesa configuration pages allow one to utilize different firmwares. On the basic page you selected │ │ │ │ │ a Mesa card here you pick the available firmware and select what and how many components are │ │ │ │ │ available. │ │ │ │ │ │ │ │ │ │ Figure 3.17 – Mesa Board Configuration │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 118 / 1224 │ │ │ │ │ │ │ │ │ │ Parport address is used only with Mesa parport card, the 7i43. An on board parallel port usually uses │ │ │ │ │ 0x278 or 0x378 though you should be able to find the address from the BIOS page. The 7i43 requires │ │ │ │ │ the parallel port to use the EPP mode, again set in the BIOS page. If using a PCI parallel port the │ │ │ │ │ address can be searched for by using the search button on the basic page. │ │ │ │ │ @@ -8502,49 +8502,49 @@ │ │ │ │ │ the I/O setup pages. Only I/O tabs will be shown for available connectors, depending on the Mesa │ │ │ │ │ board. │ │ │ │ │ │ │ │ │ │ 3.2.7 Mesa I/O Setup │ │ │ │ │ The tabs are used to configure the input and output pins of the Mesa boards. PnCconf allows one to │ │ │ │ │ create custom signal names for use in custom HAL files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 119 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.18 – Mesa I/O C2 Setup │ │ │ │ │ On this tab with this firmware the components are setup for a 7i33 daughter board, usually used with │ │ │ │ │ closed loop servos. Note the component numbers of the encoder counters and PWM drivers are not │ │ │ │ │ in numerical order. This follows the daughter board requirements. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 120 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.19 – Mesa I/O C3 Setup │ │ │ │ │ On this tab all the pins are GPIO. Note the 3 digit numbers - they will match the HAL pin number. │ │ │ │ │ GPIO pins can be selected as input or output and can be inverted. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 121 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.20 – Mesa I/O C4 Setup │ │ │ │ │ On this tab there are a mix of step generators and GPIO. Step generators output and direction pins │ │ │ │ │ can be inverted. Note that inverting a Step Gen-A pin (the step output pin) changes the step timing. │ │ │ │ │ It should match what your controller expects. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3.2.8 Parallel port configuration │ │ │ │ │ │ │ │ │ │ The parallel port can be used for simple I/O similar to Mesa’s GPIO pins. │ │ │ │ │ │ │ │ │ │ 122 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 123 / 1224 │ │ │ │ │ │ │ │ │ │ 3.2.9 Axis Configuration │ │ │ │ │ │ │ │ │ │ Figure 3.21 – Axis Drive Configuration │ │ │ │ │ This page allows configuring and testing of the motor and/or encoder combination. If using a servo │ │ │ │ │ @@ -8556,15 +8556,15 @@ │ │ │ │ │ Handbook 1 standards or AXIS graphical display will not make much sense. Hopefully the help │ │ │ │ │ page and diagrams can help figure this out. Note that axis directions are based on TOOL movement not table movement. There is no acceleration ramping with the open loop test so start with │ │ │ │ │ lower DAC numbers. By moving the axis a known distance one can confirm the encoder scaling. │ │ │ │ │ The encoder should count even without the amp enabled depending on how power is supplied to │ │ │ │ │ the encoder. │ │ │ │ │ 1. ”axis nomenclature” in the chapter ”Numerical Control” in the ”Machinery’s Handbook” published by Industrial Press. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 124 / 1224 │ │ │ │ │ │ │ │ │ │ AVERTISSEMENT │ │ │ │ │ If the motor and encoder do not agree on counting direction then the servo will run away when │ │ │ │ │ using PID control. │ │ │ │ │ │ │ │ │ │ @@ -8614,15 +8614,15 @@ │ │ │ │ │ — As a result, the a and b coefficients from the linear fit can be used as the scale and offset for the │ │ │ │ │ controller directly. │ │ │ │ │ MAX OUTPUT │ │ │ │ │ The maximum value for the output of the PID compensation that is written to the motor amplifier, in volts. The computed output value is clamped to this limit. The limit is applied before │ │ │ │ │ scaling to raw output units. The value is applied symmetrically to both the plus and the minus │ │ │ │ │ side. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 125 / 1224 │ │ │ │ │ │ │ │ │ │ Tuning Test │ │ │ │ │ The tuning test unfortunately only works with stepper based systems. Again confirm the directions on the axis is correct. Then test the system by running the axis back and forth, If the │ │ │ │ │ acceleration or max speed is too high you will lose steps. While jogging, Keep in mind it can │ │ │ │ │ take a while for an axis with low acceleration to stop. Limit switches are not functional during │ │ │ │ │ @@ -8634,25 +8634,25 @@ │ │ │ │ │ ones you have figured out). If in doubt use large numbers such as 5000 this will only limit max │ │ │ │ │ speed. │ │ │ │ │ Brushless Motor Control │ │ │ │ │ These options are used to allow low level control of brushless motors using special firmware │ │ │ │ │ and daughter boards. It also allows conversion of HALL sensors from one manufacturer to another. It is only partially supported and will require one to finish the HAL connections. Contact │ │ │ │ │ the mail-list or forum for more help. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 126 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.22 – Axis Scale Calculation │ │ │ │ │ The scale settings can be directly entered or one can use the calculate scale button to assist. Use the │ │ │ │ │ check boxes to select appropriate calculations. Note that pulley teeth requires the number of teeth │ │ │ │ │ not the gear ratio. Worm turn ratio is just the opposite it requires the gear ratio. If your happy with │ │ │ │ │ the scale press apply otherwise push cancel and enter the scale directly. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 127 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.23 – Axis Configuration │ │ │ │ │ Also refer to the diagram tab for two examples of home and limit switches. These are two examples │ │ │ │ │ of many different ways to set homing and limits. │ │ │ │ │ │ │ │ │ │ @@ -8664,15 +8664,15 @@ │ │ │ │ │ handbook. │ │ │ │ │ On a typical knee or bed mill │ │ │ │ │ — when the TABLE moves out that is the positive Y direction │ │ │ │ │ — when the TABLE moves left that is the positive X direction │ │ │ │ │ — when the TABLE moves down that is the positive Z direction │ │ │ │ │ — when the HEAD moves up that is the positive Z direction │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 128 / 1224 │ │ │ │ │ │ │ │ │ │ On a typical lathe │ │ │ │ │ — when the TOOL moves right, away from the chuck │ │ │ │ │ — that is the positive Z direction │ │ │ │ │ — when the TOOL moves toward the operator │ │ │ │ │ @@ -8719,15 +8719,15 @@ │ │ │ │ │ limits. LinuxCNC uses the home switch location to calculate the origin position (when using │ │ │ │ │ home switches or must be manually set if not using home switches. │ │ │ │ │ Travel distance │ │ │ │ │ This is the maximum distance the axis can travel in each direction. This may or may not be able │ │ │ │ │ to be measured directly from origin to limit switch. The positive and negative travel distances │ │ │ │ │ should add up to the total travel distance. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 129 / 1224 │ │ │ │ │ │ │ │ │ │ POSITIVE TRAVEL DISTANCE │ │ │ │ │ This is the distance the Axis travels from the Origin to the positive travel distance or the total │ │ │ │ │ travel minus the negative travel distance. You would set this to zero if the origin is positioned at │ │ │ │ │ the positive limit. The will always be zero or a positive number. │ │ │ │ │ @@ -8762,30 +8762,30 @@ │ │ │ │ │ LinuxCNC will search for an encoder index pulse while in the latch stage of homing. │ │ │ │ │ Use Compensation File │ │ │ │ │ Allows specifying a Comp filename and type. Allows sophisticated compensation. See AXIS Section of the INI chapter. │ │ │ │ │ Use Backlash Compensation │ │ │ │ │ Allows setting of simple backlash compensation. Can not be used with Compensation File. See │ │ │ │ │ AXIS Section of the INI chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 130 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 3.24 – AXIS Help Diagram │ │ │ │ │ The diagram should help to demonstrate an example of limit switches and standard axis movement │ │ │ │ │ directions. In this example the Z axis was two limit switches, the positive switch is shared as a home │ │ │ │ │ switch. The MACHINE ORIGIN (zero point) is located at the negative limit. The left edge of the carriage │ │ │ │ │ is the negative trip pin and the right the positive trip pin. We wish the FINAL HOME POSITION to be │ │ │ │ │ 4 inches away from the ORIGIN on the positive side. If the carriage was moved to the positive limit │ │ │ │ │ we would measure 10 inches between the negative limit and the negative trip pin. │ │ │ │ │ │ │ │ │ │ 3.2.10 Spindle Configuration │ │ │ │ │ If you select spindle signals then this page is available to configure spindle control. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 131 / 1224 │ │ │ │ │ │ │ │ │ │ ASTUCE │ │ │ │ │ Many of the option on this page will not show unless the proper option was selected on previous │ │ │ │ │ pages! │ │ │ │ │ │ │ │ │ │ @@ -8797,15 +8797,15 @@ │ │ │ │ │ — If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be │ │ │ │ │ shown. │ │ │ │ │ — Spindle-at-speed allows LinuxCNC to wait till the spindle is at the requested speed before moving │ │ │ │ │ the axis. This is particularly handy on lathes with constant surface feed and large speed diameter │ │ │ │ │ changes. It requires either encoder feedback or a digital spindle-at-speed signal typically connected │ │ │ │ │ to a VFD drive. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 132 / 1224 │ │ │ │ │ │ │ │ │ │ — If using encoder feedback, you may select a spindle-at-speed scale setting that specifies how close │ │ │ │ │ the actual speed must be to the requested speed to be considered at-speed. │ │ │ │ │ — If using encoder feedback, the VCP speed display can be erratic - the filter setting can be used to │ │ │ │ │ smooth out the display. The encoder scale must be set for the encoder count / gearing used. │ │ │ │ │ @@ -8821,15 +8821,15 @@ │ │ │ │ │ has a timed lube pump signal. The Z auto touch-off is with a touch-off plate, the GladeVCP touch-off │ │ │ │ │ button and special HALUI commands to set the current user origin to zero and rapid clear. The serial │ │ │ │ │ modbus program is basically a blank template program that sets up ClassicLadder for serial modbus. │ │ │ │ │ See the ClassicLadder Chapter in the manual. │ │ │ │ │ │ │ │ │ │ Figure 3.26 – PnCconf, advanced options │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 133 / 1224 │ │ │ │ │ │ │ │ │ │ 3.2.12 HAL Components │ │ │ │ │ On this page you can add additional HAL components you might need for custom HAL files. In this │ │ │ │ │ way one should not have to hand edit the main HAL file, while still allowing user needed components. │ │ │ │ │ │ │ │ │ │ @@ -8840,15 +8840,15 @@ │ │ │ │ │ Meaning if you need 2 and PnCconf needs 1 PnCconf will load 3 instances and use the last one. │ │ │ │ │ Custom Component Commands │ │ │ │ │ This selection will allow you to load HAL components that PnCconf does not use. Add the loadrt │ │ │ │ │ or loadusr command, under the heading loading command Add the addf command under the │ │ │ │ │ heading Thread command. The components will be added to the thread between reading of inputs │ │ │ │ │ and writing of outputs, in the order you write them in the thread command. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 134 / 1224 │ │ │ │ │ │ │ │ │ │ 3.2.13 Advanced Usage Of PnCconf │ │ │ │ │ PnCconf does its best to allow flexible customization by the user. PnCconf has support for custom │ │ │ │ │ signal names, custom loading of components, custom HAL files and custom firmware. │ │ │ │ │ There are also signal names that PnCconf always provides regardless of options selected, for user’s │ │ │ │ │ @@ -8891,26 +8891,26 @@ │ │ │ │ │ with the -a option. The contents of this file can be seen when you first load PnCconf - press the help │ │ │ │ │ button and look at the output page. │ │ │ │ │ Ask on the LinuxCNC mail-list or forum for info about converting custom firmware. Not all firmware │ │ │ │ │ can be utilized with PnCconf. │ │ │ │ │ Custom HAL Files │ │ │ │ │ There are four custom files that you can use to add HAL commands to: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 135 / 1224 │ │ │ │ │ │ │ │ │ │ — custom.hal is for HAL commands that don’t have to be run after the GUI frontend loads. It is │ │ │ │ │ run after the configuration-named HAL file. │ │ │ │ │ — custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP │ │ │ │ │ display loads. │ │ │ │ │ — custom_gvcp.hal is for commands that must be run after GladeVCP is loaded. │ │ │ │ │ — shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 136 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 4 │ │ │ │ │ │ │ │ │ │ Configuration │ │ │ │ │ 4.1 Integrator Concepts │ │ │ │ │ @@ -8938,15 +8938,15 @@ │ │ │ │ │ locations can be in a different place. To view the options for running LinuxCNC from the command │ │ │ │ │ line run linuxcnc -h. │ │ │ │ │ Note │ │ │ │ │ Optional locations for some files can be configured in the INI file. See the │ │ │ │ │ <> section and the <> │ │ │ │ │ section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 137 / 1224 │ │ │ │ │ │ │ │ │ │ 4.1.2 Files │ │ │ │ │ Each configuration directory requires at least the following files: │ │ │ │ │ — An INI file .ini │ │ │ │ │ — A HAL file .hal or HALTCL file .tcl specified in the HAL section of the INI file. │ │ │ │ │ @@ -8987,15 +8987,15 @@ │ │ │ │ │ high time. Add the 11 µs latency to the 4.5 µs high time, and you get a minimum period of 15.5 µs │ │ │ │ │ 1. This section refers to using stepgen, LinuxCNC’s built-in step generator. Some hardware devices have their own step │ │ │ │ │ generator and do not use LinuxCNC’s built-in one. In that case, refer to your hardware manual. │ │ │ │ │ 2. steplen refers to a parameter that adjusts the performance of LinuxCNC’s built-in step generator, stepgen, which is a HAL │ │ │ │ │ component. This parameter adjusts the length of the step pulse itself. Keep reading, all will be explained eventually. │ │ │ │ │ 3. dirhold refers to a parameter that adjusts the length of the direction hold time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 138 / 1224 │ │ │ │ │ │ │ │ │ │ . When you try 15.5 µs , you find that the computer is sluggish, so you settle on 16 µs . If we leave │ │ │ │ │ dirhold at 1 (the default), then the minimum time between step and direction is the 16 µs period minus │ │ │ │ │ the 11 µs latency = 5 µs , which is not enough. We need another 15 µs . Since the period is 16 µs , we │ │ │ │ │ need one more period. So we change dirhold from 1 to 2. Now the minimum time from the end of the │ │ │ │ │ @@ -9014,15 +9014,15 @@ │ │ │ │ │ how a servomotor system is connected. │ │ │ │ │ │ │ │ │ │ Figure 4.1 – Servo Loop │ │ │ │ │ This diagram shows that the input signal (and the feedback signal) drive the summing amplifier, the │ │ │ │ │ summing amplifier drives the power amplifier, the power amplifier drives the motor, the motor drives │ │ │ │ │ the load (and the feedback device), and the feedback device (and the input signal) drive the motor. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 139 / 1224 │ │ │ │ │ │ │ │ │ │ This looks very much like a circle (a closed loop) where A controls B, B controls C, C controls D, and │ │ │ │ │ D controls A. │ │ │ │ │ If you have not worked with servo systems before, this will no doubt seem a very strange idea at first, │ │ │ │ │ especially as compared to more normal electronic circuits, where the inputs proceed smoothly to the │ │ │ │ │ @@ -9052,15 +9052,15 @@ │ │ │ │ │ retain a steady state error that is a function of the proportional gain and the process gain. Despite the │ │ │ │ │ steady-state offset, both tuning theory and industrial practice indicate that it is the proportional term │ │ │ │ │ that should contribute the bulk of the output change. │ │ │ │ │ 4. If it helps, the closest equivalent to this in the digital world are state machines, sequential machines and so forth, where │ │ │ │ │ what the outputs are doing now depends on what the inputs (and the outputs) were doing before. If it doesn’t help, then │ │ │ │ │ nevermind. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 140 / 1224 │ │ │ │ │ │ │ │ │ │ 4.1.4.3 Integral term │ │ │ │ │ The contribution from the integral term (sometimes called reset) is proportional to both the magnitude │ │ │ │ │ of the error and the duration of the error. Summing the instantaneous error over time (integrating │ │ │ │ │ the error) gives the accumulated offset that should have been corrected previously. The accumulated │ │ │ │ │ @@ -9097,15 +9097,15 @@ │ │ │ │ │ The Real Time Application Interface (RTAI) is used to provide the best Real Time (RT) performance. │ │ │ │ │ The RTAI patched kernel lets you write applications with strict timing constraints. RTAI gives you the │ │ │ │ │ ability to have things like software step generation which require precise timing. │ │ │ │ │ 4.1.5.1 ACPI │ │ │ │ │ The Advanced Configuration and Power Interface (ACPI) has a lot of different functions, most of which │ │ │ │ │ interfere with RT performance (for example: power management, CPU power down, CPU frequency │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 141 / 1224 │ │ │ │ │ │ │ │ │ │ scaling, etc). The LinuxCNC kernel (and probably all RTAI-patched kernels) has ACPI disabled. ACPI │ │ │ │ │ also takes care of powering down the system after a shutdown has been started, and that’s why you │ │ │ │ │ might need to push the power button to completely turn off your computer. The RTAI group has been │ │ │ │ │ improving this in recent releases, so your LinuxCNC system may shut off by itself after all. │ │ │ │ │ @@ -9142,15 +9142,15 @@ │ │ │ │ │ This will start the latency test with a base-thread period of 25uS and a servo-thread period of 1mS. │ │ │ │ │ The period times may be specified on the command line: │ │ │ │ │ latency-test 50000 1000000 │ │ │ │ │ │ │ │ │ │ This will start the latency test with a base-thread period of 50uS and a servo-thread period of 1mS. │ │ │ │ │ For available options, on the command line enter: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 142 / 1224 │ │ │ │ │ │ │ │ │ │ latency-test -h │ │ │ │ │ │ │ │ │ │ After starting a latency test you should see something like this: │ │ │ │ │ │ │ │ │ │ @@ -9172,15 +9172,15 @@ │ │ │ │ │ software stepping. Numbers over 1 millisecond (1,000,000 nanoseconds) mean the PC is not a good │ │ │ │ │ candidate for LinuxCNC, regardless of whether you use software stepping or not. │ │ │ │ │ Note │ │ │ │ │ If you get high numbers, there may be ways to improve them. Another PC had very bad latency │ │ │ │ │ (several milliseconds) when using the onboard video. But a $5 used video card solved the problem. │ │ │ │ │ LinuxCNC does not require bleeding edge hardware. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 143 / 1224 │ │ │ │ │ │ │ │ │ │ For more information on stepper tuning see the Stepper Tuning Chapter. │ │ │ │ │ Additional command line tools are available for examining latency when LinuxCNC is not │ │ │ │ │ running. │ │ │ │ │ 4.2.2.2 Latency Plot │ │ │ │ │ @@ -9204,15 +9204,15 @@ │ │ │ │ │ 4.2.2.3 Latency Histogram │ │ │ │ │ latency-histogram displays a histogram of latency (jitter) for a base and servo thread. │ │ │ │ │ Usage: │ │ │ │ │ latency-histogram --help | -? │ │ │ │ │ latency-histogram [Options] │ │ │ │ │ Options: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ --base │ │ │ │ │ --servo │ │ │ │ │ --bbinsize │ │ │ │ │ --sbinsize │ │ │ │ │ --bbins │ │ │ │ │ --sbins │ │ │ │ │ @@ -9257,15 +9257,15 @@ │ │ │ │ │ │ │ │ │ │ 4.2.3 Latency tuning │ │ │ │ │ LinuxCNC can run on many different hardware platforms and with many different realtime kernels, │ │ │ │ │ and they all may benefit from tuning for optimal latency. │ │ │ │ │ A primary goal in tuning the system for LinuxCNC is to reserve one or more CPUs for the exclusive │ │ │ │ │ use of LinuxCNC’s realtime tasks, so that other tasks (both user programs and kernel threads) do not │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 145 / 1224 │ │ │ │ │ │ │ │ │ │ interfere with LinuxCNC’s access to those CPUs. │ │ │ │ │ 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. │ │ │ │ │ The person installing LinuxCNC will need to experimentally determine the optimal tuning for their │ │ │ │ │ system. │ │ │ │ │ @@ -9301,15 +9301,15 @@ │ │ │ │ │ │ │ │ │ │ 4.3 Stepper Tuning │ │ │ │ │ 4.3.1 Getting the most out of Software Stepping │ │ │ │ │ Generating step pulses in software has one very big advantage - it’s free. Just about every PC has a │ │ │ │ │ parallel port that is capable of outputting step pulses that are generated by the software. However, │ │ │ │ │ software step pulses also have some disadvantages: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 146 / 1224 │ │ │ │ │ │ │ │ │ │ — limited maximum step rate │ │ │ │ │ — jitter in the generated pulses │ │ │ │ │ — loads the CPU │ │ │ │ │ This chapter has some steps that can help you get the best results from software generated steps. │ │ │ │ │ @@ -9349,15 +9349,15 @@ │ │ │ │ │ Direction Setup: 1 µs min (20 µs min hold time after Step edge) │ │ │ │ │ From the Gecko G203V manual: │ │ │ │ │ Step Frequency: 0 to 333 kHz │ │ │ │ │ Step Pulse ”0” Time: 2.0 µs min (Step on rising edge) │ │ │ │ │ Step Pulse ”1” Time: 1.0 µs min │ │ │ │ │ Direction Setup: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 147 / 1224 │ │ │ │ │ │ │ │ │ │ 200 ns (0.2 µs) before step pulse rising edge │ │ │ │ │ 200 ns (0.2 µs) hold after step pulse rising edge │ │ │ │ │ From the Xylotex datasheet: │ │ │ │ │ Minimum DIR setup time before rising edge of STEP Pulse 200 ns Minimum │ │ │ │ │ @@ -9401,15 +9401,15 @@ │ │ │ │ │ 2 µs high time. If you have 11 µs latency, then you can set the BASE_PERIOD as low as 11+2=13 µs. │ │ │ │ │ Getting rid of the long 20 µs hold time really helps! With a period of 13 µs, a complete step takes 2x13 │ │ │ │ │ = 26 µs, and the maximum step rate is 38,461 steps per second! │ │ │ │ │ But you can’t start celebrating yet. Note that 13 µs is a very short period. If you try to run the step │ │ │ │ │ generator every 13 µs, there might not be enough time left to run anything else, and your computer │ │ │ │ │ will lock up. If you are aiming for periods of less than 25 µs, you should start at 25 µs or more, run │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 148 / 1224 │ │ │ │ │ │ │ │ │ │ LinuxCNC, and see how things respond. If all is well, you can gradually decrease the period. If the │ │ │ │ │ mouse pointer starts getting sluggish, and everything else on the PC slows down, your period is a │ │ │ │ │ little too short. Go back to the previous value that let the computer run smoothly. │ │ │ │ │ In this case, suppose you started at 25 µs, trying to get to 13 µs, but you find that around 16 µs is the │ │ │ │ │ @@ -9452,15 +9452,15 @@ │ │ │ │ │ your latency test result and your stepper drive timing requirements and the spreadsheet calculates │ │ │ │ │ the optimum BASE_PERIOD. Next, you test the period to make sure it won’t slow down or lock up │ │ │ │ │ your PC. Finally, you enter the actual period, and the spreadsheet will tell you the stepgen parameter │ │ │ │ │ settings that are needed to meet your drive’s timing requirements. It also calculates the maximum │ │ │ │ │ step rate that you will be able to generate. │ │ │ │ │ I’ve added a few things to the spreadsheet to calculate max speed and stepper electrical calculations. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 149 / 1224 │ │ │ │ │ │ │ │ │ │ 4.4 INI Configuration │ │ │ │ │ 4.4.1 The INI File Components │ │ │ │ │ A typical INI file follows a rather simple layout that includes; │ │ │ │ │ — comments │ │ │ │ │ @@ -9501,15 +9501,15 @@ │ │ │ │ │ — [FILTER] settings input filter programs │ │ │ │ │ — [RS274NGC] settings used by the G-code interpreter │ │ │ │ │ — [EMCMOT] settings used by the real time motion controller │ │ │ │ │ — [TASK] settings used by the task controller │ │ │ │ │ — [HAL] specifies .hal files │ │ │ │ │ — [HALUI] MDI commands used by HALUI │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 150 / 1224 │ │ │ │ │ │ │ │ │ │ — [APPLICATIONS] Other applications to be started by LinuxCNC │ │ │ │ │ — [TRAJ] additional settings used by the real time motion controller │ │ │ │ │ — [JOINT_n] individual joint variables │ │ │ │ │ — [AXIS_l] individual axis variables │ │ │ │ │ @@ -9548,15 +9548,15 @@ │ │ │ │ │ TYPE = LINEAR │ │ │ │ │ ... │ │ │ │ │ SCALE = 16000 │ │ │ │ │ │ │ │ │ │ To introduce a custom section with its own variables, add the section and variables to the INI file. │ │ │ │ │ Custom Section Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 151 / 1224 │ │ │ │ │ │ │ │ │ │ [PROBE] │ │ │ │ │ Z_FEEDRATE = 50 │ │ │ │ │ Z_OFFSET = 12 │ │ │ │ │ Z_SAFE_DISTANCE = -10 │ │ │ │ │ @@ -9596,15 +9596,15 @@ │ │ │ │ │ #INCLUDE /home/myusername/myincludes/display.inc │ │ │ │ │ #INCLUDE ~/linuxcnc/myincludes/rs274ngc.inc │ │ │ │ │ │ │ │ │ │ The #INCLUDE directives are supported for one level of expansion only — an included file may not │ │ │ │ │ include additional files. The recommended file extension is .inc. Do not use a file extension of .ini for │ │ │ │ │ included files. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 152 / 1224 │ │ │ │ │ │ │ │ │ │ 4.4.2 INI File Sections │ │ │ │ │ 4.4.2.1 [EMC] Section │ │ │ │ │ — VERSION = 1.1 - The version number for the configuration. Any value other than 1.1 will cause the │ │ │ │ │ configuration checker to run and try to update the configuration to the new style joint axes type of │ │ │ │ │ @@ -9643,15 +9643,15 @@ │ │ │ │ │ — MIN_SPINDLE_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means │ │ │ │ │ 50% of the programmed spindle speed. (This is used to set the minimum spindle speed). │ │ │ │ │ — MIN_SPINDLE_0_OVERRIDE = 0.5 - The minimum spindle override the user may select. 0.5 means │ │ │ │ │ 50% of the programmed spindle speed. (This is used to set the minimum spindle speed). On multi │ │ │ │ │ spindle machine there will be entries for each spindle number. Only used by the QtVCP based user │ │ │ │ │ interfaces. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 153 / 1224 │ │ │ │ │ │ │ │ │ │ — MAX_SPINDLE_OVERRIDE = 1.0 - The maximum spindle override the user may select. 1.0 means │ │ │ │ │ 100% of the programmed spindle speed. │ │ │ │ │ — MAX_SPINDLE_0_OVERRIDE = 1.0 - The maximum feed override the user may select. 1.2 means │ │ │ │ │ 120% of the programmed feed rate. On multi spindle machine there will be entries for each spindle │ │ │ │ │ @@ -9692,15 +9692,15 @@ │ │ │ │ │ — EMBED_TAB_NAME = GladeVCP demo │ │ │ │ │ — EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui │ │ │ │ │ Note │ │ │ │ │ Different user interface programs use different options, and not every option is supported by every │ │ │ │ │ user interface. See AXIS GUI document for AXIS details. See gmoccapy document for Gmoccapy │ │ │ │ │ details. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 154 / 1224 │ │ │ │ │ │ │ │ │ │ — DEFAULT_LINEAR_VELOCITY = .25 - The default velocity for linear jogs, in machine units per │ │ │ │ │ second. │ │ │ │ │ — MIN_VELOCITY = .01 - The approximate lowest value the jog slider. │ │ │ │ │ — MAX_LINEAR_VELOCITY = 1.0 - The maximum velocity for linear jogs, in machine units per second. │ │ │ │ │ @@ -9745,15 +9745,15 @@ │ │ │ │ │ 6. The translation and rotation operations are evaluated right-to-left. So using GEOMETRY=XYZBC │ │ │ │ │ specifies a C rotation followed by a B rotation followed by Z, Y, X translations. (The ordering │ │ │ │ │ of consecutive translation letters is immaterial.) │ │ │ │ │ 7. The proper GEOMETRY string depends on the machine configuration and the kinematics used │ │ │ │ │ to control it. The order of the letters is important. For example, rotating around C then B is │ │ │ │ │ different than rotating around B then C. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 155 / 1224 │ │ │ │ │ │ │ │ │ │ 8. Rotations are by default applied with respect to the machine origin. Example: GEOMETRY=CXYZ │ │ │ │ │ first translates the control point to X, Y, Z and then performs a C rotation about the Z axis centered at the machine origin. │ │ │ │ │ 9. UVW translation example: GEOMETRY=XYZUVW causes UVW to move in the coordinate system of the tool and XYZ to move in the coordinate system of the material. │ │ │ │ │ 10. Foam-cutting machines (FOAM = 1) should specify ”XY;UV” or leave the value blank even │ │ │ │ │ @@ -9789,15 +9789,15 @@ │ │ │ │ │ │ │ │ │ │ — USER_COMMAND_FILE = mycommands.py - The name of an optional, configuration-specific Python file sourced by the axis GUI instead of the user-specific file ~/.axisrc. │ │ │ │ │ Note │ │ │ │ │ The following [DISPLAY] item is used by the TKLinuxCNC interface only. │ │ │ │ │ │ │ │ │ │ — HELP_FILE = tklinucnc.txt - Path to help file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 156 / 1224 │ │ │ │ │ │ │ │ │ │ 4.4.2.3 [FILTER] Section │ │ │ │ │ AXIS and gmoccapy have the ability to send loaded files through a filter program. This filter can │ │ │ │ │ do any desired task: Something as simple as making sure the file ends with M2, or something as │ │ │ │ │ complicated as detecting whether the input is a depth image, and generating G-code to mill the shape │ │ │ │ │ @@ -9840,15 +9840,15 @@ │ │ │ │ │ def main(argv): │ │ │ │ │ openfile = open(argv[0], ’r’) │ │ │ │ │ file_in = openfile.readlines() │ │ │ │ │ openfile.close() │ │ │ │ │ file_out = [] │ │ │ │ │ for line in file_in: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 157 / 1224 │ │ │ │ │ │ │ │ │ │ # print(line) │ │ │ │ │ if line.find(’Z’) != -1: │ │ │ │ │ words = line.rstrip(’\n’) │ │ │ │ │ words = words.split(’ ’) │ │ │ │ │ @@ -9893,15 +9893,15 @@ │ │ │ │ │ A search is made for each possible user defined function, typically (M100-M199). The search order │ │ │ │ │ is: │ │ │ │ │ 1. [DISPLAY]PROGRAM_PREFIX (if specified) │ │ │ │ │ 2. If [DISPLAY]PROGRAM_PREFIX is not specified, search the default location: nc_files │ │ │ │ │ 3. Then search each directory in the list [RS274NGC]USER_M_PATH │ │ │ │ │ The first executable M1xx found in the search is used for each M1xx. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 158 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The maximum number of USER_M_PATH directories is defined at compile time (typ: │ │ │ │ │ USER_DEFINED_FUNCTION_MAX_DIRS == 5). │ │ │ │ │ │ │ │ │ │ @@ -9942,15 +9942,15 @@ │ │ │ │ │ the results of using it are unpredictable. │ │ │ │ │ │ │ │ │ │ — LOG_LEVEL = 0 Default 0 Specify the log_level (default: -1) │ │ │ │ │ — LOG_FILE = file-name.log For specify the file used for log the data. │ │ │ │ │ — REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure See Remap Extending G-code chapter for details. │ │ │ │ │ — ON_ABORT_COMMAND=O call See Remap Extending G-code chapter for details. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 159 / 1224 │ │ │ │ │ │ │ │ │ │ 4.4.2.5 [EMCMOT] Section │ │ │ │ │ This section is a custom section and is not used by LinuxCNC directly. Most configurations use values │ │ │ │ │ from this section to load the motion controller. For more information on the motion controller see the │ │ │ │ │ Motion section. │ │ │ │ │ @@ -9988,15 +9988,15 @@ │ │ │ │ │ arg2, etc as argv list. Files with a .tcl suffix are processed as above but use haltcl for processing │ │ │ │ │ See the HALTCL Chapter for more information. │ │ │ │ │ — HALFILE = LIB:sys_example.hal - Execute the system library file sys_example.hal at start up. Explicit use of the LIB: prefix causes use of the system library HALFILE without searching the INI │ │ │ │ │ file directory. │ │ │ │ │ — HALFILE = LIB:sys_texample.tcl [arg1 [arg2 …]] - Execute the system library file sys_texample.tcl │ │ │ │ │ at start up. Explicit use of the LIB: prefix causes use of the system library HALFILE without searching the INI file directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 160 / 1224 │ │ │ │ │ │ │ │ │ │ HALFILE items specify files that loadrt HAL components and make signal connections between component pins. Common mistakes are 1) omission of the addf statement needed to add a component’s │ │ │ │ │ function(s) to a thread, 2) incomplete signal (net) specifiers. Omission of required addf statements is │ │ │ │ │ almost always an error. Signals usually include one or more input connections and a single output (but │ │ │ │ │ both are not strictly required). A system library file is provided to make checks for these conditions │ │ │ │ │ @@ -10035,15 +10035,15 @@ │ │ │ │ │ 4.4.2.8 [HALUI] section │ │ │ │ │ — MDI_COMMAND = G53 G0 X0 Y0 Z0 - An MDI command can be executed by using halui.mdicommand-00. Increment the number for each command listed in the [HALUI] section. │ │ │ │ │ 4.4.2.9 [APPLICATIONS] Section │ │ │ │ │ LinuxCNC can start other applications before the specified GUI is started. The applications can be │ │ │ │ │ started after a specified delay to allow for GUI-dependent actions (like creating GUI-specific HAL │ │ │ │ │ pins). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 161 / 1224 │ │ │ │ │ │ │ │ │ │ — DELAY = value - seconds to wait beore starting other applications. A delay may be needed if an application has dependencies on [HAL]POSTGUI_HALFILE actions or GUI-created HAL pins (default │ │ │ │ │ DELAY=0). │ │ │ │ │ — APP = appname [arg1 [arg2 …]] - Application to be started. This specification can be included │ │ │ │ │ multiple times. The appname can be explicitly named as an absolute or tilde specified filename │ │ │ │ │ @@ -10086,15 +10086,15 @@ │ │ │ │ │ # n = v_max / (2.0 * a_max * t_c) │ │ │ │ │ # where: │ │ │ │ │ # n = optimization depth │ │ │ │ │ # v_max = max axis velocity (UU / sec) │ │ │ │ │ # a_max = max axis acceleration (UU / sec) │ │ │ │ │ # t_c = servo period (seconds) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 162 / 1224 │ │ │ │ │ │ │ │ │ │ So, a machine with a maximum axis velocity of 10 IPS, a max acceleration of 100 IPS2 , and a servo │ │ │ │ │ period of 0.001 s would need: │ │ │ │ │ 10 / (2.0 * 100 * 0.001) = 50 segments to always reach maximum velocity along the fastest axis. │ │ │ │ │ In practice, this number isn’t that important to tune, since the look ahead rarely needs the full │ │ │ │ │ @@ -10145,15 +10145,15 @@ │ │ │ │ │ motion profile is limited by other factors, such as normal acceleration or requested velocity, and so │ │ │ │ │ the actual performance loss should be much smaller. Increasing the cutoff frequency can squeeze │ │ │ │ │ out more performance, but make the motion rougher due to acceleration discontinuities. A value │ │ │ │ │ in the range 20 Hz to 200 Hz should be reasonable to start. │ │ │ │ │ Finally, no amount of tweaking will speed up a tool path with lots of small, tight corners, since you’re │ │ │ │ │ limited by cornering acceleration. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 163 / 1224 │ │ │ │ │ │ │ │ │ │ — SPINDLES = 3 - The number of spindles to support. It is imperative that this number matches the │ │ │ │ │ ”num_spindles” parameter passed to the motion module. │ │ │ │ │ — COORDINATES = X Y Z - The names of the axes being controlled. Only X, Y, Z, A, B, C, U, V, W are │ │ │ │ │ valid. Only axes named in COORDINATES are accepted in G-code. It is permitted to write an axis │ │ │ │ │ @@ -10198,15 +10198,15 @@ │ │ │ │ │ — TPMOD = alternate_trajectory_planning module [tp_parms=value] │ │ │ │ │ The TPMOD variable is optional. If specified, use a specified (user-built) module instead of the │ │ │ │ │ default (tpmod). Module parameters (tp_parms) may be included if supported by the named module. │ │ │ │ │ The setting may be overridden from the command line using the -t option ($ linuxcnc -h). │ │ │ │ │ — NO_PROBE_JOG_ERROR = 0 - Allow to bypass probe tripped check when you jog manually. │ │ │ │ │ — NO_PROBE_HOME_ERROR = 0 - Allow to bypass probe tripped check when homing is in progress. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 164 / 1224 │ │ │ │ │ │ │ │ │ │ 4.4.2.11 [KINS] Section │ │ │ │ │ — JOINTS = 3 - Specifies the number of joints (motors) in the system. For example, a trivkins XYZ │ │ │ │ │ machine with a single motor for each axis has 3 joints. A gantry machine with one motor on each │ │ │ │ │ of two of the axes, and two motors on the third axis, has 4 joints. (This config variable may be used │ │ │ │ │ @@ -10250,15 +10250,15 @@ │ │ │ │ │ See the chapter: External Axis Offsets for usage information. │ │ │ │ │ 4.4.2.13 [JOINT_] Sections │ │ │ │ │ The specifies the joint number 0 … (num_joints-1) The value of num_joints is set by [KINS]JOINTS= │ │ │ │ │ The [JOINT_0], [JOINT_1], etc. sections contains general parameters for the individual components in │ │ │ │ │ the joint control module. The joint section names begin numbering at 0, and run through the number │ │ │ │ │ of joints specified in the [KINS]JOINTS entry minus 1. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 165 / 1224 │ │ │ │ │ │ │ │ │ │ Typically (for systems using trivkins kinematics, there is a 1:1 correspondence between a joint and an │ │ │ │ │ axis coordinate letter): │ │ │ │ │ — JOINT_0 = X │ │ │ │ │ — JOINT_1 = Y │ │ │ │ │ @@ -10306,15 +10306,15 @@ │ │ │ │ │ 1.000 1.003 0.998 │ │ │ │ │ │ │ │ │ │ — Type 1: The second value specifies positive offset from nominal while traveling in the positive │ │ │ │ │ direction. The third value specifies the negative offset from nominal while traveling in a negative │ │ │ │ │ direction. │ │ │ │ │ Type 1 Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 166 / 1224 │ │ │ │ │ │ │ │ │ │ -1.000 0.005 -0.005 │ │ │ │ │ 0.000 0.002 -0.003 │ │ │ │ │ 1.000 0.003 -0.004 │ │ │ │ │ │ │ │ │ │ @@ -10351,15 +10351,15 @@ │ │ │ │ │ — HOME = 0.0 - The position that the joint will go to upon completion of the homing sequence. │ │ │ │ │ — HOME_OFFSET = 0.0 - The joint position of the home switch or index pulse, in machine units. │ │ │ │ │ When the home point is found during the homing process, this is the position that is assigned to │ │ │ │ │ that point. When sharing home and limit switches and using a home sequence that will leave the │ │ │ │ │ home/limit switch in the toggled state the home offset can be used define the home switch position │ │ │ │ │ to be other than 0 if your HOME position is desired to be 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 167 / 1224 │ │ │ │ │ │ │ │ │ │ — HOME_SEARCH_VEL = 0.0 - Initial homing velocity in machine units per second. Sign denotes │ │ │ │ │ direction of travel. A value of zero means assume that the current location is the home position for │ │ │ │ │ the machine. If your machine has no home switches you will want to leave this value at zero. │ │ │ │ │ — HOME_LATCH_VEL = 0.0 - Homing velocity in machine units per second to the home switch latch │ │ │ │ │ @@ -10405,15 +10405,15 @@ │ │ │ │ │ units. │ │ │ │ │ This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict │ │ │ │ │ rules. Looser (larger) settings allow less servo hunting at the expense of lower accuracy. Tighter │ │ │ │ │ (smaller) settings attempt higher accuracy at the expense of more servo hunting. Is it really more │ │ │ │ │ accurate if it’s also more uncertain? As a general rule, it’s good to avoid, or at least limit, servo │ │ │ │ │ hunting if you can. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 168 / 1224 │ │ │ │ │ │ │ │ │ │ Be careful about going below 1 encoder count, since you may create a condition where there is no │ │ │ │ │ place that your servo is happy. This can go beyond hunting (slow) to nervous (rapid), and even to │ │ │ │ │ squealing which is easy to confuse with oscillation caused by improper tuning. Better to be a count │ │ │ │ │ or two loose here at first, until you’ve been through gross tuning at least. │ │ │ │ │ @@ -10445,15 +10445,15 @@ │ │ │ │ │ These two values are the scale and offset factors for the joint output to the motor amplifiers. │ │ │ │ │ The second value (offset) is subtracted from the computed output (in volts), and divided by the first │ │ │ │ │ value (scale factor), before being written to the D/A converters. The units on the scale value are │ │ │ │ │ in true volts per DAC output volts. The units on the offset value are in volts. These can be used to │ │ │ │ │ linearize a DAC. Specifically, when writing outputs, the LinuxCNC first converts the desired output │ │ │ │ │ in quasi-SI units to raw actuator values, e.g., volts for an amplifier DAC. This scaling looks like: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 169 / 1224 │ │ │ │ │ │ │ │ │ │ The value for scale can be obtained analytically by doing a unit analysis, i.e., units are [output SI │ │ │ │ │ units]/[actuator units]. For example, on a machine with a velocity mode amplifier such that 1 V │ │ │ │ │ results in 250 mm/s velocity. │ │ │ │ │ │ │ │ │ │ @@ -10498,15 +10498,15 @@ │ │ │ │ │ — ENCODER_SCALE = 20000 - in PnCconf built configs │ │ │ │ │ Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] │ │ │ │ │ section. For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS. For an │ │ │ │ │ angular joint one unit is equal to the setting in ANGULAR_UNITS. A second number, if specified, is │ │ │ │ │ ignored. For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units │ │ │ │ │ of inch, we have: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 170 / 1224 │ │ │ │ │ │ │ │ │ │ These parameters are relevant to joints controlled by steppers. │ │ │ │ │ AVERTISSEMENT │ │ │ │ │ The following are custom INI file entries that you may find in a sample INI file or a wizard │ │ │ │ │ generated file. These are not used by the LinuxCNC software. They are only there to put all the │ │ │ │ │ @@ -10541,15 +10541,15 @@ │ │ │ │ │ well. If specified, it should also be 1% to 10% larger than the joint MAX_VELOCITY. Subsequent testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of StepGen’s position │ │ │ │ │ loop. │ │ │ │ │ 4.4.2.14 [SPINDLE_] Section(s) │ │ │ │ │ The specifies the spindle number 0 … (num_spindles-1) The value of num_spindles is set by │ │ │ │ │ [TRAJ]SPINDLES= │ │ │ │ │ — MAX_VELOCITY = 20000 The maximum spindle speed (in rpm) for the specified spindle. Optional. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 171 / 1224 │ │ │ │ │ │ │ │ │ │ — MIN_VELOCITY = 3000 The minimum spindle speed (in rpm) for the specified spindle. Optional. │ │ │ │ │ Many spindles have a minimum speed below which they should not be run. Any spindle speed │ │ │ │ │ command below this limit will be /increased/ to this limit. │ │ │ │ │ — MAX_REVERSE_VELOCITY = 20000 This setting will default to MAX_VELOCITY if omitted. It can │ │ │ │ │ @@ -10590,15 +10590,15 @@ │ │ │ │ │ tool in the spindle. │ │ │ │ │ │ │ │ │ │ 4.5 Homing Configuration │ │ │ │ │ 4.5.1 Overview │ │ │ │ │ Homing sets the zero origin of the G53 machine coordinates. Soft limits are defined relative to the │ │ │ │ │ machine origin. The soft limits automatically decelerate and stop the axes before they hit the limits │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 172 / 1224 │ │ │ │ │ │ │ │ │ │ switches A properly configured and functioning machine will not move beyond soft(ware) limits and │ │ │ │ │ will have the machine origin set as repeatable as the home switch/index mechanism is. Linuxcnc can │ │ │ │ │ be homed by eye (alignment marks), with switches, with switches and an encoder index, or by using │ │ │ │ │ absolute encoders. Homing seems simple enough - just move each joint to a known location, and set │ │ │ │ │ @@ -10636,15 +10636,15 @@ │ │ │ │ │ While it is possible to use LinuxCNC with the G53 machine origin outside the soft machine limits, if │ │ │ │ │ you use G28 or G30 without setting the parameters it goes to the origin by default. This would trip │ │ │ │ │ the limit switches before getting to position. │ │ │ │ │ │ │ │ │ │ 4.5.3 Separate Home Switch Example Layout │ │ │ │ │ This example shows minimum and maximum limit switches with a separate home switch. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 173 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 4.6 – Demonstrative Separate Switch Layout │ │ │ │ │ — A is the negative soft limit │ │ │ │ │ — B is the G53 machine coordinate Origin │ │ │ │ │ — C is the home switch trip point │ │ │ │ │ @@ -10663,15 +10663,15 @@ │ │ │ │ │ Homing sets the G53 coordinate system, while the machine origin (zero point) can be anywhere, │ │ │ │ │ setting the zero point at the negative soft limit makes all G53 coordinates positive, which is probably │ │ │ │ │ easiest to remember. Do this by setting MIN_LIMIT = 0 and make sure MAX_LIMIT is positive. │ │ │ │ │ │ │ │ │ │ 4.5.4 Shared Limit/Home Switch Example Layout │ │ │ │ │ This example shows a maximum limit switch and a combined minimum limit/home switch. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 174 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 4.7 – Demonstrative Shared Switch Layout │ │ │ │ │ — A is the negative soft limit. │ │ │ │ │ — B is the G53 machine coordinate Origin. │ │ │ │ │ — C is the home switch trip point shared with (-L) minimum limit trip. │ │ │ │ │ @@ -10690,21 +10690,21 @@ │ │ │ │ │ 4.5.5 Homing Sequence │ │ │ │ │ │ │ │ │ │ There are four possible homing sequences defined by the sign of HOME_SEARCH_VEL and HOME_LATCH_V │ │ │ │ │ along with the associated configuration parameters as shown in the following table. Two basic conditions exist, HOME_SEARCH_VEL and HOME_LATCH_VEL are the same sign or they are opposite │ │ │ │ │ signs. For a more detailed description of what each configuration parameter does, see the following │ │ │ │ │ section. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 4.8 – Homing Sequences │ │ │ │ │ │ │ │ │ │ 175 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 176 / 1224 │ │ │ │ │ │ │ │ │ │ 4.5.6 Configuration │ │ │ │ │ The following determines exactly how the home sequence behaves. They are defined in an [JOINT_n] │ │ │ │ │ section of the INI file. │ │ │ │ │ Homing Type │ │ │ │ │ @@ -10758,15 +10758,15 @@ │ │ │ │ │ value is zero. │ │ │ │ │ 4.5.6.3 HOME_FINAL_VEL │ │ │ │ │ This variable has units of machine-units per second. │ │ │ │ │ It specifies the speed that LinuxCNC uses when it makes its move from HOME_OFFSET to the HOME │ │ │ │ │ position. If the HOME_FINAL_VEL is missing from the INI file, then the maximum joint speed is used │ │ │ │ │ to make this move. The value must be a positive number. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 177 / 1224 │ │ │ │ │ │ │ │ │ │ 4.5.6.4 HOME_IGNORE_LIMITS │ │ │ │ │ Can hold the values YES / NO. The default value for this parameter is NO. This flag determines whether │ │ │ │ │ LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore │ │ │ │ │ limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the │ │ │ │ │ @@ -10800,15 +10800,15 @@ │ │ │ │ │ switch or home switch then index pulse (depending on configuration), and setting the coordinate of │ │ │ │ │ that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing │ │ │ │ │ process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET, │ │ │ │ │ the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small │ │ │ │ │ move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped). │ │ │ │ │ This final move will be made at the joint’s maximum velocity unless HOME_FINAL_VEL has been set. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 178 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ The distinction between HOME_OFFSET and HOME is that HOME_OFFSET first establishes the origin │ │ │ │ │ location and scale on the machine by applying the HOME_OFFSET value to the location where home │ │ │ │ │ was found, and then HOME says where the joint should move to on that scale. │ │ │ │ │ @@ -10844,15 +10844,15 @@ │ │ │ │ │ The initial HOME_SEQUENCE number may be 0, 1 (or -1). The absolute value of sequence numbers │ │ │ │ │ must increment by one — skipping sequence numbers is not supported. If a sequence number is omitted, HOME ALL homing will stop upon completion of the last valid sequence number. │ │ │ │ │ Negative HOME_SEQUENCE values indicate that joints in the sequence should synchronize the │ │ │ │ │ final move to [JOINT_n]HOME by waiting until all joints in the sequence are ready. If any joint has a │ │ │ │ │ negative HOME_SEQUENCE value, then all joints with the same absolute value (positive or negative) │ │ │ │ │ of the HOME_SEQUENCE item value will synchronize the final move. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 179 / 1224 │ │ │ │ │ │ │ │ │ │ A negative HOME_SEQUENCE also applies to commands to home a single joint. If the HOME_SEQUENCE │ │ │ │ │ value is negative, all joints having the same absolute value of that HOME_SEQUENCE will be homed together with a synchronized final move. If the HOME_SEQUENCE value is zero or positive, │ │ │ │ │ a command to home the joint will home only the specified joint. │ │ │ │ │ Joint mode jogging of joints having a negative HOME_SEQUENCE is disallowed. In common gantry │ │ │ │ │ @@ -10895,15 +10895,15 @@ │ │ │ │ │ 4.5.6.13 LOCKING_INDEXER │ │ │ │ │ If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward. │ │ │ │ │ 4.5.6.14 Immediate Homing │ │ │ │ │ If a joint does not have home switches or does not have a logical home position like a rotary joint and │ │ │ │ │ you want that joint to home at the current position when the ”Home All” button is pressed in the Axis │ │ │ │ │ gui, then the following INI entries for that joint are needed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 180 / 1224 │ │ │ │ │ │ │ │ │ │ HOME_SEARCH_VEL = 0 │ │ │ │ │ HOME_LATCH_VEL = 0 │ │ │ │ │ HOME_USE_INDEX = NO │ │ │ │ │ HOME_OFFSET = 0 (Or the home position offset (HOME)) │ │ │ │ │ @@ -10948,15 +10948,15 @@ │ │ │ │ │ net hsequence_select => motion.homing-inhibit │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ INI HAL pins (like ini.N.home_sequence) are not available until milltask starts so execution of the │ │ │ │ │ above HAL commands should be deferred using a postgui HAL file or a delayed [APPLICATION]APP= │ │ │ │ │ script. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 181 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for │ │ │ │ │ the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale, joint.N.counts). │ │ │ │ │ │ │ │ │ │ @@ -10992,15 +10992,15 @@ │ │ │ │ │ PROTOCOL_VERSION = 2 │ │ │ │ │ Defaults to 2. Setting to 1 will emulate old iocontrol behaviour. │ │ │ │ │ EMCIO = iov2 -support-start-change │ │ │ │ │ You need to explicitly enable the start-change protocol by adding the -support-start-change option; otherwise the start-change pin remains low and start-change-ack is ignored. The reason for │ │ │ │ │ this is better backwards compatibility. │ │ │ │ │ [TASK] section │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 182 / 1224 │ │ │ │ │ │ │ │ │ │ IO_ERROR │ │ │ │ │ Printf-style template for operator error display (negative toolchanger fault codes) . No quoting │ │ │ │ │ needed. Example: IO_ERROR = Toolchanger fault %d. Default: toolchanger error %d. │ │ │ │ │ [EMC] section │ │ │ │ │ @@ -11038,15 +11038,15 @@ │ │ │ │ │ — start-change-ack: (Bit, In) acknowledgment line for start-change. │ │ │ │ │ — toolchanger-fault: (Bit, In) toolchanger signals fault. This line is contionuously monitored. A fault │ │ │ │ │ toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin. │ │ │ │ │ — toolchanger-fault-ack: (Bit, Out) handshake line for above signal. will be set by iov2 after above │ │ │ │ │ fault line TRUE is recognized and deasserted when toolchanger-fault drops. Toolchanger is free to │ │ │ │ │ interpret the ack; reading the -ack lines assures fault has been received and acted upon. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 183 / 1224 │ │ │ │ │ │ │ │ │ │ — toolchanger-reason: (S32, In) convey reason code for toolchanger-originated fault to iov2. Usage: │ │ │ │ │ signal whether to continue or abort the program, plus UI informational if negative. Read during │ │ │ │ │ toolchanger-fault TRUE. Non-zero values will cause an Axis operator operator message or error │ │ │ │ │ message, see below. │ │ │ │ │ @@ -11084,15 +11084,15 @@ │ │ │ │ │ The toolchanger-fault triggers the fault condition, which is reflected in the toolchanger-faulted pin. │ │ │ │ │ This condition can be cleared by asserting the toolchanger-clear-fault pin, provided the toolchangerfault pin is FALSE. │ │ │ │ │ The value of the toolchanger-reason pin is used as follows: │ │ │ │ │ — toolchanger-reason > 0 : The toolchange process is not completed and the program continues, │ │ │ │ │ however parameter #5060 is set to 1.0 to indicate the fault. Parameter #5601 contains the value │ │ │ │ │ of the toolchanger-reason pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 184 / 1224 │ │ │ │ │ │ │ │ │ │ — toolchanger-reason = 0 : the program is aborted │ │ │ │ │ — toolchanger-reason < 0 : the program is aborted and an operator error message is displayed by │ │ │ │ │ using the IO_ERROR template. │ │ │ │ │ The usage of the toolchanger-fault-ack pin is optional. It will become TRUE when toolchanger-fault is │ │ │ │ │ @@ -11132,15 +11132,15 @@ │ │ │ │ │ ... │ │ │ │ │ [AXIS_Z] │ │ │ │ │ ... │ │ │ │ │ │ │ │ │ │ With joints_axes incorporation, a simpler configuration can be made with just the two required joints │ │ │ │ │ by specifying trivkins with the coordinates= parameter: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 185 / 1224 │ │ │ │ │ │ │ │ │ │ [DISPLAY] │ │ │ │ │ DISPLAY = axis │ │ │ │ │ LATHE = 1 │ │ │ │ │ ... │ │ │ │ │ @@ -11178,15 +11178,15 @@ │ │ │ │ │ │ │ │ │ │ 4.8.4 Machine Information │ │ │ │ │ Gather the information about each axis of your machine. │ │ │ │ │ Drive timing is in nano seconds. If you’re unsure about the timing many popular drives are included │ │ │ │ │ in the stepper configuration wizard. Note some newer Gecko drives have different timing than the │ │ │ │ │ original one. A list is also on the user maintained LinuxCNC wiki site of more drives. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Axis │ │ │ │ │ │ │ │ │ │ Drive Type │ │ │ │ │ │ │ │ │ │ Step Time │ │ │ │ │ (ns) │ │ │ │ │ @@ -11287,15 +11287,15 @@ │ │ │ │ │ stepper drive hardware. │ │ │ │ │ — Motor Teeth and Leadscrew Teeth - is if you have some reduction (gears, chain, timing belt, etc.) │ │ │ │ │ between the motor and the leadscrew. If not, then set these both to 1. │ │ │ │ │ — Leadscrew Pitch - is how much movement occurs (in user units) in one leadscrew turn. If you’re │ │ │ │ │ setting up in inches then it is inches per turn. If you’re setting up in millimeters then it is millimeters │ │ │ │ │ per turn. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 187 / 1224 │ │ │ │ │ │ │ │ │ │ The net result you’re looking for is how many CNC-output-steps it takes to move one user unit (inches │ │ │ │ │ or mm). │ │ │ │ │ Exemple 4.1 Units inches │ │ │ │ │ Stepper │ │ │ │ │ @@ -11334,15 +11334,15 @@ │ │ │ │ │ This chapter describes some of the more common settings for manually setting up a stepper based │ │ │ │ │ system. These systems are using stepper motors with drives that accept step & direction signals. │ │ │ │ │ It is one of the simpler setups, because the motors run open-loop (no feedback comes back from the │ │ │ │ │ motors), yet the system needs to be configured properly so the motors don’t stall or lose steps. │ │ │ │ │ Most of this chapter is based on a sample config released along with LinuxCNC. The config is called │ │ │ │ │ stepper_inch, and can be found by running the Configuration Picker. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 188 / 1224 │ │ │ │ │ │ │ │ │ │ 4.9.2 Maximum step rate │ │ │ │ │ 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’ MAX_VELOCITY and │ │ │ │ │ its INPUT_SCALE. If the requested step rate is not attainable, following errors will occur, particularly │ │ │ │ │ during fast jogs and G0 moves. │ │ │ │ │ @@ -11383,15 +11383,15 @@ │ │ │ │ │ # read inputs first │ │ │ │ │ addf parport.0.read base-thread 1 │ │ │ │ │ # write outputs last │ │ │ │ │ addf parport.0.write base-thread -1 │ │ │ │ │ # │ │ │ │ │ # finally connect physical pins to the signals │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ net Xstep => parport.0.pin-03-out │ │ │ │ │ net Xdir => parport.0.pin-02-out │ │ │ │ │ net Ystep => parport.0.pin-05-out │ │ │ │ │ net Ydir => parport.0.pin-04-out │ │ │ │ │ net Zstep => parport.0.pin-07-out │ │ │ │ │ net Zdir => parport.0.pin-06-out │ │ │ │ │ @@ -11436,15 +11436,15 @@ │ │ │ │ │ ### limit switches. Beware if you hit one, LinuxCNC will stop but can’t tell │ │ │ │ │ ### you which switch/axis has faulted. Use caution when recovering from this │ │ │ │ │ ### extreme position to avoid a hard stop. │ │ │ │ │ ### │ │ │ │ │ │ │ │ │ │ 189 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 190 / 1224 │ │ │ │ │ │ │ │ │ │ # net Xlimits parport.0.pin-13-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in │ │ │ │ │ │ │ │ │ │ The lines starting with # are comments, and their only purpose is to guide the reader through the file. │ │ │ │ │ 4.9.3.2 Overview │ │ │ │ │ @@ -11480,15 +11480,15 @@ │ │ │ │ │ addf pwmgen.make-pulses base-thread │ │ │ │ │ net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value │ │ │ │ │ net spindle-on spindle.0.on => pwmgen.0.enable │ │ │ │ │ net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out │ │ │ │ │ setp pwmgen.0.scale 1800 # Change to your spindle’s top speed in RPM │ │ │ │ │ 5. the fastest thread in the LinuxCNC setup, usually ther code gets executed every few tens of microseconds │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 191 / 1224 │ │ │ │ │ │ │ │ │ │ This assumes that the spindle controller’s response to PWM is simple: 0% PWM gives 0 RPM, 10% │ │ │ │ │ PWM gives 180 RPM, etc. If there is a minimum PWM required to get the spindle to turn, follow the │ │ │ │ │ example in the nist-lathe sample configuration to use a scale component. │ │ │ │ │ 4.9.3.6 Adding an enable signal │ │ │ │ │ @@ -11518,15 +11518,15 @@ │ │ │ │ │ the stepper moves one step each time, and in the same direction, there is your clue. │ │ │ │ │ 4.10.1.2 No Steppers Move │ │ │ │ │ Many drives have an enable pin or need a charge pump to enable the output. │ │ │ │ │ 4.10.1.3 Distance Not Correct │ │ │ │ │ If you command the axis to move a specific distance and it does not move that distance, then your │ │ │ │ │ scale setting is wrong. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 192 / 1224 │ │ │ │ │ │ │ │ │ │ 4.10.2 Error Messages │ │ │ │ │ 4.10.2.1 Following Error │ │ │ │ │ The concept of a following error is strange when talking about stepper motors. Since they are an open │ │ │ │ │ loop system, there is no position feedback to let you know if you actually are out of range. LinuxCNC │ │ │ │ │ @@ -11564,15 +11564,15 @@ │ │ │ │ │ hundreds of thousands of error messages per second if more than one was displayed. │ │ │ │ │ │ │ │ │ │ 4.10.3 Testing │ │ │ │ │ 4.10.3.1 Step Timing │ │ │ │ │ If you are seeing an axis ending up in the wrong location over multiple moves, it is likely that you │ │ │ │ │ do not have the correct direction hold times or step timing for your stepper drivers. Each direction │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 193 / 1224 │ │ │ │ │ │ │ │ │ │ change may be losing a step or more. If the motors are stalling, it is also possible you have either the │ │ │ │ │ MAX_ACCELERATION or MAX_VELOCITY set too high for that axis. │ │ │ │ │ The following program will test the Z axis configuration for proper setup. Copy the program to your │ │ │ │ │ \~/emc2/nc_files directory and name it TestZ.ngc or similar. Zero your machine with Z = 0.000 at the │ │ │ │ │ @@ -11600,15 +11600,15 @@ │ │ │ │ │ G0 Z1.000 │ │ │ │ │ G0 Z0.500 │ │ │ │ │ #1000 = [#1000 - 1] │ │ │ │ │ o101 endwhile │ │ │ │ │ ( msg, Done...Z should be exactly .5” above table ) │ │ │ │ │ M2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 194 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 5 │ │ │ │ │ │ │ │ │ │ HAL (Hardware Abstraction Layer) │ │ │ │ │ 5.1 HAL Introduction │ │ │ │ │ @@ -11623,15 +11623,15 @@ │ │ │ │ │ HAL is based on the same principles that are used to design hardware circuits and systems, so it is │ │ │ │ │ useful to examine those principles first. │ │ │ │ │ Any system, including a CNC machine, consists of interconnected components. For the CNC machine, │ │ │ │ │ those components might be the main controller, servo amps or stepper drives, motors, encoders, limit │ │ │ │ │ switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc. │ │ │ │ │ The machine builder must select, mount and wire these pieces together to make a complete system. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 195 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.1 – HAL Concept - Connecting like electrical circuits. │ │ │ │ │ Figure one would be written in HAL code like this: │ │ │ │ │ net signal-blue │ │ │ │ │ net signal-red │ │ │ │ │ @@ -11651,15 +11651,15 @@ │ │ │ │ │ about which specific components to use is based on what that component does and the specifications │ │ │ │ │ supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the │ │ │ │ │ choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed │ │ │ │ │ by the amp and the velocity or position signals that must be sent to the amp from a control. │ │ │ │ │ In the HAL world, the integrator must decide what HAL components are needed. Usually every interface card will require a driver. Additional components may be needed for software generation of step │ │ │ │ │ pulses, PLC functionality, and a wide variety of other tasks. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 196 / 1224 │ │ │ │ │ │ │ │ │ │ 5.1.1.2 Interconnection Design │ │ │ │ │ The designer of a hardware system not only selects the parts, he also decides how those parts will be │ │ │ │ │ interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a │ │ │ │ │ servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit │ │ │ │ │ @@ -11683,15 +11683,15 @@ │ │ │ │ │ HAL provides the software equivalents of a voltmeter, oscilloscope, signal generator, and other tools │ │ │ │ │ needed for testing and tuning a system. The same commands used to build the system can be used to │ │ │ │ │ make changes as needed. │ │ │ │ │ 5.1.1.5 Summary │ │ │ │ │ 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 │ │ │ │ │ section in the HAL UI Examples documentation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 197 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.2 – Remote Start Example (Schema) │ │ │ │ │ The traditional hardware design as described above ends at the edge of the main control. Outside the │ │ │ │ │ control are a bunch of relatively simple boxes, connected together to do whatever is needed. Inside, │ │ │ │ │ the control is a big mystery — one huge black box that we hope works. │ │ │ │ │ @@ -11718,15 +11718,15 @@ │ │ │ │ │ Component │ │ │ │ │ When we talked about hardware design, we referred to the individual pieces as parts, building │ │ │ │ │ blocks, black boxes, etc. The HAL equivalent is a component or HAL component. (This document │ │ │ │ │ uses HAL component when there is likely to be confusion with other kinds of components, but │ │ │ │ │ normally just uses component.) A HAL component is a piece of software with well-defined inputs, │ │ │ │ │ outputs, and behavior, that can be installed and interconnected as needed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 198 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Many HAL Components model the behaviour of a tangible part of a machine, and a pin may indeed be │ │ │ │ │ meant to be connected to a physical pin on the device to communicate with it, hence the names. But │ │ │ │ │ most often this is not the case. Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements │ │ │ │ │ @@ -11770,15 +11770,15 @@ │ │ │ │ │ — float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits │ │ │ │ │ of dynamic range. │ │ │ │ │ — u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295 │ │ │ │ │ — s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647 │ │ │ │ │ Function │ │ │ │ │ Real hardware components tend to act immediately on their inputs. For example, if the input │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 199 / 1224 │ │ │ │ │ │ │ │ │ │ voltage to a servo amp changes, the output also changes automatically. However software components cannot act automatically. Each component has specific code that must be executed to │ │ │ │ │ do whatever that component is supposed to do. In some cases, that code simply runs as part of │ │ │ │ │ the component. However in most cases, especially in realtime components, the code must run in │ │ │ │ │ a specific sequence and at specific intervals. For example, inputs should be read before calculations are performed on the input data, and outputs should not be written until the calculations │ │ │ │ │ @@ -11822,15 +11822,15 @@ │ │ │ │ │ function at specific time intervals. Just like you can choose to have a PLC evaluate all its rungs every │ │ │ │ │ 10 ms, or every second, you can define HAL threads with different periods. │ │ │ │ │ What distinguishes one thread from another is not what the thread does - that is determined by which │ │ │ │ │ functions are connected to it. The real distinction is simply how often a thread runs. │ │ │ │ │ In LinuxCNC you might have a 50 µs thread and a 1 ms thread. These would be created based on │ │ │ │ │ BASE_PERIOD and SERVO_PERIOD, the actual times depend on the values in your INI file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 200 / 1224 │ │ │ │ │ │ │ │ │ │ The next step is to decide what each thread needs to do. Some of those decisions are the same in │ │ │ │ │ (nearly) any LinuxCNC system. For instance, motion-command-handler is always added to servothread. │ │ │ │ │ Other connections would be made by the integrator. These might include hooking the STG driver’s │ │ │ │ │ encoder read and DAC write functions to the servo thread, or hooking stepgen’s function to the basethread, along with the parport function(s) to write the steps to the port. │ │ │ │ │ @@ -11841,15 +11841,15 @@ │ │ │ │ │ 5.2.1 HAL Commands │ │ │ │ │ More detailed information can be found in the man page for halcmd: run man halcmd in a terminal │ │ │ │ │ window. │ │ │ │ │ To see the HAL configuration and check the status of pins and parameters use the HAL Configuration │ │ │ │ │ window on the Machine menu in AXIS. To watch a pin status open the Watch tab and click on each │ │ │ │ │ pin you wish to watch and it will be added to the watch window. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 201 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.3 – HAL Configuration Window │ │ │ │ │ │ │ │ │ │ 5.2.1.1 loadrt │ │ │ │ │ The command loadrt loads a real time HAL component. Real time component functions need to be │ │ │ │ │ @@ -11863,15 +11863,15 @@ │ │ │ │ │ The addf command adds a function to a real-time thread. If the StepConf wizard was used to create │ │ │ │ │ the configuration, two threads have been created ( ̀ ̀base-thread ̀ ̀ and ̀ ̀servo-thread ̀ ̀). │ │ │ │ │ addf adds function functname to thread threadname. Default is to add the function in the order they │ │ │ │ │ are in the file. If position is specified, adds the function to that spot in the thread. Negative position │ │ │ │ │ means position with respect to the end of the thread. For example 1 is start of thread, -1 is the end of │ │ │ │ │ the thread, -3 is third from the end. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 202 / 1224 │ │ │ │ │ │ │ │ │ │ For some functions it is important to load them in a certain order, like the parport read and write │ │ │ │ │ functions. The function name is usually the component name plus a number. In the following example │ │ │ │ │ the component or2 is loaded and show function shows the name of the or2 function │ │ │ │ │ $ halrun │ │ │ │ │ @@ -11934,15 +11934,15 @@ │ │ │ │ │ the same name as the first argument of the command. │ │ │ │ │ │ │ │ │ │ -Wn │ │ │ │ │ │ │ │ │ │ to wait for the component, which will have the given . This only applies │ │ │ │ │ if the component has a name option. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ -w │ │ │ │ │ │ │ │ │ │ to wait for the program to exit │ │ │ │ │ │ │ │ │ │ -i │ │ │ │ │ │ │ │ │ │ @@ -11977,15 +11977,15 @@ │ │ │ │ │ A pin can be connected to a signal if it obeys the following rules: │ │ │ │ │ — An IN pin can always be connected to a signal. │ │ │ │ │ — An IO pin can be connected unless there’s an OUT pin on the signal. │ │ │ │ │ — An OUT pin can be connected only if there are no other OUT or IO pins on the signal. │ │ │ │ │ The same signal-name can be used in multiple net commands to connect additional pins, as long as │ │ │ │ │ the rules above are obeyed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 204 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.4 – Signal Direction │ │ │ │ │ This example shows the signal xStep with the source being stepgen.0.out and with two readers, │ │ │ │ │ parport.0.pin-02-out and parport.0.pin-08-out. Basically the value of stepgen.0.out is sent to the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out. │ │ │ │ │ # │ │ │ │ │ @@ -12007,15 +12007,15 @@ │ │ │ │ │ 5.2.1.5 setp │ │ │ │ │ The command setp sets the value of a pin or parameter. The valid values will depend on the type of │ │ │ │ │ the pin or parameter. It is an error if the data types do not match. │ │ │ │ │ Some components have parameters that need to be set before use. Parameters can be set before use │ │ │ │ │ or while running as needed. You cannot use setp on a pin that is connected to a signal. │ │ │ │ │ setp Syntax and Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 205 / 1224 │ │ │ │ │ │ │ │ │ │ setp │ │ │ │ │ setp parport.0.pin-08-out TRUE │ │ │ │ │ │ │ │ │ │ 5.2.1.6 sets │ │ │ │ │ @@ -12056,15 +12056,15 @@ │ │ │ │ │ Type must be bit, s32, u32 or float. Error if all ready exists. │ │ │ │ │ newsig Syntax and Example │ │ │ │ │ newsig │ │ │ │ │ newsig Xstep bit │ │ │ │ │ │ │ │ │ │ More information can be found in the HAL manual or the man pages for halrun. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 206 / 1224 │ │ │ │ │ │ │ │ │ │ 5.2.2 HAL Data │ │ │ │ │ 5.2.2.1 Bit │ │ │ │ │ A bit value is an on or off. │ │ │ │ │ — bit values = true or 1 and false or 0 (True, TRUE, true are all valid) │ │ │ │ │ @@ -12102,15 +12102,15 @@ │ │ │ │ │ .tmax │ │ │ │ │ │ │ │ │ │ Tmax is the maximum number of CPU cycles it took to execute the function. │ │ │ │ │ │ │ │ │ │ tmax is a read/write parameter so the user can set it to 0 to get rid of the first time initialization on │ │ │ │ │ the function’s execution time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 207 / 1224 │ │ │ │ │ │ │ │ │ │ 5.2.5 Basic Logic Components │ │ │ │ │ HAL contains several real time logic components. Logic components follow a Truth Table that states │ │ │ │ │ what the output is for any given input. Typically these are bit manipulators and follow electrical logic │ │ │ │ │ gate truth tables. │ │ │ │ │ @@ -12157,15 +12157,15 @@ │ │ │ │ │ │ │ │ │ │ out │ │ │ │ │ False │ │ │ │ │ False │ │ │ │ │ False │ │ │ │ │ True │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 208 / 1224 │ │ │ │ │ │ │ │ │ │ Table 5.2: not Truth Table │ │ │ │ │ in │ │ │ │ │ True │ │ │ │ │ False │ │ │ │ │ @@ -12215,15 +12215,15 @@ │ │ │ │ │ │ │ │ │ │ out │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ False │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 209 / 1224 │ │ │ │ │ │ │ │ │ │ Table 5.4: xor2 Truth Table │ │ │ │ │ in0 │ │ │ │ │ True │ │ │ │ │ True │ │ │ │ │ @@ -12296,15 +12296,15 @@ │ │ │ │ │ Name │ │ │ │ │ wsum.0.bit.0.in │ │ │ │ │ wsum.0.bit.0.weight │ │ │ │ │ wsum.0.bit.1.in │ │ │ │ │ wsum.0.bit.1.weight │ │ │ │ │ wsum.0.bit.2.in │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 │ │ │ │ │ 10 │ │ │ │ │ 10 │ │ │ │ │ 10 │ │ │ │ │ 10 │ │ │ │ │ 10 │ │ │ │ │ @@ -12375,15 +12375,15 @@ │ │ │ │ │ appearance in the INI file, in multiple HALFILE assignments. │ │ │ │ │ The TWOPASS option can be specified with options to add output for debugging (verbose) and to │ │ │ │ │ prevent deletion of temporary files (nodelete). The options are separated with commas. │ │ │ │ │ Example │ │ │ │ │ [HAL] │ │ │ │ │ TWOPASS = on,verbose,nodelete │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 211 / 1224 │ │ │ │ │ │ │ │ │ │ With TWOPASS processing, all [HAL]HALFILES are first read and multiple appearances of loadrt │ │ │ │ │ directives for each module are accumulated. User components (loadusr) are loaded in order but no │ │ │ │ │ other LinuxCNC commands are executed in the initial pass. │ │ │ │ │ Note │ │ │ │ │ @@ -12421,15 +12421,15 @@ │ │ │ │ │ HALFILE = sim_spindle_encoder.hal │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ HALFILE = simulated_home.hal │ │ │ │ │ HALFILE = load_for_postgui.hal <- loadrt lines for components in postgui.hal │ │ │ │ │ POSTGUI_HALFILE = postgui.hal │ │ │ │ │ HALUI = halui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 212 / 1224 │ │ │ │ │ │ │ │ │ │ 5.3.2 Post GUI │ │ │ │ │ Some GUIs support HAL files that are processed after the GUI is started in order to connect LinuxCNC │ │ │ │ │ pins that are created by the GUI. When using a postgui HAL file with TWOPASS processing, include │ │ │ │ │ all loadrt items for components added by postgui HAL files in a separate HAL file that is processed │ │ │ │ │ @@ -12469,15 +12469,15 @@ │ │ │ │ │ # debugging component with complex options: │ │ │ │ │ loadrt mycomponent parm1=”abc def” parm2=ghi │ │ │ │ │ show pin mycomponent │ │ │ │ │ # ordering special components │ │ │ │ │ loadrt component_1 │ │ │ │ │ loadrt component_2 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 213 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Case and whitespace within the magic comment are ignored. The loading of components that use │ │ │ │ │ names= or count= parameters (typically built by halcompile) should not be used in excluded files │ │ │ │ │ as that would eliminate the benefits of TWOPASS processing. The LinuxCNC commands that create │ │ │ │ │ @@ -12512,15 +12512,15 @@ │ │ │ │ │ me@computer:~linuxcnc$ halrun │ │ │ │ │ (will be shown like the following line) │ │ │ │ │ halrun │ │ │ │ │ (the halcmd: prompt will be shown when running HAL) │ │ │ │ │ halcmd: loadrt counter │ │ │ │ │ halcmd: show pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 214 / 1224 │ │ │ │ │ │ │ │ │ │ 5.4.2.2 Tab-completion │ │ │ │ │ Your version of halcmd may include tab-completion. Instead of completing file names as a shell does, │ │ │ │ │ it completes commands with HAL identifiers. You will have to type enough letters for a unique match. │ │ │ │ │ Try pressing tab after starting a HAL command: │ │ │ │ │ @@ -12561,15 +12561,15 @@ │ │ │ │ │ It is a realtime component, implemented as a Linux kernel module. To load the ”siggen” component, │ │ │ │ │ use the HAL command loadrt. │ │ │ │ │ Loading siggen │ │ │ │ │ halcmd: loadrt siggen │ │ │ │ │ 1. Run In Place, when the source files have been downloaded to a user directory and are compiled and executed directly │ │ │ │ │ from there. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 215 / 1224 │ │ │ │ │ │ │ │ │ │ 5.4.3.2 Examining the HAL │ │ │ │ │ Now that the module is loaded, it is time to introduce halcmd, the command line tool used to configure │ │ │ │ │ the HAL. This tutorial will introduce only a selection of halcmd features. For a more complete description try man halcmd, or see the reference in HAL Commands section of this document. The first │ │ │ │ │ halcmd feature is the show command. This command displays information about the current state of │ │ │ │ │ @@ -12664,15 +12664,15 @@ │ │ │ │ │ siggen.0.update.time │ │ │ │ │ siggen.0.update.tmax │ │ │ │ │ │ │ │ │ │ The show param command shows all the parameters in the HAL. Right now, each parameter has │ │ │ │ │ the default value it was given when the component was loaded. Note the column labeled Dir. The │ │ │ │ │ parameters labeled -W are writable ones that are never changed by the component itself, instead │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 216 / 1224 │ │ │ │ │ │ │ │ │ │ they are meant to be changed by the user to control the component. We will see how to do this │ │ │ │ │ later. Parameters labeled R- are read only parameters. They can be changed only by the component. │ │ │ │ │ Finally, parameter labeled RW are read-write parameters. That means that they are changed by the │ │ │ │ │ component, but can also be changed by the user. Note: The parameters siggen.0.update.time and │ │ │ │ │ @@ -12745,15 +12745,15 @@ │ │ │ │ │ │ │ │ │ │ Time, Max-Time ) │ │ │ │ │ 0, │ │ │ │ │ 0 ) │ │ │ │ │ │ │ │ │ │ 2. CodeAddr and Arg fields were used during development and should probably disappear. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 217 / 1224 │ │ │ │ │ │ │ │ │ │ There is one more step needed before the siggen component starts generating signals. When the HAL │ │ │ │ │ is first started, the thread(s) are not actually running. This is to allow you to completely configure the │ │ │ │ │ system before the realtime code starts. Once you are happy with the configuration, you can start the │ │ │ │ │ realtime code like this: │ │ │ │ │ @@ -12860,15 +12860,15 @@ │ │ │ │ │ 1754 │ │ │ │ │ 16997 │ │ │ │ │ │ │ │ │ │ Name │ │ │ │ │ siggen.0.update.time │ │ │ │ │ siggen.0.update.tmax │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 218 / 1224 │ │ │ │ │ │ │ │ │ │ halcmd: show pin │ │ │ │ │ Component Pins: │ │ │ │ │ Owner │ │ │ │ │ Type Dir │ │ │ │ │ @@ -12935,15 +12935,15 @@ │ │ │ │ │ 5.4.3.6 Exiting halrun │ │ │ │ │ When you’re finished with your HAL session type exit at the ”halcmd:” prompt. This will return you to │ │ │ │ │ the system prompt and close down the HAL session. Do not simply close the terminal window without │ │ │ │ │ shutting down the HAL session. │ │ │ │ │ Exit HAL │ │ │ │ │ halcmd: exit │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 219 / 1224 │ │ │ │ │ │ │ │ │ │ 5.4.3.7 Restoring the HAL configuration │ │ │ │ │ To restore the HAL configuration stored in the file ”saved.hal”, we need to execute all of those HAL │ │ │ │ │ commands. To do that, we use ”-f __” which reads commands from a file, and ”-I” │ │ │ │ │ (upper case i) which shows the halcmd prompt after executing the commands: │ │ │ │ │ @@ -12986,15 +12986,15 @@ │ │ │ │ │ will start. If the indicated item does not exist, it will start normally. │ │ │ │ │ Finally, if an item is specified for display, it is possible add -s in front of pin|sig|param to tell halmeter │ │ │ │ │ to use an even smaller window. The item name will be displayed in the title bar instead of below the │ │ │ │ │ value and there will be no button. This is useful for displaying a lot of halmeters in a small space. │ │ │ │ │ We will use the siggen component again to check out halmeter. If you just finished the previous │ │ │ │ │ example, then you can load siggen using the saved file. If not, we can load it just like we did before: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 220 / 1224 │ │ │ │ │ │ │ │ │ │ halrun │ │ │ │ │ halcmd: loadrt siggen │ │ │ │ │ halcmd: loadrt threads name1=test-thread period1=1000000 │ │ │ │ │ halcmd: addf siggen.0.update test-thread │ │ │ │ │ @@ -13007,15 +13007,15 @@ │ │ │ │ │ │ │ │ │ │ The first window you will see is the ”Select Item to Probe” window. │ │ │ │ │ │ │ │ │ │ Figure 5.5 – Halmeter Select Window │ │ │ │ │ This dialog has three tabs. The first tab displays all of the HAL pins in the system. The second one │ │ │ │ │ displays all the signals, and the third displays all the parameters. We would like to look at the pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 221 / 1224 │ │ │ │ │ │ │ │ │ │ siggen.0.cosine first, so click on it then click the ”Close” button. The probe selection dialog will │ │ │ │ │ close, and the meter looks something like the following figure. │ │ │ │ │ │ │ │ │ │ Figure 5.6 – Halmeter Window │ │ │ │ │ @@ -13047,15 +13047,15 @@ │ │ │ │ │ halcmd: loadrt threads name1=fast fp1=0 period1=50000 name2=slow period2=1000000 │ │ │ │ │ │ │ │ │ │ The first command loads two step generators, both configured to generate stepping type 0. The second │ │ │ │ │ command loads our old friend siggen, and the third one creates two threads, a fast one with a period │ │ │ │ │ of 50 microseconds (µs) and a slow one with a period of 1 millisecond (ms). The fast thread doesn’t │ │ │ │ │ support floating point functions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 222 / 1224 │ │ │ │ │ │ │ │ │ │ As before, we can use halcmd show to take a look at the HAL. This time we have a lot more pins and │ │ │ │ │ parameters than before: │ │ │ │ │ halcmd: show pin │ │ │ │ │ Component Pins: │ │ │ │ │ @@ -13239,15 +13239,15 @@ │ │ │ │ │ stepgen.capture-position.time │ │ │ │ │ stepgen.capture-position.tmax │ │ │ │ │ stepgen.make-pulses.time │ │ │ │ │ stepgen.make-pulses.tmax │ │ │ │ │ stepgen.update-freq.time │ │ │ │ │ stepgen.update-freq.tmax │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 223 / 1224 │ │ │ │ │ │ │ │ │ │ 5.4.5.2 Connecting pins with signals │ │ │ │ │ What we have is two step pulse generators, and a signal generator. Now it is time to create some HAL │ │ │ │ │ signals to connect the two components. We are going to pretend that the two step pulse generators │ │ │ │ │ are driving the X and Y axis of a machine. We want to move the table in circles. To do this, we will send │ │ │ │ │ @@ -13305,15 +13305,15 @@ │ │ │ │ │ signal comes from pin siggen.0.cosine, and goes to pin stepgen.0.velocity-cmd. │ │ │ │ │ 5.4.5.3 Setting up realtime execution - threads and functions │ │ │ │ │ Thinking about data flowing through ”wires” makes pins and signals fairly easy to understand. Threads │ │ │ │ │ and functions are a little more difficult. Functions contain the computer instructions that actually get │ │ │ │ │ things done. Thread are the method used to make those instructions run when they are needed. First │ │ │ │ │ let’s look at the functions available to us. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 224 / 1224 │ │ │ │ │ │ │ │ │ │ halcmd: show funct │ │ │ │ │ Exported Functions: │ │ │ │ │ Owner │ │ │ │ │ CodeAddr Arg │ │ │ │ │ @@ -13399,15 +13399,15 @@ │ │ │ │ │ slow ( │ │ │ │ │ 1 siggen.0.update │ │ │ │ │ │ │ │ │ │ Time, Max-Time ) │ │ │ │ │ 0, │ │ │ │ │ 0 ) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49849 │ │ │ │ │ │ │ │ │ │ NO │ │ │ │ │ │ │ │ │ │ 2 stepgen.update-freq │ │ │ │ │ fast ( │ │ │ │ │ @@ -13457,38 +13457,38 @@ │ │ │ │ │ │ │ │ │ │ 5.4.6 Halscope │ │ │ │ │ The previous example generates some very interesting signals. But much of what happens is far too │ │ │ │ │ fast to see with halmeter. To take a closer look at what is going on inside the HAL, we want an oscilloscope. Fortunately HAL has one, called halscope. │ │ │ │ │ Halscope has two parts - a realtime part that is loaded as a kernel module, and a user part that supplies │ │ │ │ │ the GUI and display. However, you don’t need to worry about this, because the userspace portion will │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 226 / 1224 │ │ │ │ │ │ │ │ │ │ automatically request that the realtime part be loaded. With LinuxCNC running in a terminal you can │ │ │ │ │ start halscope with the following command. │ │ │ │ │ Starting Halscope │ │ │ │ │ halcmd loadusr halscope │ │ │ │ │ │ │ │ │ │ If LinuxCNC is not running or the autosave.halscope file does not match the pins available in the │ │ │ │ │ current running LinuxCNC the scope GUI window will open, immediately followed by a Realtime │ │ │ │ │ function not linked dialog that looks like the following figure. To change the sample rate left click on │ │ │ │ │ the samples box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 227 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.7 – Realtime function not linked dialog │ │ │ │ │ This dialog is where you set the sampling rate for the oscilloscope. For now we want to sample once │ │ │ │ │ per millisecond, so click on the 989 µs thread slow and leave the multiplier at 1. We will also leave the │ │ │ │ │ record length at 4000 samples, so that we can use up to four channels at one time. When you select │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 228 / 1224 │ │ │ │ │ │ │ │ │ │ a thread and then click OK, the dialog disappears, and the scope window looks something like the │ │ │ │ │ following figure. │ │ │ │ │ │ │ │ │ │ Figure 5.8 – Initial scope window │ │ │ │ │ @@ -13500,33 +13500,33 @@ │ │ │ │ │ length - more channels means shorter records, since the memory available for the record is fixed at │ │ │ │ │ approximately 16,000 samples. │ │ │ │ │ The channel buttons run across the bottom of the halscope screen. Click button 1, and you will see the │ │ │ │ │ Select Channel Source dialog as shown in the following figure. This dialog is very similar to the one │ │ │ │ │ used by Halmeter. We would like to look at the signals we defined earlier, so we click on the Signals │ │ │ │ │ tab, and the dialog displays all of the signals in the HAL (only two for this example). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 229 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.9 – Select Channel Source │ │ │ │ │ To choose a signal, just click on it. In this case, we want channel 1 to display the signal X-vel. Click on │ │ │ │ │ the Signals tab then click on X-vel and the dialog closes and the channel is now selected. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 230 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.10 – Select Signal │ │ │ │ │ The channel 1 button is pressed in, and channel number 1 and the name X-vel appear below the row │ │ │ │ │ of buttons. That display always indicates the selected channel - you can have many channels on the │ │ │ │ │ screen, but the selected one is highlighted, and the various controls like vertical position and scale │ │ │ │ │ always work on the selected one. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 231 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.11 – Halscope │ │ │ │ │ To add a signal to channel 2, click the 2 button. When the dialog pops up, click the Signals tab, then │ │ │ │ │ click on Y-vel. We also want to look at the square and triangle wave outputs. There are no signals │ │ │ │ │ connected to those pins, so we use the Pins tab instead. For channel 3, select siggen.0.triangle and │ │ │ │ │ @@ -13537,15 +13537,15 @@ │ │ │ │ │ a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope about │ │ │ │ │ 2 seconds to fill half of its buffer. During that time a progress bar just above the main screen will show │ │ │ │ │ the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven’t configured │ │ │ │ │ one yet, it will wait forever. To manually trigger it, click the Force button in the Trigger section at the │ │ │ │ │ top right. You should see the remainder of the buffer fill, then the screen will display the captured │ │ │ │ │ waveforms. The result will look something like the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 232 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.12 – Captured Waveforms │ │ │ │ │ The Selected Channel box at the bottom tells you that the purple trace is the currently selected one, │ │ │ │ │ channel 4, which is displaying the value of the pin siggen.0.square. Try clicking channel buttons 1 │ │ │ │ │ through 3 to highlight the other three traces. │ │ │ │ │ @@ -13553,29 +13553,29 @@ │ │ │ │ │ The traces are rather hard to distinguish since all four are on top of each other. To fix this, we use │ │ │ │ │ the Vertical controls in the box to the right of the screen. These controls act on the currently selected │ │ │ │ │ channel. When adjusting the gain, notice that it covers a huge range - unlike a real scope, this one │ │ │ │ │ can display signals ranging from very tiny (pico-units) to very large (Tera-units). The position control │ │ │ │ │ moves the displayed trace up and down over the height of the screen only. For larger adjustments the │ │ │ │ │ offset button should be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 233 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.13 – Vertical Adjustment │ │ │ │ │ The large Selected Channel button at the bottom indicates that channel 1 is currently selected channel │ │ │ │ │ and that it matches the X-vel signal. Try clicking on the other channels to put their traces in evidence │ │ │ │ │ and to be able to move them with the Pos cursor. │ │ │ │ │ 5.4.6.4 Triggering │ │ │ │ │ Using the Force button is a rather unsatisfying way to trigger the scope. To set up real triggering, click │ │ │ │ │ on the Source button at the bottom right. It will pop up the Trigger Source dialog, which is simply a │ │ │ │ │ list of all the probes that are currently connected. Select a probe to use for triggering by clicking on │ │ │ │ │ it. For this example we will use channel 3, the triangle wave as shown in the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 234 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.14 – Trigger Source Dialog │ │ │ │ │ After setting the trigger source, you can adjust the trigger level and trigger position using the sliders │ │ │ │ │ in the Trigger box along the right edge. The level can be adjusted from the top to the bottom of the │ │ │ │ │ screen, and is displayed below the sliders. The position is the location of the trigger point within │ │ │ │ │ @@ -13585,15 +13585,15 @@ │ │ │ │ │ trigger point is visible as a vertical line in the progress box above the screen. The trigger polarity can │ │ │ │ │ be changed by clicking the button just below the trigger level display. It will then become descendant. │ │ │ │ │ Note that changing the trigger position stops the scope once the position has been adjusted, you │ │ │ │ │ relaunch the scope by clicking on the Normal button of Run mode the group. │ │ │ │ │ Now that we have adjusted the vertical controls and triggering, the scope display looks something │ │ │ │ │ like the following figure. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 235 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.15 – Waveforms with Triggering │ │ │ │ │ │ │ │ │ │ 5.4.6.5 Horizontal Adjustments │ │ │ │ │ To look closely at part of a waveform, you can use the zoom slider at the top of the screen to expand │ │ │ │ │ @@ -13602,15 +13602,15 @@ │ │ │ │ │ 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 µs long, sampling at 1 kHz isn’t fast enough. To │ │ │ │ │ change the sample rate, click on the button that displays the number of samples and sample rate to │ │ │ │ │ bring up the Select Sample Rate dialog figure. For this example, we will click on the 50 µs thread, │ │ │ │ │ fast, which gives us a sample rate of about 20 kHz. Now instead of displaying about 4 seconds worth │ │ │ │ │ of data, one record is 4000 samples at 20 kHz, or about 0.20 seconds. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 236 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.16 – Sample Rate Dialog │ │ │ │ │ │ │ │ │ │ 5.4.6.6 More Channels │ │ │ │ │ Now let’s look at the step pulses. Halscope has 16 channels, but for this example we are using only 4 at │ │ │ │ │ @@ -13619,15 +13619,15 @@ │ │ │ │ │ do the same for channel 4. Even though the channels are turned off, they still remember what they are │ │ │ │ │ connected to, and in fact we will continue to use channel 3 as the trigger source. To add new channels, │ │ │ │ │ select channel 5, and choose pin stepgen.0.dir, then channel 6, and select stepgen.0.step. Then │ │ │ │ │ click run mode Normal to start the scope, and adjust the horizontal zoom to 5 ms per division. You │ │ │ │ │ should see the step pulses slow down as the velocity command (channel 1) approaches zero, then the │ │ │ │ │ direction pin changes state and the step pulses speed up again. You might want toincrease the gain on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 237 / 1224 │ │ │ │ │ │ │ │ │ │ channel 1 to about 20 milli per division to better see the change in the velocity command. The result │ │ │ │ │ should look like the following figure. │ │ │ │ │ │ │ │ │ │ Figure 5.17 – Step Pulses │ │ │ │ │ @@ -13640,15 +13640,15 @@ │ │ │ │ │ samples, so that when sampling 4 channels at a time there will be 20000 samples per channel. (If │ │ │ │ │ scope_rt was already loaded, the numeric argument to halscope will have no effect). │ │ │ │ │ │ │ │ │ │ 5.5 HAL Examples │ │ │ │ │ All of these examples assume you are starting with a stepconf based configuration and have two │ │ │ │ │ threads base-thread and servo-thread. The stepconf wizard will create an empty custom.hal and a │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 238 / 1224 │ │ │ │ │ │ │ │ │ │ custom_postgui.hal file. The custom.hal file will be loaded after the configuration HAL file and the │ │ │ │ │ custom_postgui.hal file is loaded after the GUI has been loaded. │ │ │ │ │ │ │ │ │ │ 5.5.1 Connecting Two Outputs │ │ │ │ │ @@ -13708,15 +13708,15 @@ │ │ │ │ │ input. The output from or2 goes to the input of the led. │ │ │ │ │ │ │ │ │ │ 5.5.2 Manual Toolchange │ │ │ │ │ In this example it is assumed that you’re rolling your own configuration and wish to add the HAL Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable tools │ │ │ │ │ and you store the offsets in the tool table. If you need to touch off for each tool change then it is best │ │ │ │ │ just to split up your G-code. To use the HAL Manual Toolchange window you basically have to load the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 239 / 1224 │ │ │ │ │ │ │ │ │ │ hal_manualtoolchange component then send the iocontrol tool change to the hal_manualtoolchange │ │ │ │ │ change and send the hal_manualtoolchange changed back to the iocontrol tool changed. A pin is provided for an external input to indicate the tool change is complete. │ │ │ │ │ This is an example of manual toolchange with the HAL Manual Toolchange component: │ │ │ │ │ loadusr -W hal_manualtoolchange │ │ │ │ │ @@ -13761,15 +13761,15 @@ │ │ │ │ │ The xpos-cmd sends the commanded position to the ddt.0.in. The ddt computes the derivative of the │ │ │ │ │ change of the input. │ │ │ │ │ The ddt2.0.out is multiplied by 60 to give IPM. │ │ │ │ │ The mult2.0.out is sent to the abs to get the absolute value. │ │ │ │ │ The following figure shows the result when the X axis is moving at 15 IPM in the minus direction. │ │ │ │ │ Notice that we can get the absolute value from either the abs.0.out pin or the X-IPM signal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 240 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.18 – HAL: Velocity Example │ │ │ │ │ │ │ │ │ │ 5.5.4 Soft Start Details │ │ │ │ │ This example shows how the HAL components lowpass, limit2 or limit3 can be used to limit how fast │ │ │ │ │ @@ -13782,15 +13782,15 @@ │ │ │ │ │ — limit2 limits the range and first derivative of a signal. │ │ │ │ │ — limit3 limits the range, first and second derivatives of a signal. │ │ │ │ │ — lowpass uses an exponentially-weighted moving average to track an input signal. │ │ │ │ │ To find more information on these HAL components check the man pages. │ │ │ │ │ Place the following in a text file called softstart.hal. If you’re not familiar with Linux place the file in │ │ │ │ │ your home directory. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 241 / 1224 │ │ │ │ │ │ │ │ │ │ loadrt threads period1=1000000 name1=thread │ │ │ │ │ loadrt siggen │ │ │ │ │ loadrt lowpass │ │ │ │ │ loadrt limit2 │ │ │ │ │ @@ -13820,15 +13820,15 @@ │ │ │ │ │ Next to set up a trigger signal click on the Source None button and select square. The button will │ │ │ │ │ change to Source Chan 1. │ │ │ │ │ Next click on Single in the Run Mode radio buttons box. This will start a run and when it finishes you │ │ │ │ │ will see your traces. │ │ │ │ │ To separate the signals so you can see them better click on a channel then use the Pos slider in the │ │ │ │ │ Vertical box to set the positions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 242 / 1224 │ │ │ │ │ │ │ │ │ │ To see the effect of changing the set point values of any of the components you can change them in │ │ │ │ │ the terminal window. To see what different gain settings do for lowpass just type the following in the │ │ │ │ │ terminal window and try different settings. │ │ │ │ │ setp lowpass.0.gain *.01 │ │ │ │ │ @@ -13842,15 +13842,15 @@ │ │ │ │ │ 5.5.5 Stand Alone HAL │ │ │ │ │ In some cases you might want to run a GladeVCP screen with just HAL. For example say you had a │ │ │ │ │ stepper driven device that all you need is to run a stepper motor. A simple Start/Stop interface is all │ │ │ │ │ you need for your application so no need to load up and configure a full blown CNC application. │ │ │ │ │ In the following example we have created a simple GladeVCP panel with one stepper. │ │ │ │ │ Basic Syntax │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 243 / 1224 │ │ │ │ │ │ │ │ │ │ # load the winder.glade GUI and name it winder │ │ │ │ │ loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade │ │ │ │ │ # load realtime components │ │ │ │ │ loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000 │ │ │ │ │ @@ -13889,15 +13889,15 @@ │ │ │ │ │ default is 4 each. The number of Spindles is set with num_spindles, default is 1. │ │ │ │ │ Pin and parameter names starting with axis.L and joint.N are read and updated by the motion-controller │ │ │ │ │ function. │ │ │ │ │ Motion is loaded with the motmod command. A kins should be loaded before motion. │ │ │ │ │ loadrt motmod base_period_nsec=[’period’] servo_period_nsec=[’period’] │ │ │ │ │ traj_period_nsec=[’period’] num_joints=[’0-9’] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 244 / 1224 │ │ │ │ │ │ │ │ │ │ num_dio=[’1-64’] num_aio=[’1-16’] unlock_joints_mask=[’0xNN’] │ │ │ │ │ num_spindles=[’1-8’] │ │ │ │ │ │ │ │ │ │ — base_period_nsec = 50000 - the Base task period in nanoseconds. This is the fastest thread in the │ │ │ │ │ @@ -13939,15 +13939,15 @@ │ │ │ │ │ — motion.analog-in-00 - (float, in) These pins (00, 01, 02, 03 or more if configured) are controlled by │ │ │ │ │ M66. │ │ │ │ │ — motion.analog-out-00 - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled │ │ │ │ │ by M67 or M68. │ │ │ │ │ — motion.coord-error - (bit, out) TRUE when motion has encountered an error, such as exceeding a │ │ │ │ │ soft limit │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 245 / 1224 │ │ │ │ │ │ │ │ │ │ — motion.coord-mode - (bit, out) TRUE when motion is in coordinated mode, as opposed to teleop │ │ │ │ │ mode │ │ │ │ │ — motion.current-vel - (float, out) The current tool velocity in user units per second. │ │ │ │ │ — motion.digital-in-00 - (bit, in) These pins (00, 01, 02, 03 or more if configured) are controlled by │ │ │ │ │ @@ -13993,15 +13993,15 @@ │ │ │ │ │ value is the F-word setting from the G-code file, possibly reduced to accommodate machine velocity and acceleration limits. The value on this pin does not reflect the feed override or any other │ │ │ │ │ adjustments. │ │ │ │ │ — motion.teleop-mode - (bit, out) TRUE when motion is in teleop mode, as opposed to coordinated │ │ │ │ │ mode │ │ │ │ │ — motion.tooloffset.x … motion.tooloffset.w - (float, out, one per axis) shows the tool offset in effect; │ │ │ │ │ it could come from the tool table (G43 active), or it could come from the G-code (G43.1 active) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 246 / 1224 │ │ │ │ │ │ │ │ │ │ 5.6.1.3 Parameters │ │ │ │ │ Many of these parameters serve as debugging aids, and are subject to change or removal at any time. │ │ │ │ │ — motion-command-handler.time - (s32, RO) │ │ │ │ │ — motion-command-handler.tmax - (s32, RW) │ │ │ │ │ @@ -14037,15 +14037,15 @@ │ │ │ │ │ VFDs have an at speed output. Otherwise, it is easy to generate this signal with the HAL near │ │ │ │ │ component, by comparing requested and actual spindle speeds. │ │ │ │ │ — spindle.N.brake - (bit, out) TRUE when the spindle brake should be applied. │ │ │ │ │ — spindle.N.forward - (bit, out) TRUE when the spindle should rotate forward. │ │ │ │ │ — spindle.N.index-enable - (bit, I/O) For correct operation of spindle synchronized moves, this pin │ │ │ │ │ must be hooked to the index-enable pin of the spindle encoder. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 247 / 1224 │ │ │ │ │ │ │ │ │ │ — spindle.N.inhibit - (bit, in) When this bit is TRUE, the spindle speed is set to 0. │ │ │ │ │ — spindle.N.on - (bit, out) TRUE when spindle should rotate. │ │ │ │ │ — spindle.N.reverse - (bit, out) TRUE when the spindle should rotate backward │ │ │ │ │ — spindle.N.revs - (float, in) For correct operation of spindle synchronized moves, this signal must │ │ │ │ │ @@ -14089,15 +14089,15 @@ │ │ │ │ │ Motion then acknowledges this by deasserting the spindle.__N__.orient pin and asserts the spindle.__N_ │ │ │ │ │ pin to indicate orientation complete mode. It also raises the spindle.__N__.brake pin. The spindle │ │ │ │ │ now is in orientation complete mode. │ │ │ │ │ If, during spindle.__N__.orient being true, and spindle.__N__.is-oriented not yet asserted the │ │ │ │ │ spindle.__N__.orient-fault pin has a value other than zero, the M19 command is aborted, a message including the fault code is displayed, and the motion queue is flushed. The spindle reverts to │ │ │ │ │ rotation mode. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 248 / 1224 │ │ │ │ │ │ │ │ │ │ Also, any of the M3, M4 or M5 commands cancel either searching for desired orientation or orientation │ │ │ │ │ complete mode. This is indicated by deasserting both the spindle-orient and spindle-locked pins. │ │ │ │ │ The spindle-orient-mode pin reflects the M19 P word and shall be interpreted as follows: │ │ │ │ │ — 0: rotate clockwise or counterclockwise for smallest angular movement │ │ │ │ │ @@ -14130,15 +14130,15 @@ │ │ │ │ │ — iocontrol.0.tool-prepared - (bit, in) Should be driven TRUE when a tool prepare is completed. │ │ │ │ │ — iocontrol.0.user-enable-out - (bit, out) FALSE when an internal E-Stop condition exists. │ │ │ │ │ — iocontrol.0.user-request-enable - (bit, out) TRUE when the user has requested that E-Stop be cleared. │ │ │ │ │ │ │ │ │ │ 5.6.5 INI settings │ │ │ │ │ A number of INI settings are made available as HAL input pins. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 249 / 1224 │ │ │ │ │ │ │ │ │ │ 5.6.5.1 Pins │ │ │ │ │ N refers to a joint number, L refers to an axis letter. │ │ │ │ │ — ini.N.ferror - (float, in) [JOINT_N]FERROR │ │ │ │ │ — ini.N.min_ferror - (float, in) [JOINT_N]MIN_FERROR │ │ │ │ │ @@ -14170,15 +14170,15 @@ │ │ │ │ │ The traj_arc_blend pins are sampled continuously but changing pin values while a program is running │ │ │ │ │ may not have immediate effect due to queueing of commands. │ │ │ │ │ │ │ │ │ │ — ini.traj_default_acceleration - (float, in) [TRAJ]DEFAULT_ACCELERATION │ │ │ │ │ — ini.traj_default_velocity - (float, in) [TRAJ]DEFAULT_VELOCITY │ │ │ │ │ — ini.traj_max_acceleration - (float, in) [TRAJ]MAX_ACCELERATION │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 250 / 1224 │ │ │ │ │ │ │ │ │ │ 5.7 HAL Component List │ │ │ │ │ 5.7.1 Components │ │ │ │ │ Most of the commands in the following list have man pages. Some will have expanded descriptions, │ │ │ │ │ some will have limited descriptions. From this list you know what components exist, and you can │ │ │ │ │ @@ -14248,15 +14248,15 @@ │ │ │ │ │ Vismach Virtual Machine GUI │ │ │ │ │ Vismach Virtual Machine GUI │ │ │ │ │ Vismach Virtual Machine GUI │ │ │ │ │ Vismach Virtual Machine GUI │ │ │ │ │ │ │ │ │ │ ←- │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ xyzbc-trtgui │ │ │ │ │ │ │ │ │ │ 251 / 1224 │ │ │ │ │ │ │ │ │ │ Vismach Virtual Machine GUI │ │ │ │ │ │ │ │ │ │ @@ -14332,15 +14332,15 @@ │ │ │ │ │ Pico Systems driver for analog servo, PWM and Stepper controller │ │ │ │ │ Driver for beaglebone GPIO pins │ │ │ │ │ Mesa Electronics driver for the 7I43 EPP Anything IO board with │ │ │ │ │ HostMot2. (See the man page for more information) │ │ │ │ │ LinuxCNC HAL driver for the Mesa Electronics 7I90 EPP Anything IO │ │ │ │ │ board with HostMot2 firmware │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 252 / 1224 │ │ │ │ │ │ │ │ │ │ hm2_eth │ │ │ │ │ │ │ │ │ │ LinuxCNC HAL driver for the Mesa Electronics Ethernet Anything IO │ │ │ │ │ boards, with HostMot2 firmware │ │ │ │ │ @@ -14418,15 +14418,15 @@ │ │ │ │ │ remote firmware. Smart-serial remote parameters can now be set in the │ │ │ │ │ HAL file in the normal way. │ │ │ │ │ sim_pin │ │ │ │ │ GUI for displaying and setting one or more HAL inputs │ │ │ │ │ stepconf │ │ │ │ │ Configuration wizard for parallel-port based machines │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 253 / 1224 │ │ │ │ │ │ │ │ │ │ 5.7.1.6 Signal processing (Realtime) │ │ │ │ │ and2 │ │ │ │ │ bitwise │ │ │ │ │ dbounce │ │ │ │ │ @@ -14522,15 +14522,15 @@ │ │ │ │ │ limit3 │ │ │ │ │ Limit the output signal to fall between min and max. Limit its slew rate to │ │ │ │ │ less than maxv per second. Limit its second derivative to less than MaxA │ │ │ │ │ per second squared 5 . │ │ │ │ │ lincurve │ │ │ │ │ One-dimensional lookup table │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 254 / 1224 │ │ │ │ │ │ │ │ │ │ maj3 │ │ │ │ │ Compute the majority of 3 inputs │ │ │ │ │ minmax │ │ │ │ │ Tracks the minimum and maximum values of the input to the outputs. │ │ │ │ │ @@ -14601,15 +14601,15 @@ │ │ │ │ │ Kinematics definitions for LinuxCNC. │ │ │ │ │ lineardeltakinsKinematics for a linear delta robot │ │ │ │ │ │ │ │ │ │ 3. When the input is a position, this means that the position is limited. │ │ │ │ │ 4. When the input is a position, this means that position and velocity are limited. │ │ │ │ │ 5. When the input is a position, this means that the position, velocity, and acceleration are limited. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ maxkins │ │ │ │ │ │ │ │ │ │ millturn │ │ │ │ │ pentakins │ │ │ │ │ pumakins │ │ │ │ │ rosekins │ │ │ │ │ @@ -14687,15 +14687,15 @@ │ │ │ │ │ Signal generator, see Description. │ │ │ │ │ sim_encoder Simulated quadrature encoder, see Description. │ │ │ │ │ sphereprobe Probe a pretend hemisphere. │ │ │ │ │ steptest │ │ │ │ │ Used by Stepconf to allow testing of acceleration and velocity values for an │ │ │ │ │ axis. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ streamer │ │ │ │ │ supply │ │ │ │ │ threadtest │ │ │ │ │ time │ │ │ │ │ watchdog │ │ │ │ │ │ │ │ │ │ @@ -14749,15 +14749,15 @@ │ │ │ │ │ intro.3hal │ │ │ │ │ undocumented.3hal │ │ │ │ │ │ │ │ │ │ 5.7.3 RTAPI calls │ │ │ │ │ │ │ │ │ │ 256 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ EXPORT_FUNCTION.3rtapi │ │ │ │ │ MODULE_AUTHOR.3rtapi │ │ │ │ │ MODULE_DESCRIPTION.3rtapi │ │ │ │ │ MODULE_LICENSE.3rtapi │ │ │ │ │ RTAPI_MP_ARRAY_INT.3rtapi │ │ │ │ │ RTAPI_MP_ARRAY_LONG.3rtapi │ │ │ │ │ @@ -14806,15 +14806,15 @@ │ │ │ │ │ rtapi_task_pause.3rtapi │ │ │ │ │ rtapi_task_resume.3rtapi │ │ │ │ │ rtapi_task_start.3rtapi │ │ │ │ │ rtapi_task_wait.3rtapi │ │ │ │ │ │ │ │ │ │ 257 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 258 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8 HAL Component Descriptions │ │ │ │ │ 5.8.1 Stepgen │ │ │ │ │ This component provides software based generation of step pulses in response to position or velocity │ │ │ │ │ commands. In position mode, it has a built in pre-tuned position loop, so PID tuning is not required. │ │ │ │ │ @@ -14822,21 +14822,21 @@ │ │ │ │ │ limits. It is a realtime component only, and depending on CPU speed, etc, is capable of maximum step │ │ │ │ │ rates of 10 kHz to perhaps 50 kHz. The step pulse generator block diagram shows three block diagrams, each is a single step pulse generator. The first diagram is for step type 0, (step and direction). │ │ │ │ │ The second is for step type 1 (up/down, or pseudo-PWM), and the third is for step types 2 through │ │ │ │ │ 14 (various stepping patterns). The first two diagrams show position mode control, and the third one │ │ │ │ │ shows velocity mode. Control mode and step type are set independently, and any combination can be │ │ │ │ │ selected. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 5.19 – Step Pulse Generator Block Diagram position mode │ │ │ │ │ │ │ │ │ │ 259 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 260 / 1224 │ │ │ │ │ │ │ │ │ │ Loading stepgen component │ │ │ │ │ halcmd: loadrt stepgen step_type= [ctrl_type=] │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -14872,15 +14872,15 @@ │ │ │ │ │ — (bit) stepgen..down - DOWN pseudo-PWM output (step type 1 only). │ │ │ │ │ — (bit) stepgen..phase-A - Phase A output (step types 2-14 only). │ │ │ │ │ — (bit) stepgen..phase-B - Phase B output (step types 2-14 only). │ │ │ │ │ — (bit) stepgen..phase-C - Phase C output (step types 3-14 only). │ │ │ │ │ — (bit) stepgen..phase-D - Phase D output (step types 5-14 only). │ │ │ │ │ — (bit) stepgen..phase-E - Phase E output (step types 11-14 only). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 261 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.1.2 Parameters │ │ │ │ │ — (float) stepgen..position-scale - Steps per position unit. This parameter is used for both │ │ │ │ │ output and feedback. │ │ │ │ │ — (float) stepgen..maxvel - Maximum velocity, in position units per second. If 0.0, has no │ │ │ │ │ @@ -14918,15 +14918,15 @@ │ │ │ │ │ takes effect the first time the code runs. Since one step requires steplen ns high and stepspace ns low, │ │ │ │ │ the maximum frequency is 1,000,000,000 divided by (steplen+stepspace). If maxfreq is set higher │ │ │ │ │ than that limit, it will be lowered automatically. If maxfreq is zero, it will remain zero, but the output │ │ │ │ │ frequency will still be limited. │ │ │ │ │ When using the parallel port driver the step frequency can be doubled using the parport reset function │ │ │ │ │ together with stepgen’s doublefreq setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 262 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.20 – Step and Direction Timing │ │ │ │ │ Step Type 1 Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending │ │ │ │ │ on the direction of travel. Each pulse is steplen ns long, and the pulses are separated by at least │ │ │ │ │ stepspace ns. The maximum frequency is the same as for step type 0. If maxfreq is set higher than │ │ │ │ │ @@ -14938,33 +14938,33 @@ │ │ │ │ │ │ │ │ │ │ Step Type 2 - 14 Step types 2 through 14 are state based, and have from two to five outputs. On │ │ │ │ │ each step, a state counter is incremented or decremented. The Two-and-Three-Phase, Four-Phase, │ │ │ │ │ and Five-Phase show the output patterns as a function of the state counter. The maximum frequency │ │ │ │ │ is 1,000,000,000 divided by steplen, and as in the other modes, maxfreq will be lowered if it is above │ │ │ │ │ the limit. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 5.21 – Two-and-Three-Phase Step Types │ │ │ │ │ │ │ │ │ │ 263 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 5.22 – Four-Phase Step Types │ │ │ │ │ │ │ │ │ │ 264 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 5.23 – Five-Phase Step Types │ │ │ │ │ │ │ │ │ │ 265 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 266 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.1.4 Functions │ │ │ │ │ The component exports three functions. Each function acts on all of the step pulse generators - running │ │ │ │ │ different generators in different threads is not supported. │ │ │ │ │ — (funct) stepgen.make-pulses - High speed function to generate and count pulses (no floating point). │ │ │ │ │ @@ -15006,15 +15006,15 @@ │ │ │ │ │ unloadrt pwmgen │ │ │ │ │ │ │ │ │ │ 5.8.2.1 Output Types │ │ │ │ │ The PWM generator supports three different output types. │ │ │ │ │ — Output type 0 - PWM output pin only. Only positive commands are accepted, negative values are │ │ │ │ │ treated as zero (and will be affected by the parameter min-dc if it is non-zero). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 267 / 1224 │ │ │ │ │ │ │ │ │ │ — Output type 1 - PWM/PDM and direction pins. Positive and negative inputs will be output as positive and negative PWM. The direction pin is false for positive commands, and true for negative │ │ │ │ │ commands. If your control needs positive PWM for both CW and CCW use the abs component to │ │ │ │ │ convert your PWM signal to positive value when a negative input is input. │ │ │ │ │ — Output type 2 - UP and DOWN pins. For positive commands, the PWM signal appears on the up │ │ │ │ │ @@ -15057,15 +15057,15 @@ │ │ │ │ │ 50% duty cycle and 25 Hz PWM frequency this means that the output changes state every (1 / 25) │ │ │ │ │ seconds / 50uS * 50% = 400 iterations. This also means that you have a 800 possible duty cycle │ │ │ │ │ values (without dithering) │ │ │ │ │ — (funct) pwmgen.update - Low speed function to scale and limit value and handle other parameters. │ │ │ │ │ This is the function of the module that does the more complicated mathematics to work out how │ │ │ │ │ many base-periods the output should be high for, and how many it should be low for. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 268 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.3 Encoder │ │ │ │ │ This component provides software based counting of signals from quadrature (or single-pulse) encoders. It is a realtime component only, and depending on CPU speed, latency, etc, is capable of │ │ │ │ │ maximum count rates of 10 kHz to perhaps up to 50 kHz. │ │ │ │ │ The base thread should be 1/2 count speed to allow for noise and timing variation. For example if you │ │ │ │ │ @@ -15079,15 +15079,15 @@ │ │ │ │ │ Loading Encoder │ │ │ │ │ halcmd: loadrt encoder [num_chan=] │ │ │ │ │ │ │ │ │ │ is the number of encoder counters that you want to install. If numchan is not specified, │ │ │ │ │ three counters will be installed. The maximum number of counters is 8 (as defined by MAX_CHAN │ │ │ │ │ in encoder.c). Each counter is independent, but all are updated by the same function(s) at the same │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 269 / 1224 │ │ │ │ │ │ │ │ │ │ time. In the following descriptions, is the number of a specific counter. The first counter is │ │ │ │ │ number 0. │ │ │ │ │ Unloading Encoder │ │ │ │ │ halcmd: unloadrt encoder │ │ │ │ │ @@ -15129,15 +15129,15 @@ │ │ │ │ │ lathe threading, and may have other uses as well. │ │ │ │ │ — encoder..position-latched (float, Out) - Not used at this time. │ │ │ │ │ — encoder..position-scale (float, I/O) - Scale factor, in counts per length unit. For example, if │ │ │ │ │ position-scale is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units. │ │ │ │ │ — encoder..rawcounts (s32, In) - The raw count, as determined by update-counters. This value │ │ │ │ │ is updated more frequently than counts and position. It is also unaffected by reset or the index pulse. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 270 / 1224 │ │ │ │ │ │ │ │ │ │ — encoder..reset (bit, In) - When True, force counts and position to zero immediately. │ │ │ │ │ — encoder..velocity (float, Out) - Velocity in scaled units per second. encoder uses an algorithm that greatly reduces quantization noise as compared to simply differentiating the position │ │ │ │ │ output. When the magnitude of the true velocity is below min-speed-estimate, the velocity output │ │ │ │ │ is 0. │ │ │ │ │ @@ -15158,15 +15158,15 @@ │ │ │ │ │ │ │ │ │ │ 5.8.4 PID │ │ │ │ │ This component provides Proportional/Integral/Derivative control loops. It is a realtime component │ │ │ │ │ only. For simplicity, this discussion assumes that we are talking about position loops, however this │ │ │ │ │ component can be used to implement other feedback loops such as speed, torch height, temperature, │ │ │ │ │ etc. The PID Loop Block Diagram is a block diagram of a single PID loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 271 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.25 – PID Loop Block Diagram │ │ │ │ │ Loading PID │ │ │ │ │ halcmd: loadrt pid [num_chan=] [debug=1] │ │ │ │ │ │ │ │ │ │ @@ -15178,15 +15178,15 @@ │ │ │ │ │ cluttering the pin list. │ │ │ │ │ Unloading PID │ │ │ │ │ halcmd: unloadrt pid │ │ │ │ │ │ │ │ │ │ 5.8.4.1 Pins │ │ │ │ │ The three most important pins are │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 272 / 1224 │ │ │ │ │ │ │ │ │ │ — (float) pid..command - The desired position, as commanded by another system component. │ │ │ │ │ — (float) pid..feedback - The present position, as measured by a feedback device such as │ │ │ │ │ an encoder. │ │ │ │ │ — (float) pid..output - A velocity command that attempts to move from the present position │ │ │ │ │ @@ -15227,15 +15227,15 @@ │ │ │ │ │ All max* limits are implemented so that if the value of this parameter is zero, there is no limit. │ │ │ │ │ If debug=1 was specified when the component was installed, four additional pins will be exported: │ │ │ │ │ — (float) pid..errorI - Integral of error. │ │ │ │ │ — (float) pid..errorD - Derivative of error. │ │ │ │ │ — (float) pid..commandD - Derivative of the command. │ │ │ │ │ — (float) pid..commandDD - 2nd derivative of the command. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 273 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.4.2 Functions │ │ │ │ │ The component exports one function for each PID loop. This function performs all the calculations │ │ │ │ │ needed for the loop. Since each loop has its own function, individual loops can be included in different │ │ │ │ │ threads and execute at different rates. │ │ │ │ │ @@ -15269,15 +15269,15 @@ │ │ │ │ │ Note that pulses per revolution is not the same as counts per revolution. A pulse is a complete quadrature cycle. Most encoder counters will count four times during one complete cycle. │ │ │ │ │ 5.8.5.3 Functions │ │ │ │ │ The component exports two functions. Each function affects all simulated encoders. │ │ │ │ │ — (funct) sim-encoder.make-pulses - High speed function to generate quadrature pulses (no floating │ │ │ │ │ point). │ │ │ │ │ — (funct) sim-encoder.update-speed - Low speed function to read speed, do scaling, and set up makepulses. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 274 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.6 Debounce │ │ │ │ │ Debounce is a realtime component that can filter the glitches created by mechanical switch contacts. │ │ │ │ │ It may also be useful in other applications where short pulses are to be rejected. │ │ │ │ │ Loading debounce │ │ │ │ │ @@ -15310,15 +15310,15 @@ │ │ │ │ │ 5.8.6.3 Functions │ │ │ │ │ Each group of filters has one function, which updates all the filters in that group simultaneously. │ │ │ │ │ Different groups of filters can be updated from different threads at different periods. │ │ │ │ │ — (funct) debounce. - Updates all filters in group . │ │ │ │ │ 6. Each individual filter also has an internal state variable. There is a compile time switch that can export that variable as a │ │ │ │ │ parameter. This is intended for testing, and simply wastes shared memory under normal circumstances. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 275 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.7 Siggen │ │ │ │ │ Siggen is a realtime component that generates square, triangle, and sine waves. It is primarily used │ │ │ │ │ for testing. │ │ │ │ │ Loading siggen │ │ │ │ │ @@ -15351,15 +15351,15 @@ │ │ │ │ │ 5.8.7.2 Parameters │ │ │ │ │ None. 7 │ │ │ │ │ 5.8.7.3 Functions │ │ │ │ │ — (funct) siggen..update - Calculates new values for all five outputs. │ │ │ │ │ 7. Prior to version 2.1, frequency, amplitude, and offset were parameters. They were changed to pins to allow control by │ │ │ │ │ other components. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 276 / 1224 │ │ │ │ │ │ │ │ │ │ 5.8.8 lut5 │ │ │ │ │ The lut5 component is a 5 input logic component based on a look up table. │ │ │ │ │ — lut5 does not require a floating point thread. │ │ │ │ │ Loading lut5 │ │ │ │ │ @@ -15544,15 +15544,15 @@ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Output │ │ │ │ │ │ │ │ │ │ Lut5 Two Inputs Example In the following table we have selected the output state for each line that │ │ │ │ │ we wish to be true. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 277 / 1224 │ │ │ │ │ │ │ │ │ │ Table 5.6: Lut5 Two Inputs Example Look Up Table │ │ │ │ │ Bit 4 │ │ │ │ │ 0 │ │ │ │ │ 0 │ │ │ │ │ @@ -15622,15 +15622,15 @@ │ │ │ │ │ sudo apt install linuxcnc-dev │ │ │ │ │ # or │ │ │ │ │ sudo apt install linuxcnc-uspace-dev │ │ │ │ │ │ │ │ │ │ Another method is using the Synaptic package manager, from the Applications menu, to install the │ │ │ │ │ linuxcnc-dev or linuxcnc-uspace-dev packages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 278 / 1224 │ │ │ │ │ │ │ │ │ │ 5.9.3 Using a Component │ │ │ │ │ Components need to be loaded and added to a thread before it can be used. │ │ │ │ │ Example │ │ │ │ │ loadrt threads name1=servo-thread period1=1000000 │ │ │ │ │ @@ -15668,15 +15668,15 @@ │ │ │ │ │ Declarations include: │ │ │ │ │ — component HALNAME (DOC); │ │ │ │ │ — pin PINDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (= STARTVALUE) (DOC) ; │ │ │ │ │ — param PARAMDIRECTION TYPE HALNAME ([SIZE]|[MAXSIZE: CONDSIZE]) (if CONDITION) (= │ │ │ │ │ STARTVALUE) (DOC) ; │ │ │ │ │ — function HALNAME (fp | nofp) (DOC); │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 279 / 1224 │ │ │ │ │ │ │ │ │ │ — option OPT (VALUE); │ │ │ │ │ — variable CTYPE STARREDNAME ([SIZE]); │ │ │ │ │ — description DOC; │ │ │ │ │ — examples DOC; │ │ │ │ │ @@ -15732,15 +15732,15 @@ │ │ │ │ │ — MAXSIZE : CONDSIZE - A number that gives the maximum size of the array, followed by an expression involving the variable personality and which always evaluates to less than MAXSIZE. When │ │ │ │ │ the array is created its size will be CONDSIZE. │ │ │ │ │ — DOC - A string that documents the item. String can be a C-style ”double quoted” string, like: │ │ │ │ │ ”Selects the desired edge: TRUE means falling, FALSE means rising” │ │ │ │ │ │ │ │ │ │ or a Python-style ”triple quoted” string, which may include embedded newlines and quote characters, such as: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 280 / 1224 │ │ │ │ │ │ │ │ │ │ ”””The effect of this parameter, also known as ”the orb of zot”, │ │ │ │ │ will require at least two paragraphs to explain. │ │ │ │ │ Hopefully these paragraphs have allowed you to understand ”zot” │ │ │ │ │ better.””” │ │ │ │ │ @@ -15780,15 +15780,15 @@ │ │ │ │ │ — option count_function yes - (default: no) Normally, the number of instances to create is specified in │ │ │ │ │ the module parameter count; if count_function is specified, the value returned by the function int │ │ │ │ │ get_count(void) is used instead, and the count module parameter is not defined. │ │ │ │ │ — option rtapi_app no - (default: yes) Normally, the functions rtapi_app_main() and rtapi_app_exit() │ │ │ │ │ are automatically defined. With option rtapi_app no, they are not, and must be provided in the C │ │ │ │ │ code. Use the following prototypes: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 281 / 1224 │ │ │ │ │ │ │ │ │ │ ‘int rtapi_app_main(void);‘ │ │ │ │ │ ‘void rtapi_app_exit(void);‘ │ │ │ │ │ │ │ │ │ │ When implementing your own rtapi_app_main(), call the function int export(char *prefix, │ │ │ │ │ @@ -15834,15 +15834,15 @@ │ │ │ │ │ The result of assigning an inappropriate value to an option is undefined. │ │ │ │ │ The result of using any other option is undefined. │ │ │ │ │ │ │ │ │ │ 5.9.7.3 License and Authorship │ │ │ │ │ — LICENSE - Specify the license of the module for the documentation and for the MODULE_LICENSE() │ │ │ │ │ module declaration. For example, to specify that the module’s license is GPL v2 or later: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 282 / 1224 │ │ │ │ │ │ │ │ │ │ license ”GPL”; // indicates GPL v2 or later │ │ │ │ │ For additional information on the meaning of MODULE_LICENSE() and additional license identifiers, see or the manual page rtapi_module_param(3). │ │ │ │ │ This declaration is required. │ │ │ │ │ — AUTHOR - Specify the author of the module for the documentation. │ │ │ │ │ @@ -15872,15 +15872,15 @@ │ │ │ │ │ — comp_id │ │ │ │ │ — fperiod │ │ │ │ │ — rtapi_app_main │ │ │ │ │ — rtapi_app_exit │ │ │ │ │ — extra_setup │ │ │ │ │ — extra_cleanup │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 283 / 1224 │ │ │ │ │ │ │ │ │ │ 5.9.9 Convenience Macros │ │ │ │ │ │ │ │ │ │ Based on the items in the declaration section, halcompile creates a C structure called struct __comp_state. │ │ │ │ │ However, instead of referring to the members of this structure (e.g., *(inst->name)), they will generally be referred to using the macros below. The details of struct __comp_state and these macros │ │ │ │ │ @@ -15921,15 +15921,15 @@ │ │ │ │ │ of any of the basic boolean logic functions and, or, and xor. │ │ │ │ │ The default number of allowed personality items is a compile-time setting (64). The default applies to │ │ │ │ │ numerous components included in the distribution that are built using halcompile. │ │ │ │ │ To alter the allowed number of personality items for user-built components, use the --personality │ │ │ │ │ option with halcompile. For example, to allow up to 128 personality times: │ │ │ │ │ [sudo] halcompile --personality=128 --install ... │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 284 / 1224 │ │ │ │ │ │ │ │ │ │ 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: │ │ │ │ │ loadrt logic names=and4,or3,nand5, personality=0x104,0x203,0x805 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ @@ -15966,15 +15966,15 @@ │ │ │ │ │ halcompile --document rtexample.comp │ │ │ │ │ │ │ │ │ │ The resulting manpage, example.9 can be viewed with │ │ │ │ │ man ./example.9 │ │ │ │ │ │ │ │ │ │ or copied to a standard location for manual pages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 285 / 1224 │ │ │ │ │ │ │ │ │ │ 5.9.14 Compiling userspace components outside the source tree │ │ │ │ │ halcompile can process, compile, install, and document userspace components: │ │ │ │ │ halcompile usrexample.comp │ │ │ │ │ halcompile --compile usrexample.comp │ │ │ │ │ @@ -16014,15 +16014,15 @@ │ │ │ │ │ pin in float theta; │ │ │ │ │ function _; │ │ │ │ │ license ”GPL”; // indicates GPL v2 or later │ │ │ │ │ ;; │ │ │ │ │ #include │ │ │ │ │ FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 286 / 1224 │ │ │ │ │ │ │ │ │ │ 5.9.15.3 out8 │ │ │ │ │ This component is a driver for a fictional card called ”out8”, which has 8 pins of digital output which │ │ │ │ │ are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they │ │ │ │ │ can be at various addresses. The pin is called out_ because out is an identifier used in . It │ │ │ │ │ @@ -16065,15 +16065,15 @@ │ │ │ │ │ } │ │ │ │ │ FUNCTION(_) { outb(out_, ioaddr); } │ │ │ │ │ │ │ │ │ │ 5.9.15.4 hal_loop │ │ │ │ │ component hal_loop; │ │ │ │ │ pin out float example; │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 287 / 1224 │ │ │ │ │ │ │ │ │ │ This fragment of a component illustrates the use of the hal_ prefix in a component name. loop is the │ │ │ │ │ name of a standard Linux kernel module, so a loop component might not successfully load if the Linux │ │ │ │ │ loop module was also present on the system. │ │ │ │ │ When loaded, halcmd show comp will show a component called hal_loop. However, the pin shown by │ │ │ │ │ @@ -16117,15 +16117,15 @@ │ │ │ │ │ function _ nofp; │ │ │ │ │ description ””” │ │ │ │ │ Experimental general ’logic function’ component. Can perform ’and’, ’or’ │ │ │ │ │ and ’xor’ of up to 16 inputs. Determine the proper value for ’personality’ │ │ │ │ │ by adding: │ │ │ │ │ .IP \\(bu 4 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 288 / 1224 │ │ │ │ │ │ │ │ │ │ The number of input pins, usually from 2 to 16 │ │ │ │ │ .IP \\(bu │ │ │ │ │ 256 (0x100) if the ’and’ output is desired │ │ │ │ │ .IP \\(bu │ │ │ │ │ @@ -16172,15 +16172,15 @@ │ │ │ │ │ } │ │ │ │ │ //main function │ │ │ │ │ FUNCTION(_) { │ │ │ │ │ if (in < 0){ │ │ │ │ │ set(&out1); │ │ │ │ │ unset(&out2); │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 289 / 1224 │ │ │ │ │ │ │ │ │ │ }else if (in >0){ │ │ │ │ │ unset(&out2); │ │ │ │ │ set(&out2); │ │ │ │ │ }else{ │ │ │ │ │ @@ -16218,15 +16218,15 @@ │ │ │ │ │ The halcmd language used in HAL files has a simple syntax that is actually a subset of the more │ │ │ │ │ powerful general-purpose Tcl scripting language. │ │ │ │ │ │ │ │ │ │ 5.10.2 Haltcl Commands │ │ │ │ │ Haltcl files use the Tcl scripting language augmented with the specific commands of the LinuxCNC │ │ │ │ │ hardware abstraction layer (HAL). The HAL-specific commands are: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 290 / 1224 │ │ │ │ │ │ │ │ │ │ addf, alias, │ │ │ │ │ delf, delsig, │ │ │ │ │ getp, gets │ │ │ │ │ ptype, │ │ │ │ │ @@ -16276,15 +16276,15 @@ │ │ │ │ │ without whitespace are in this group), then it is possible to treat $::SECTION(ITEM) as though it is │ │ │ │ │ not a list. │ │ │ │ │ When the value could contain special characters—quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl—it is necessary to distinguish │ │ │ │ │ between the list of values and the initial (and possibly only) value in the list. │ │ │ │ │ In Tcl, this is written [lindex $::SECTION(ITEM) 0]. │ │ │ │ │ For example: given the following INI values │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 291 / 1224 │ │ │ │ │ │ │ │ │ │ [HOSTMOT2] │ │ │ │ │ DRIVER=hm2_eth │ │ │ │ │ IPADDR=”10.10.10.10” │ │ │ │ │ BOARD=7i92 │ │ │ │ │ @@ -16322,15 +16322,15 @@ │ │ │ │ │ Whitespace in the bare expression is not allowed, use quotes for that: │ │ │ │ │ setp scale.0.gain ”6.28 / 360.0 * $::JOINT_0(radius) * 60.0” │ │ │ │ │ │ │ │ │ │ In other contexts, such as loadrt, you must explicitly use the Tcl expr command ([expr {}]) for computational expressions. │ │ │ │ │ Example │ │ │ │ │ loadrt motion base_period=[expr {500000000/$::TRAJ(MAX_PULSE_RATE)}] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 292 / 1224 │ │ │ │ │ │ │ │ │ │ 5.10.6 Haltcl Examples │ │ │ │ │ Consider the topic of stepgen headroom. Software stepgen runs best with an acceleration constraint │ │ │ │ │ that is ”a bit higher” than the one used by the motion planner. So, when using halcmd files, we force │ │ │ │ │ INI files to have a manually calculated value. │ │ │ │ │ @@ -16370,15 +16370,15 @@ │ │ │ │ │ $ halrun -T haltclfile.tcl │ │ │ │ │ │ │ │ │ │ 5.10.8 Haltcl Distribution Examples (sim) │ │ │ │ │ The configs/sim/axis/simtcl directory includes an INI file that uses a .tcl file to demonstrate a haltcl │ │ │ │ │ configuration in conjunction with the usage of twopass processing. The example shows the use of Tcl │ │ │ │ │ procedures, looping, the use of comments and output to the terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 293 / 1224 │ │ │ │ │ │ │ │ │ │ 5.11 Creating Userspace Python Components │ │ │ │ │ 5.11.1 Basic usage │ │ │ │ │ A userspace component begins by creating its pins and parameters, then enters a loop which will │ │ │ │ │ periodically drive all the outputs from the inputs. The following component copies the value seen on │ │ │ │ │ @@ -16440,15 +16440,15 @@ │ │ │ │ │ much longer if the memory used by the passthrough component is swapped to disk, the assignment │ │ │ │ │ could be delayed until that memory is swapped back in. │ │ │ │ │ Thus, userspace components are suitable for user-interactive elements such as control panels (delays │ │ │ │ │ in the range of milliseconds are not noticed, and longer delays are acceptable), but not for sending │ │ │ │ │ step pulses to a stepper driver board (delays must always be in the range of microseconds, no matter │ │ │ │ │ what). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 294 / 1224 │ │ │ │ │ │ │ │ │ │ 5.11.3 Create pins and parameters │ │ │ │ │ h = hal.component(”passthrough”) │ │ │ │ │ │ │ │ │ │ The component itself is created by a call to the constructor hal.component. The arguments are the │ │ │ │ │ @@ -16500,15 +16500,15 @@ │ │ │ │ │ │ │ │ │ │ 5.11.4.1 Driving output (HAL_OUT) pins │ │ │ │ │ Periodically, usually in response to a timer, all HAL_OUT pins should be ”driven” by assigning them a │ │ │ │ │ new value. This should be done whether or not the value is different than the last one assigned. When │ │ │ │ │ a pin is connected to a signal, its old output value is not copied into the signal, so the proper value │ │ │ │ │ will only appear on the signal once the component assigns a new value. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 295 / 1224 │ │ │ │ │ │ │ │ │ │ 5.11.4.2 Driving bidirectional (HAL_IO) pins │ │ │ │ │ The above rule does not apply to bidirectional pins. Instead, a bidirectional pin should only be driven │ │ │ │ │ by the component when the component wishes to change the value. For instance, in the canonical │ │ │ │ │ encoder interface, the encoder component only sets the index-enable pin to FALSE (when an index │ │ │ │ │ @@ -16538,15 +16538,15 @@ │ │ │ │ │ hal.component_is_ready(”testpanel”) │ │ │ │ │ │ │ │ │ │ 5.11.6.5 get_msg_level │ │ │ │ │ Get the current Realtime msg level. │ │ │ │ │ 5.11.6.6 set_msg_level │ │ │ │ │ Set the current Realtime msg level. used for debugging information. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.7 connect │ │ │ │ │ Connect a pin to a signal. │ │ │ │ │ Example │ │ │ │ │ hal.connect(”pinname”,”signal_name”) │ │ │ │ │ │ │ │ │ │ 5.11.6.8 disconnect │ │ │ │ │ @@ -16579,15 +16579,15 @@ │ │ │ │ │ listOfDicts = hal.get_info_params() │ │ │ │ │ paramName1 = listOfDicts[0].get(’NAME’) │ │ │ │ │ paramValue1 = listOfDicts[0].get(’VALUE’) │ │ │ │ │ paramDirection1 = listOfDicts[0].get(’DIRECTION’) │ │ │ │ │ │ │ │ │ │ 296 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.13 new_sig │ │ │ │ │ Create a new signal of the type specified. │ │ │ │ │ Example │ │ │ │ │ hal.new_sig(”signalname”,hal.HAL_BIT) │ │ │ │ │ │ │ │ │ │ 5.11.6.14 pin_has_writer │ │ │ │ │ @@ -16616,15 +16616,15 @@ │ │ │ │ │ │ │ │ │ │ 5.11.6.19 set │ │ │ │ │ Set the HAL object value. │ │ │ │ │ h.out.set(10) │ │ │ │ │ │ │ │ │ │ 297 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5.11.6.20 is_pin │ │ │ │ │ Is the object a pin or parameter? │ │ │ │ │ Returns True or False. │ │ │ │ │ h.in.is_pin() │ │ │ │ │ │ │ │ │ │ 5.11.6.21 sampler_base │ │ │ │ │ @@ -16653,15 +16653,15 @@ │ │ │ │ │ — MSG_DBG │ │ │ │ │ — MSG_ERR │ │ │ │ │ — MSG_INFO │ │ │ │ │ — MSG_WARN │ │ │ │ │ │ │ │ │ │ 298 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 299 / 1224 │ │ │ │ │ │ │ │ │ │ 5.11.8 System Information │ │ │ │ │ Read these to acquire information about the realtime system. │ │ │ │ │ — is_kernelspace │ │ │ │ │ — is_rt │ │ │ │ │ @@ -16703,15 +16703,15 @@ │ │ │ │ │ # widgets allows access to widgets from the qtvcp files │ │ │ │ │ # at this point the widgets and HAL pins are not instantiated │ │ │ │ │ def __init__(self, halcomp,widgets,paths): │ │ │ │ │ self.hal = halcomp │ │ │ │ │ self.testPin = self.hal.newpin(’test-pin’, hal.HAL_BIT, hal.HAL_IN) │ │ │ │ │ self.testPin.value_changed.connect(lambda s: self.setTestPin(s)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 300 / 1224 │ │ │ │ │ │ │ │ │ │ And have a function to be called. This shows ways to get the pin value and information. │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ @@ -16747,15 +16747,15 @@ │ │ │ │ │ (bit) in │ │ │ │ │ State of the hardware input. │ │ │ │ │ (bit) in-not │ │ │ │ │ Inverted state of the input. │ │ │ │ │ 5.12.2.2 Parameters │ │ │ │ │ None │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 301 / 1224 │ │ │ │ │ │ │ │ │ │ 5.12.2.3 Functions │ │ │ │ │ (funct) read │ │ │ │ │ Read hardware and set in and in-not HAL pins. │ │ │ │ │ │ │ │ │ │ @@ -16784,15 +16784,15 @@ │ │ │ │ │ This will be subtracted from the hardware input voltage (or current) after the scale multiplier │ │ │ │ │ has been applied. │ │ │ │ │ (float) bit_weight │ │ │ │ │ The value of one least significant bit (LSB). This is effectively the granularity of the input reading. │ │ │ │ │ (float) hw_offset │ │ │ │ │ The value present on the input when 0 volts is applied to the input pin(s). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 302 / 1224 │ │ │ │ │ │ │ │ │ │ 5.12.4.3 Functions │ │ │ │ │ (funct) read │ │ │ │ │ Read the values of this analog input channel. This may be used for individual channel reads, or │ │ │ │ │ it may cause all channels to be read │ │ │ │ │ @@ -16826,15 +16826,15 @@ │ │ │ │ │ 5.12.5.3 Functions │ │ │ │ │ (funct) write │ │ │ │ │ This causes the calculated value to be output to the hardware. If enable is false, then the output │ │ │ │ │ will be 0, regardless of value, scale, and offset. The meaning of ”0” is dependent on the hardware. For example, a bipolar 12-bit A/D may need to write 0x1FF (mid scale) to the D/A get 0 │ │ │ │ │ volts from the hardware pin. If enable is true, read scale, offset and value and output to the adc │ │ │ │ │ (scale * value) + offset. If enable is false, then output 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 303 / 1224 │ │ │ │ │ │ │ │ │ │ 5.13 HAL Tools │ │ │ │ │ 5.13.1 Halcmd │ │ │ │ │ Halcmd is a command line tool for manipulating the HAL. There is a rather complete man page for │ │ │ │ │ halcmd, which will be installed if you have installed LinuxCNC from either source or a package. The │ │ │ │ │ @@ -16874,23 +16874,23 @@ │ │ │ │ │ displays the value. Multiple Halmeters can be open at the same time. If you use a script to open │ │ │ │ │ multiple Halmeters you can set the position of each one with the argument -g X Y relative to the │ │ │ │ │ upper left corner of your screen. For example: │ │ │ │ │ loadusr halmeter pin hm2.0.stepgen.00.velocity-fb -g 0 500 │ │ │ │ │ │ │ │ │ │ See the man page for more options and the section Halmeter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 5.26 – Halmeter selection window │ │ │ │ │ │ │ │ │ │ Figure 5.27 – Halmeter watch window │ │ │ │ │ │ │ │ │ │ 304 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 305 / 1224 │ │ │ │ │ │ │ │ │ │ 5.13.3 Halshow │ │ │ │ │ Halshow (complete usage description) can be started from the command line to show details for selected components, pins, parameters, signals, functions, and threads of a running HAL. The WATCH tab │ │ │ │ │ provides a continuous display of selected pin, parameters, and signal items. The File menu provides │ │ │ │ │ buttons to save the watch items to a watch list and to load an existing watch list. The watch list items │ │ │ │ │ @@ -16906,15 +16906,15 @@ │ │ │ │ │ Notes: │ │ │ │ │ Create watchfile in halshow using: ’File/Save Watch List’. │ │ │ │ │ LinuxCNC must be running for standalone usage. │ │ │ │ │ │ │ │ │ │ Figure 5.28 – Halshow Watch Tab │ │ │ │ │ A watchfile created using the File/Save Watch List menu item is formatted as a single line with tokens │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 306 / 1224 │ │ │ │ │ │ │ │ │ │ ”pin+”, ”param+”, ”sig=+” followed by the appropriate pin, param, or signal name. The token-name │ │ │ │ │ pairs are separated by a space character. │ │ │ │ │ Single Line Watchfile Example │ │ │ │ │ pin+joint.0.pos-hard-limit pin+joint.1.pos-hard-limit sig+estop-loop │ │ │ │ │ @@ -16960,15 +16960,15 @@ │ │ │ │ │ pin: │ │ │ │ │ IN or I/O (and not connected to a signal with a writer) │ │ │ │ │ param: RW │ │ │ │ │ signal: connected to a writable pin │ │ │ │ │ HAL item types bit, s32, u32, float are supported │ │ │ │ │ When a bit item is specified, a pushbutton is created │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 307 / 1224 │ │ │ │ │ │ │ │ │ │ to manage the item in one of three manners specified │ │ │ │ │ by radio buttons: │ │ │ │ │ toggle: Toggle value when button pressed │ │ │ │ │ pulse: Pulse item to 1 once when button pressed │ │ │ │ │ @@ -16989,15 +16989,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 5.29 – sim_pin Window │ │ │ │ │ │ │ │ │ │ 5.13.6 Simulate Probe │ │ │ │ │ simulate_probe is a simple GUI to simulate activation of the pin motion.probe-input. Usage: │ │ │ │ │ simulate_probe & │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 308 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.30 – simulate_probe Window │ │ │ │ │ │ │ │ │ │ 5.13.7 HAL Histogram │ │ │ │ │ hal-histogram is a command line utility to display histograms for HAL pins. │ │ │ │ │ @@ -17042,15 +17042,15 @@ │ │ │ │ │ 1. LinuxCNC (or another HAL application) must be running. │ │ │ │ │ 2. If no pinname is specified, default is: motion-command-handler.time. │ │ │ │ │ 3. This app may be opened for 5 pins. │ │ │ │ │ 4. Pintypes float, s32, u32, bit are supported. │ │ │ │ │ 5. The pin must be associated with a thread supporting floating point For a base thread, this may │ │ │ │ │ require using loadrt motmod ... base_thread_fp=1 . │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 309 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 5.31 – hal-histogram Window │ │ │ │ │ │ │ │ │ │ 5.13.8 Halreport │ │ │ │ │ halreport is a command-line utility that generates a report about HAL connections for a running │ │ │ │ │ @@ -17063,15 +17063,15 @@ │ │ │ │ │ 5. Identification of unknown functions for unhandled components. │ │ │ │ │ 6. Signals with no output. │ │ │ │ │ 7. Signals with no inputs. │ │ │ │ │ 8. Functions with no addf. │ │ │ │ │ 9. Warning tags for components marked as deprecated/obsolete in docs. │ │ │ │ │ 10. Real names for pins that use alias names. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 310 / 1224 │ │ │ │ │ │ │ │ │ │ The report can be generated from the command line and directed to an output file (or stdout if no │ │ │ │ │ outfilename is specified): │ │ │ │ │ halreport Usage │ │ │ │ │ Usage: │ │ │ │ │ @@ -17147,15 +17147,15 @@ │ │ │ │ │ servo-thread 004 │ │ │ │ │ servo-thread 008 │ │ │ │ │ │ │ │ │ │ In the example above, the HALFILE uses halcmd aliases to simplify pin names for an hostmot2 FPGA │ │ │ │ │ board with commands like: │ │ │ │ │ alias pin hm2_7i92.0.stepgen.00.position-fb h.00.position-fb │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 311 / 1224 │ │ │ │ │ │ │ │ │ │ Note │ │ │ │ │ Questionable component function detection may occur for │ │ │ │ │ 1. unsupported (deprecated) components, │ │ │ │ │ 2. user-created components that use multiple functions or unconventional function naming, or │ │ │ │ │ @@ -17166,15 +17166,15 @@ │ │ │ │ │ Component pins that cannot be associated with a known thread function report the function as ”Unknown”. │ │ │ │ │ │ │ │ │ │ halreport generates a connections report (without pin types, and current values) for a running HAL │ │ │ │ │ application to aid in designing and verifying connections. This helps with the understanding what the │ │ │ │ │ source of a pin value is. Use this information with applications like halshow, halmeter, halscope or │ │ │ │ │ the halcmd show command in a terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 312 / 1224 │ │ │ │ │ │ │ │ │ │ Chapitre 6 │ │ │ │ │ │ │ │ │ │ Hardware Drivers │ │ │ │ │ 6.1 Parallel Port Driver │ │ │ │ │ @@ -17207,15 +17207,15 @@ │ │ │ │ │ The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c). The ports are │ │ │ │ │ numbered starting at zero. │ │ │ │ │ │ │ │ │ │ 6.1.1 Loading │ │ │ │ │ The hal_parport driver is a real time component so it must be loaded into the real time thread with │ │ │ │ │ loadrt. The configuration string describes the parallel ports to be used, and (optionally) their types. If │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 313 / 1224 │ │ │ │ │ │ │ │ │ │ the configuration string does not describe at least one port, it is an error. │ │ │ │ │ loadrt hal_parport cfg=”port [type] [port [type] ...]” │ │ │ │ │ │ │ │ │ │ Specifying the Port Numbers below 16 refer to parallel ports detected by the system. This is the │ │ │ │ │ @@ -17237,15 +17237,15 @@ │ │ │ │ │ 2 to 9 explicitly specified as outputs. Note that you must know the base address of the parallel ports │ │ │ │ │ to configure the drivers correctly. For ISA bus ports, this is usually not a problem, since the ports │ │ │ │ │ are almost always at a well-known address, such as 0x278 or 0x378 which are typically configured │ │ │ │ │ in the BIOS. The addresses of PCI bus cards are usually found with lspci -v in an I/O ports line, or │ │ │ │ │ in a kernel message after running sudo modprobe -a parport_pc. There is no default address, so if │ │ │ │ │ does not contain at least one address, it is an error. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 314 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 6.1 – Parport block diagram │ │ │ │ │ Type For each parallel port handled by the hal_parport driver, a type can optionally be specified. The │ │ │ │ │ type is one of in, out, epp, or x. │ │ │ │ │ Table 6.1: Parallel Port Direction │ │ │ │ │ @@ -17305,15 +17305,15 @@ │ │ │ │ │ out │ │ │ │ │ out │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ in │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 315 / 1224 │ │ │ │ │ │ │ │ │ │ Table 6.1: (continued) │ │ │ │ │ Pin │ │ │ │ │ 14 │ │ │ │ │ 15 │ │ │ │ │ @@ -17376,15 +17376,15 @@ │ │ │ │ │ direction. │ │ │ │ │ loadrt hal_parport cfg=”0x378 0xc000” │ │ │ │ │ │ │ │ │ │ Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their │ │ │ │ │ settings depending on which slot you put them into, so if you like to ’get under the hood’ and re-arrange │ │ │ │ │ things, be sure to check these values before you start LinuxCNC. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 316 / 1224 │ │ │ │ │ │ │ │ │ │ 6.1.3 Pins │ │ │ │ │ — parport.

.pin--out (bit) Drives a physical output pin. │ │ │ │ │ — parport.

.pin--in (bit) Tracks a physical input pin. │ │ │ │ │ — parport.

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

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

│ │ │ │ │ @@ -43348,15 +43348,15 @@ │ │ │ │ │ │ │ │ │ │ ”spindle-speed” │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example showing each tab selected. │ │ │ │ │ │ │ │ │ │ 927 / 1224 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 928 / 1224 │ │ │ │ │ │ │ │ │ │ Figure 12.29 – Simple Tabs Example │ │ │ │ │ │ │ │ │ │ 12.2 PyVCP Examples │ │ │ │ │ 12.2.1 AXIS │ │ │ │ │ @@ -43400,29 +43400,29 @@ │ │ │ │ │ │ │ │ │ │ The -Wn makes HAL Wait for name to be loaded before proceeding. │ │ │ │ │ The pyvcp -c makes PyVCP name the panel. │ │ │ │ │ The HAL pins from panel1.xml will be named btnpanel.<_pin name_>. │ │ │ │ │ The HAL pins from panel2.xml will be named sppanel.<_pin name_>. │ │ │ │ │ Make sure the loadusr line is before any nets that make use of the PyVCP pins. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 929 / 1224 │ │ │ │ │ │ │ │ │ │ 12.2.3 Jog Buttons Example │ │ │ │ │ In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be │ │ │ │ │ built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure │ │ │ │ │ our machine, then on the Advanced Configuration Options page we make a couple of selections to add │ │ │ │ │ a blank PyVCP panel as shown in the following figure. For this example we named the configuration │ │ │ │ │ pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard. │ │ │ │ │ │ │ │ │ │ Figure 12.30 – XYZ Wizard Configuration │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 930 / 1224 │ │ │ │ │ │ │ │ │ │ 12.2.3.1 Create the Widgets │ │ │ │ │ Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between │ │ │ │ │ the tags we will add the widgets for our panel. │ │ │ │ │ Look in the PyVCP Widgets Reference section of the manual for more detailed information on each │ │ │ │ │ @@ -43475,15 +43475,15 @@ │ │ │ │ │ ”z-plus” │ │ │ │ │ ”Z+” │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43508,15 +43508,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ After adding the above you now will have a PyVCP panel that looks like the following attached to the │ │ │ │ │ right side of AXIS. It looks nice but it does not do anything until you connect the buttons to halui. If │ │ │ │ │ you get an error when you try and run scroll down to the bottom of the pop up window and usually │ │ │ │ │ the error is a spelling or syntax error and it will be there. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 932 / 1224 │ │ │ │ │ │ │ │ │ │ 12.2.3.2 Make Connections │ │ │ │ │ To make the connections needed open up your custom_postgui.hal file and add the following. │ │ │ │ │ # connect the X PyVCP buttons │ │ │ │ │ net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus │ │ │ │ │ @@ -43566,15 +43566,15 @@ │ │ │ │ │ ”green” │ │ │ │ │ ”red” │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ RIDGE │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 933 / 1224 │ │ │ │ │ │ │ │ │ │ 2 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ RAISED │ │ │ │ │ 2 │ │ │ │ │
│ │ │ │ │ @@ -43464,15 +43464,15 @@ │ │ │ │ │ │ │ │ │ │ ”spindle-speed” │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above code produced this example showing each tab selected. │ │ │ │ │ │ │ │ │ │ 960 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 961 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.29: Simple Tabs Example │ │ │ │ │ │ │ │ │ │ 12.2 PyVCP Examples │ │ │ │ │ 12.2.1 AXIS │ │ │ │ │ @@ -43510,15 +43510,15 @@ │ │ │ │ │ • Add the links to HAL pins for your panel in the postgui.hal file to connect your PyVCP panel to │ │ │ │ │ LinuxCNC. │ │ │ │ │ The following is an example of a loadusr command to load two PyVCP panels and name each one so │ │ │ │ │ the connection names in HAL will be known. │ │ │ │ │ loadusr -Wn btnpanel pyvcp -c btnpanel panel1.xml │ │ │ │ │ loadusr -Wn sppanel pyvcp -c sppanel panel2.xml │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 962 / 1279 │ │ │ │ │ │ │ │ │ │ The -Wn makes HAL Wait for name to be loaded before proceeding. │ │ │ │ │ The pyvcp -c makes PyVCP name the panel. │ │ │ │ │ The HAL pins from panel1.xml will be named btnpanel.<_pin name_>. │ │ │ │ │ The HAL pins from panel2.xml will be named sppanel.<_pin name_>. │ │ │ │ │ @@ -43527,27 +43527,27 @@ │ │ │ │ │ 12.2.3 Jog Buttons Example │ │ │ │ │ In this example we will create a PyVCP panel with jog buttons for X, Y, and Z. This configuration will be │ │ │ │ │ built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure │ │ │ │ │ our machine, then on the Advanced Configuration Options page we make a couple of selections to add │ │ │ │ │ a blank PyVCP panel as shown in the following figure. For this example we named the configuration │ │ │ │ │ pyvcp_xyz on the Basic Machine Information page of the Stepconf Wizard. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 963 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.30: XYZ Wizard Configuration │ │ │ │ │ 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. │ │ │ │ │ 12.2.3.1 Create the Widgets │ │ │ │ │ Open up the custompanel.xml file by right clicking on it and selecting open with text editor. Between │ │ │ │ │ the tags we will add the widgets for our panel. │ │ │ │ │ Look in the PyVCP Widgets Reference section of the manual for more detailed information on each │ │ │ │ │ widget documentation des widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ In your custompanel.xml file we will add the description of the widgets. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ (”Helvetica”,16) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43601,15 +43601,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ 964 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 965 / 1279 │ │ │ │ │ │ │ │ │ │ RAISED │ │ │ │ │ 3 │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ The above gives us a PyVCP panel that looks like the following. │ │ │ │ │ │ │ │ │ │ 970 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 971 / 1279 │ │ │ │ │ │ │ │ │ │ 12.2.5.2 The Connections │ │ │ │ │ To make it work we add the following code to the custom_postgui.hal file. │ │ │ │ │ # display the rpm based on freq * rpm per hz │ │ │ │ │ loadrt mult2 │ │ │ │ │ @@ -43961,15 +43961,15 @@ │ │ │ │ │ custom.hal file whereas the rev led needs to use the spindle-rev bit. You can’t link the spindle-fwd bit │ │ │ │ │ twice so you use the signal that it was linked to. │ │ │ │ │ │ │ │ │ │ 12.2.6 Rapid to Home Button │ │ │ │ │ This example creates a button on the PyVCP side panel when pressed will send all the axis back to │ │ │ │ │ the home position. This example assumes you don’t have a PyVCP panel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 972 / 1279 │ │ │ │ │ │ │ │ │ │ In your configuration directory create the XML file. In this example it’s named rth.xml. In the rth.xml │ │ │ │ │ file add the following code to create the button. │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ @@ -43984,15 +43984,15 @@ │ │ │ │ │ PYVCP = rth.xml │ │ │ │ │ │ │ │ │ │ If you don’t have a [HALUI] section in the INI file create it and add the following MDI command. │ │ │ │ │ MDI_COMMAND = G53 G0 X0 Y0 Z0 │ │ │ │ │ │ │ │ │ │ Information about G53 and G0 G-codes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 973 / 1279 │ │ │ │ │ │ │ │ │ │ In the [HAL] section if you don’t have a post gui file add the following and create a file called postgui.hal. │ │ │ │ │ POSTGUI_HALFILE = postgui.hal │ │ │ │ │ │ │ │ │ │ In the postgui.hal file add the following code to link the PyVCP button to the MDI command. │ │ │ │ │ @@ -44022,15 +44022,15 @@ │ │ │ │ │ • Widget set: uses TkInter widgets. │ │ │ │ │ • User interface creation: ”edit XML file / run result / evaluate looks” cycle. │ │ │ │ │ • No support for embedding user-defined event handling. │ │ │ │ │ • No LinuxCNC interaction beyond HAL pin I/O supported. │ │ │ │ │ GladeVCP: │ │ │ │ │ • Widget set: relies on the GTK+ widget set. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 974 / 1279 │ │ │ │ │ │ │ │ │ │ • User interface creation: uses the Glade WYSIWYG user interface editor. │ │ │ │ │ • Any HAL pin change may be directed to call back into a user-defined Python event handler. │ │ │ │ │ • Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with userdefined handlers in Python. │ │ │ │ │ • Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a │ │ │ │ │ @@ -44054,31 +44054,31 @@ │ │ │ │ │ make setuid then run . ./scripts/rip-environment. More information about a git checkout is on the │ │ │ │ │ LinuxCNC wiki page. │ │ │ │ │ │ │ │ │ │ Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_panel.ini │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Run the same panel, but as a tab inside AXIS: │ │ │ │ │ $ cd configs/sim/axis/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_tab.ini │ │ │ │ │ │ │ │ │ │ 975 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ To run this panel inside Touchy: │ │ │ │ │ $ cd configs/sim/touchy/gladevcp │ │ │ │ │ $ linuxcnc gladevcp_touchy.ini │ │ │ │ │ │ │ │ │ │ 976 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 977 / 1279 │ │ │ │ │ │ │ │ │ │ Functionally these setups are identical - they only differ in screen real estate requirements and visibility. Since it is possible to run several GladeVCP components in parallel (with different HAL component │ │ │ │ │ names), mixed setups are possible as well - for instance a panel on the right hand side, and one or │ │ │ │ │ more tabs for less-frequently used parts of the interface. │ │ │ │ │ 12.3.2.1 Exploring the example panel │ │ │ │ │ @@ -44093,15 +44093,15 @@ │ │ │ │ │ The buttons in the Commands frame are MDI Action widgets - pressing them will execute an MDI │ │ │ │ │ command in the interpreter. The third button Execute Oword subroutine is an advanced example - it │ │ │ │ │ takes several HAL pin values from the Settings frame, and passes them as parameters to the Oword │ │ │ │ │ subroutine. The actual parameters received by the routine are displayed by (DEBUG, ) commands see ../../nc_files/oword.ngc for the subroutine body. │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 978 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.2.2 Exploring the User Interface description │ │ │ │ │ The user interface is created with the Glade UI editor - to explore it, you need to have Glade installed. │ │ │ │ │ To edit the user interface, run the command │ │ │ │ │ $ glade configs/axis/gladevcp/manual-example.ui │ │ │ │ │ @@ -44136,15 +44136,15 @@ │ │ │ │ │ Glade contains an internal Python interpreter, and only Python 3 is supported. This is true for Debian │ │ │ │ │ Bullseye, Ubuntu 21 and Mint 21 or later. Older versions will not work, you will get a Python error. │ │ │ │ │ 12.3.3.2 Running Glade to create a new user interface │ │ │ │ │ This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on │ │ │ │ │ Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on youtube. │ │ │ │ │ Either modify an existing UI component by running glade .ui or start a new one by just running the glade command from the shell. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 979 / 1279 │ │ │ │ │ │ │ │ │ │ • If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up │ │ │ │ │ with /scripts/rip-environment, otherwise Glade won’t find the LinuxCNC-specific │ │ │ │ │ widgets. │ │ │ │ │ • When asked for unsaved preferences, just accept the defaults and hit Close. │ │ │ │ │ @@ -44159,15 +44159,15 @@ │ │ │ │ │ File→Save as, give it a name like myui.ui and make sure it’s saved as GtkBuilder file (radio button │ │ │ │ │ left bottom corner in Save dialog). GladeVCP will also process the older libglade format correctly but │ │ │ │ │ there is no point in using it. The convention for GtkBuilder file extension is .ui. │ │ │ │ │ 12.3.3.3 Testing a panel │ │ │ │ │ You’re now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with: │ │ │ │ │ gladevcp myui.ui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 980 / 1279 │ │ │ │ │ │ │ │ │ │ GladeVCP creates a HAL component named like the basename of the UI file - myui in this case - unless │ │ │ │ │ overridden by the -c option. If running AXIS, just try Show HAL configuration and │ │ │ │ │ inspect its pins. │ │ │ │ │ You might wonder why widgets contained a HAL_Hbox or HAL_Table appear greyed out (inactive). │ │ │ │ │ @@ -44205,15 +44205,15 @@ │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel where PyVCP used to live: │ │ │ │ │ GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui │ │ │ │ │ │ │ │ │ │ The command line actually run by AXIS for the above is: │ │ │ │ │ halcmd loadusr -Wn example gladevcp -c example -x {XID} -u ./hitcounter.py ./manual-example ←.ui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 981 / 1279 │ │ │ │ │ │ │ │ │ │ The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located │ │ │ │ │ in the same directory as the INI file. You might have to copy them to you directory (alternatively, │ │ │ │ │ specify a correct absolute or relative path to the file(s)) │ │ │ │ │ │ │ │ │ │ @@ -44249,15 +44249,15 @@ │ │ │ │ │ 12.3.3.7 Integrating into Touchy │ │ │ │ │ To do add a GladeVCP tab to Touchy, edit your INI file as follows: │ │ │ │ │ [DISPLAY] │ │ │ │ │ # add GladeVCP panel as a tab │ │ │ │ │ EMBED_TAB_NAME=GladeVCP demo │ │ │ │ │ EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal ←./manual-example.ui │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 982 / 1279 │ │ │ │ │ │ │ │ │ │ [RS274NGC] │ │ │ │ │ # gladevcp Demo specific Oword subs live here │ │ │ │ │ SUBROUTINE_PATH = ../../nc_files/gladevcp_lib │ │ │ │ │ │ │ │ │ │ @@ -44295,15 +44295,15 @@ │ │ │ │ │ Force panel window to maximize. Together with the -g geometry option │ │ │ │ │ one can move the panel to a second monitor and force it to use all of the screen │ │ │ │ │ -t THEME:: │ │ │ │ │ Set gtk theme. Default is system theme. Different panels can have different themes. │ │ │ │ │ An example theme can be found in the https://wiki.linuxcnc.org/cgi-bin/wiki.pl? ←GTK_Themes[EMC Wiki]. │ │ │ │ │ -x XID:: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 983 / 1279 │ │ │ │ │ │ │ │ │ │ Re-parent GladeVCP into an existing window XID instead of creating a │ │ │ │ │ new top level window │ │ │ │ │ -u FILE:: │ │ │ │ │ Use File’s as additional user defined modules with handlers │ │ │ │ │ @@ -44338,15 +44338,15 @@ │ │ │ │ │ So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded │ │ │ │ │ fashion): │ │ │ │ │ • You cannot rely on the POSTGUI_HALFILE INI option causing the HAL commands being run at the │ │ │ │ │ right point in time, so comment that out in the INI file. │ │ │ │ │ • Explicitly pass the HAL command file which refers to GladeVCP pins to GladeVCP with the -H │ │ │ │ │ option (see previous section). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 984 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6 HAL Widget reference │ │ │ │ │ GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended │ │ │ │ │ to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used │ │ │ │ │ with the Glade user interface editor. With proper installation, the HAL Widgets should show up in │ │ │ │ │ @@ -44377,15 +44377,15 @@ │ │ │ │ │ Exceptions to this rule currently are: │ │ │ │ │ │ │ │ │ │ • HAL_Spinbutton and HAL_ComboBox, which have two pins: a -f (float) and a │ │ │ │ │ (s32) pin │ │ │ │ │ • HAL_ProgressBar, which has a -value input pin, and a -scale input │ │ │ │ │ pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 985 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6.2 Python attributes and methods of HAL Widgets │ │ │ │ │ HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the │ │ │ │ │ applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties │ │ │ │ │ and signals a HAL_Button has, lookup the description of GtkButton in the PyGtk Reference Manual. │ │ │ │ │ @@ -44423,15 +44423,15 @@ │ │ │ │ │ callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin’s │ │ │ │ │ value) like LED, Bar, VBar, Meter etc, support the hal-pin-changed signal which may cause a callback │ │ │ │ │ into your Python code when - well, a HAL pin changes its value. This means there’s no more need for │ │ │ │ │ permanent polling of HAL pin changes in your code, the widgets do that in the background and let │ │ │ │ │ you know. │ │ │ │ │ Here is an example how to set a hal-pin-changed signal for a HAL_LED in the Glade UI editor: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 986 / 1279 │ │ │ │ │ │ │ │ │ │ The example in configs/apps/gladevcp/complex shows how this is handled in Python. │ │ │ │ │ 12.3.6.5 Buttons │ │ │ │ │ This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton, │ │ │ │ │ HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical │ │ │ │ │ @@ -44442,15 +44442,15 @@ │ │ │ │ │ • Important common methods: set_active(), get_active() │ │ │ │ │ • Important properties: label, image │ │ │ │ │ │ │ │ │ │ Figure 12.31: Check button │ │ │ │ │ │ │ │ │ │ Figure 12.32: Radio buttons │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 987 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.33: Toggle button │ │ │ │ │ │ │ │ │ │ Defining radio button groups in Glade: │ │ │ │ │ • Decide on default active button. │ │ │ │ │ @@ -44473,15 +44473,15 @@ │ │ │ │ │ 12.3.6.7 SpinButton │ │ │ │ │ HAL SpinButton is derived from GtkSpinButton and holds two pins: │ │ │ │ │ -f │ │ │ │ │ out FLOAT pin │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 988 / 1279 │ │ │ │ │ │ │ │ │ │ To be useful, Spinbuttons need an adjustment value like scales, see above. │ │ │ │ │ │ │ │ │ │ Figure 12.35: Example SpinButton │ │ │ │ │ │ │ │ │ │ @@ -44515,15 +44515,15 @@ │ │ │ │ │ Set the content of the label which may be shown over the counts value. │ │ │ │ │ If the label given is longer than 15 Characters, it will be cut to 15 Characters. │ │ │ │ │ default = blank │ │ │ │ │ center_color │ │ │ │ │ This allows one to change the color of the wheel. It uses a GDK color string. │ │ │ │ │ default = #bdefbdefbdef (gray) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 989 / 1279 │ │ │ │ │ │ │ │ │ │ count_type_shown │ │ │ │ │ There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts. │ │ │ │ │ default = 1 │ │ │ │ │ • count is based on the CPR selected - it will count positive and negative. It is available as a s32 │ │ │ │ │ @@ -44564,15 +44564,15 @@ │ │ │ │ │ There are two GObject signals emitted: │ │ │ │ │ • count_changed │ │ │ │ │ Emitted when the widget’s count changes eg. from being wheel scrolled. │ │ │ │ │ • scale_changed │ │ │ │ │ Emitted when the widget’s scale changes eg. from double clicking. │ │ │ │ │ Connect to these like so: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 990 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].connect(’count_changed’, [count function name]) │ │ │ │ │ [widget name].connect(’scale_changed’, [scale function name]) │ │ │ │ │ │ │ │ │ │ The callback functions would use this pattern: │ │ │ │ │ @@ -44594,15 +44594,15 @@ │ │ │ │ │ may loose counts turning to fast. It is recommended to use the mouse wheel, and only for very rough │ │ │ │ │ movements the drag and drop way. │ │ │ │ │ jogwheel exports it’s count value as HAL pin: │ │ │ │ │ -s │ │ │ │ │ out s32 pin │ │ │ │ │ jogwheel has the following properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 991 / 1279 │ │ │ │ │ │ │ │ │ │ size │ │ │ │ │ Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200 │ │ │ │ │ cpr │ │ │ │ │ Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40 │ │ │ │ │ @@ -44625,15 +44625,15 @@ │ │ │ │ │ Sets the label content with ”string” │ │ │ │ │ │ │ │ │ │ Figure 12.37: Example JogWheel │ │ │ │ │ │ │ │ │ │ 12.3.6.10 Speed Control │ │ │ │ │ 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. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 992 / 1279 │ │ │ │ │ │ │ │ │ │ The value is controlled with two button to increase or decrease the value. The increment will change │ │ │ │ │ as long a button is pressed. The value of each increment as well as the time between two changes │ │ │ │ │ can be set using the widget properties. │ │ │ │ │ speedcontrol offers some HAL pin: │ │ │ │ │ @@ -44678,15 +44678,15 @@ │ │ │ │ │ Float │ │ │ │ │ The max allowed value. │ │ │ │ │ Allowed values are 0.001 to 99999.0. │ │ │ │ │ Default is 100.0. │ │ │ │ │ If you change this value, the increment will be reset to default, so it might be necessary to set │ │ │ │ │ afterwards a new increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 993 / 1279 │ │ │ │ │ │ │ │ │ │ increment │ │ │ │ │ Float │ │ │ │ │ Sets the applied increment per mouse click. │ │ │ │ │ Allowed values are 0.001 to 99999.0 and -1. │ │ │ │ │ @@ -44732,15 +44732,15 @@ │ │ │ │ │ • [widget name].get_value() │ │ │ │ │ Will return the counts value as float │ │ │ │ │ • [widget name].set_value(float(value)) │ │ │ │ │ Sets the widget to the commanded value │ │ │ │ │ • [widget name].set_digits(int(value)) │ │ │ │ │ Sets the digits of the value to be used │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 994 / 1279 │ │ │ │ │ │ │ │ │ │ • [widget name].hide_button(bool(value)) │ │ │ │ │ Hide or show the button │ │ │ │ │ │ │ │ │ │ Figure 12.38: Example Speedcontrol │ │ │ │ │ @@ -44771,15 +44771,15 @@ │ │ │ │ │ If the pin is low then child widgets are visible which is the default state. │ │ │ │ │ HAL_Table and HAL_Hbox │ │ │ │ │ Have one HAL BIT input pin which controls if their child widgets are sensitive or not. │ │ │ │ │ Pin: , . │ │ │ │ │ in bit pin │ │ │ │ │ If the pin is low then child widgets are inactive which is the default state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 995 / 1279 │ │ │ │ │ │ │ │ │ │ State_Sensitive_Table │ │ │ │ │ Responds to the state to LinuxCNC’s interpreter. │ │ │ │ │ Optionally selectable to respond to must-be-all-homed, must-be-on and must-be-idle. │ │ │ │ │ You can combine them. It will always be insensitive at Estop. │ │ │ │ │ @@ -44818,15 +44818,15 @@ │ │ │ │ │ led_blink_rate │ │ │ │ │ If set and LED is ON then it’s blinking. │ │ │ │ │ Blink period is equal to ”led_blink_rate” specified in milliseconds. │ │ │ │ │ create_hal_pin │ │ │ │ │ Select/deselect creation of a HAL pin to control the LED. │ │ │ │ │ With no HAL pin created LED can be controlled with a Python function. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 996 / 1279 │ │ │ │ │ │ │ │ │ │ As an input widget, LED also supports the hal-pin-changed signal. If you want to get a notification │ │ │ │ │ in your code when the LED’s HAL pin was changed, then connect this signal to a handler, for example │ │ │ │ │ on_led_pin_changed and provide the handler as follows: │ │ │ │ │ def on_led_pin_changed(self,hal_led,data=None): │ │ │ │ │ @@ -44858,15 +44858,15 @@ │ │ │ │ │ Yellow zone lower limit │ │ │ │ │ red_limit │ │ │ │ │ Red zone lower limit │ │ │ │ │ text_template │ │ │ │ │ Text template to display the current value of the pin. │ │ │ │ │ Python formatting may be used for dict {”value”:value}. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 997 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.40: Example HAL_ProgressBar │ │ │ │ │ │ │ │ │ │ 12.3.6.15 ComboBox │ │ │ │ │ HAL_ComboBox is derived from gtk.ComboBox. It enables choice of a value from a dropdown list. │ │ │ │ │ @@ -44896,15 +44896,15 @@ │ │ │ │ │ invert │ │ │ │ │ Swap min and max direction. │ │ │ │ │ An inverted HBar grows from right to left, an inverted VBar from top to bottom. │ │ │ │ │ min, max │ │ │ │ │ Minimum and maximum value of desired range. It is not an error condition if the current value │ │ │ │ │ is outside this range. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 998 / 1279 │ │ │ │ │ │ │ │ │ │ show limits │ │ │ │ │ Used to select/deselect the limits text on bar. │ │ │ │ │ zero │ │ │ │ │ Zero point of range. │ │ │ │ │ @@ -44942,15 +44942,15 @@ │ │ │ │ │ to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border │ │ │ │ │ and zone 2 from last border to 1. │ │ │ │ │ Borders are set as fractions. │ │ │ │ │ Valid values range from 0 to 1. │ │ │ │ │ │ │ │ │ │ Figure 12.41: Horizontal bar │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 999 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.42: Vertical bar │ │ │ │ │ │ │ │ │ │ 12.3.6.17 Meter │ │ │ │ │ HAL_Meter is a widget similar to PyVCP meter - it represents a float value. │ │ │ │ │ @@ -44979,15 +44979,15 @@ │ │ │ │ │ z0_border, z1_border │ │ │ │ │ Define up bounds of color zones. │ │ │ │ │ By default only one zone is enabled. If you want more then one zone set z0_border and z1_border │ │ │ │ │ to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second │ │ │ │ │ border and zone 2 from last border to max. │ │ │ │ │ Borders are set as values in range min-max. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1000 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.43: Example HAL Meters │ │ │ │ │ │ │ │ │ │ 12.3.6.18 HAL_Graph │ │ │ │ │ This widget is for plotting values over time. │ │ │ │ │ @@ -45012,15 +45012,15 @@ │ │ │ │ │ show rapids │ │ │ │ │ This tells the plotter to show the rapid moves. │ │ │ │ │ Default = true. │ │ │ │ │ show DTG │ │ │ │ │ This selects the DRO to display the distance-to-go value. │ │ │ │ │ Default = true. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1001 / 1279 │ │ │ │ │ │ │ │ │ │ show relative │ │ │ │ │ This selects the DRO to show values relative to user system or machine coordinates. │ │ │ │ │ Default = true. │ │ │ │ │ show live plot │ │ │ │ │ @@ -45064,15 +45064,15 @@ │ │ │ │ │ Mouse button handling: leads to different functions of the button: │ │ │ │ │ • 0 = default: left rotate, middle move, right zoom │ │ │ │ │ • 1 = left zoom, middle move, right rotate │ │ │ │ │ • 2 = left move, middle rotate, right zoom │ │ │ │ │ • 3 = left zoom, middle rotate, right move │ │ │ │ │ • 4 = left move, middle zoom, right rotate │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1002 / 1279 │ │ │ │ │ │ │ │ │ │ • 5 = left rotate, middle zoom, right move │ │ │ │ │ • 6 = left move, middle zoom, right zoom │ │ │ │ │ Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ @@ -45110,15 +45110,15 @@ │ │ │ │ │ • If you set all the plotting options false but show_offsets true you get an offsets page instead of │ │ │ │ │ a graphics plot. │ │ │ │ │ • If you get the zoom distance before changing the view then reset the zoom distance, it’s much │ │ │ │ │ more user friendly. │ │ │ │ │ • if you select an element in the preview, the selected element will be used as rotation center │ │ │ │ │ point │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.44: Gremlin Example │ │ │ │ │ │ │ │ │ │ 12.3.6.20 HAL_Offset │ │ │ │ │ The HAL_Offset widget is used to display the offset of a single axis. │ │ │ │ │ HAL_Offset has the following properties: │ │ │ │ │ Joint Number │ │ │ │ │ @@ -45136,15 +45136,15 @@ │ │ │ │ │ The DRO widget is used to display the current axis position. │ │ │ │ │ It has the following properties: │ │ │ │ │ Actual Position │ │ │ │ │ select actual (feedback) position or commanded position. │ │ │ │ │ │ │ │ │ │ 1003 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1004 / 1279 │ │ │ │ │ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ @@ -45182,15 +45182,15 @@ │ │ │ │ │ By clicking on the DRO the Order of the DRO will toggle around. │ │ │ │ │ In Relative Mode the actual coordinate system will be displayed. │ │ │ │ │ Combi_DRO has the following properties: │ │ │ │ │ joint_number │ │ │ │ │ Used to select which axis (technically which joint) is displayed. │ │ │ │ │ On a trivialkins machine (mill, lathe, router) axis vrs. joint number are: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1005 / 1279 │ │ │ │ │ │ │ │ │ │ 0:X 1:Y 2:Z etc. │ │ │ │ │ actual │ │ │ │ │ Select actual (feedback) or commanded position. │ │ │ │ │ metric_units │ │ │ │ │ @@ -45235,15 +45235,15 @@ │ │ │ │ │ cycle_time │ │ │ │ │ The time the DRO waits between two polls. │ │ │ │ │ this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis │ │ │ │ │ config, to avoid, that the DRO slows down the main application too much. │ │ │ │ │ The value must be an integer in the range of 100 to 1000. FIXME unit=ms ? │ │ │ │ │ Default is 150. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1006 / 1279 │ │ │ │ │ │ │ │ │ │ Using GObject to set the above listed properties: │ │ │ │ │ [widget name].set_property(property, value) │ │ │ │ │ │ │ │ │ │ There are several Python methods to control the widget: │ │ │ │ │ @@ -45283,15 +45283,15 @@ │ │ │ │ │ – Absolute = the machine coordinates, depends on the actual property will give actual or commanded position. │ │ │ │ │ – Relative = will be the coordinates of the actual coordinate system. │ │ │ │ │ – DTG = the distance to go. │ │ │ │ │ Will mostly be 0, as this function should not be used while the machine is moving, because of time │ │ │ │ │ delays. │ │ │ │ │ The widget will emit the following signals: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1007 / 1279 │ │ │ │ │ │ │ │ │ │ • clicked │ │ │ │ │ This signal is emitted, when the user has clicked on the Combi_DRO widget. │ │ │ │ │ It will send the following data: │ │ │ │ │ – widget = widget object │ │ │ │ │ @@ -45321,15 +45321,15 @@ │ │ │ │ │ • [widget name].system │ │ │ │ │ The actual system, as mentioned in the system_changed signal. │ │ │ │ │ • [widget name].homed │ │ │ │ │ True if the joint is homed. │ │ │ │ │ • [widget name].machine_units │ │ │ │ │ 0 if Imperial, 1 if Metric. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1008 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.45: Example: Three Combi_DRO in a window │ │ │ │ │ X = Relative Mode │ │ │ │ │ Y = Absolute Mode │ │ │ │ │ Z = DTG Mode │ │ │ │ │ @@ -45354,15 +45354,15 @@ │ │ │ │ │ Sets the file filter for the objects to be shown. │ │ │ │ │ Must be a string containing a comma separated list of extensions to be shown. │ │ │ │ │ Default is ”ngc,py”. │ │ │ │ │ sortorder │ │ │ │ │ Sets the sorting order of the displayed icon. │ │ │ │ │ Must be an integer value from 0 to 3, where: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1009 / 1279 │ │ │ │ │ │ │ │ │ │ • 0 = ASCENDING (sorted according to file names) │ │ │ │ │ • 1 = DESCENDING (sorted according to file names) │ │ │ │ │ • 2 = FOLDERFIRST (show the folders first, then the files), default │ │ │ │ │ • 3 = FILEFIRST (show the files first, then the folders) │ │ │ │ │ @@ -45406,15 +45406,15 @@ │ │ │ │ │ [widget name].btn_sel_next.emit(”clicked”) │ │ │ │ │ [widget name].btn_get_selected.emit(”clicked”) │ │ │ │ │ [widget name].btn_dir_up.emit(”clicked”) │ │ │ │ │ [widget name].btn_exit.emit(”clicked”) │ │ │ │ │ │ │ │ │ │ The widget will emit the following signals: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1010 / 1279 │ │ │ │ │ │ │ │ │ │ • selected │ │ │ │ │ This signal is emitted when the user selects an icon. │ │ │ │ │ It will return a string containing a file path if a file has been selected, or None if a directory has been │ │ │ │ │ selected. │ │ │ │ │ @@ -45429,15 +45429,15 @@ │ │ │ │ │ – state is a boolean and will be True or False. │ │ │ │ │ • exit │ │ │ │ │ This signal is emitted when the exit button has been pressed to close the IconView. │ │ │ │ │ Mostly needed if the application is started as stand alone. │ │ │ │ │ │ │ │ │ │ Figure 12.46: Iconview Example │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1011 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.6.24 Calculator widget │ │ │ │ │ This is a simple calculator widget, that can be used for numerical input. │ │ │ │ │ You can preset the display and retrieve the result or that preset value. │ │ │ │ │ calculator has the following properties: │ │ │ │ │ @@ -45470,15 +45470,15 @@ │ │ │ │ │ │ │ │ │ │ tooleditor has the following properties: │ │ │ │ │ Hidden Columns │ │ │ │ │ This will hide the given columns. │ │ │ │ │ The columns are designated (in order) as such: s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q. │ │ │ │ │ You can hide any number of columns including the select and comments. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1012 / 1279 │ │ │ │ │ │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ [widget name].set_properties(’hide_columns’,’uvwijq’) │ │ │ │ │ │ │ │ │ │ @@ -45517,15 +45517,15 @@ │ │ │ │ │ Convenience method to hide buttons. │ │ │ │ │ You must call this after show_all(). │ │ │ │ │ • [widget name].get_selected_tool() │ │ │ │ │ Return the user selected (highlighted) tool number. │ │ │ │ │ • [widget name].set_selected_tool(toolnumber) │ │ │ │ │ Selects (highlights) the requested tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1013 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.47: Tooleditor Example │ │ │ │ │ │ │ │ │ │ 12.3.6.26 Offsetpage │ │ │ │ │ The Offsetpage widget is used to display/edit the offsets of all the axes. │ │ │ │ │ @@ -45550,15 +45550,15 @@ │ │ │ │ │ Text template for metric units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ Text template for imperial units │ │ │ │ │ You can use Python formatting to display the position with different precision. │ │ │ │ │ There a couple ways to directly control the widget using Python. │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1014 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”highlight_color”,gdk.Color(’blue’)) │ │ │ │ │ [widget name].set_property(”foreground_color”,gdk.Color(’black’)) │ │ │ │ │ [widget name].set_property(”hide_columns”,”xyzabcuvwt”) │ │ │ │ │ [widget name].set_property(”hide_rows”,”123456789abc”) │ │ │ │ │ @@ -45584,15 +45584,15 @@ │ │ │ │ │ This is a list of a list of offset-name/user-name pairs. │ │ │ │ │ The default text is the same as the offset name. │ │ │ │ │ • [widget name].get_names() │ │ │ │ │ This returns a list of a list of row-keyword/user-name pairs. │ │ │ │ │ The user name column is editable, so saving this list is user friendly. │ │ │ │ │ See set_names above. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1015 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.48: Offsetpage Example │ │ │ │ │ │ │ │ │ │ 12.3.6.27 HAL_sourceview widget │ │ │ │ │ │ │ │ │ │ @@ -45613,15 +45613,15 @@ │ │ │ │ │ Sets the line to highlight. │ │ │ │ │ Uses the sourceview line numbers. │ │ │ │ │ • [widget name].get_line_number() │ │ │ │ │ Returns the currently highlighted line. │ │ │ │ │ • [widget name].line_up() │ │ │ │ │ Moves the highlighted line up one line. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1016 / 1279 │ │ │ │ │ │ │ │ │ │ • [widget name].line_down() │ │ │ │ │ Moves the highlighted line down one line. │ │ │ │ │ • [widget name].load_file(’filename’) │ │ │ │ │ Loads a file. │ │ │ │ │ @@ -45643,15 +45643,15 @@ │ │ │ │ │ use_double_click │ │ │ │ │ Boolean, True enables the mouse double click feature and a double click on an entry will submit │ │ │ │ │ that command. │ │ │ │ │ It is not recommended to use this feature on real machines, as a double click on a wrong entry │ │ │ │ │ may cause dangerous situations │ │ │ │ │ Using goobject to set the above listed properties: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1017 / 1279 │ │ │ │ │ │ │ │ │ │ [widget name].set_property(”font_size_tree”,10) │ │ │ │ │ [widget name].set_property(”font_size_entry”,20) │ │ │ │ │ [widget name].set_property(”use_double_click”,False) │ │ │ │ │ │ │ │ │ │ @@ -45664,15 +45664,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.50: HAL widgets in a bitmap Example │ │ │ │ │ │ │ │ │ │ 12.3.7 Action Widgets Reference │ │ │ │ │ GladeVCP includes a collection of ”canned actions” called VCP Action Widgets for the Glade user │ │ │ │ │ interface editor. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1018 / 1279 │ │ │ │ │ │ │ │ │ │ Other than HAL widgets, which interact with HAL pins, VCP Actions interact with LinuxCNC and the │ │ │ │ │ G-code interpreter. │ │ │ │ │ │ │ │ │ │ VCP Action Widgets are derived from the Gtk.Action widget. │ │ │ │ │ @@ -45695,15 +45695,15 @@ │ │ │ │ │ The command string may use special keywords to access important functions. │ │ │ │ │ • ACTION for access to the ACTION command library. │ │ │ │ │ • GSTAT for access to the Gstat status message library. │ │ │ │ │ • INFO for access to collected data from the INI file. │ │ │ │ │ • HAL for access to the HAL linuxcnc Python module │ │ │ │ │ • STAT for access to LinuxCNC’s raw status via the LinuxCNC Python module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1019 / 1279 │ │ │ │ │ │ │ │ │ │ • CMD for access to LinuxCNC’s commands via the LinuxCNC Python module. │ │ │ │ │ • EXT for access to the handler file functions if available. │ │ │ │ │ • linuxcnc for access to the LinuxCNC Python module. │ │ │ │ │ • self for access to the widget instance. │ │ │ │ │ @@ -45737,15 +45737,15 @@ │ │ │ │ │ that the requested operation is running: │ │ │ │ │ • The Run toggle sends an AUTO_RUN command and waits in the pressed state until the interpreter is │ │ │ │ │ idle again. │ │ │ │ │ • The Stop toggle is inactive until the interpreter enters the active state (is running G-code) and then │ │ │ │ │ allows user to send AUTO_ABORT command. │ │ │ │ │ • The MDI toggle sends given MDI command and waits for its completion in pressed inactive state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1020 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.7.4 The Action_MDI Toggle and Action_MDI widgets │ │ │ │ │ These widgets provide a means to execute arbitrary MDI commands. │ │ │ │ │ The Action_MDI widget does not wait for command completion as the Action_MDI Toggle does, which │ │ │ │ │ remains disabled until command complete. │ │ │ │ │ @@ -45764,15 +45764,15 @@ │ │ │ │ │ 12.3.7.6 Parameter passing with Action_MDI and ToggleAction_MDI widgets │ │ │ │ │ Optionally, MDI command strings may have parameters substituted before they are passed to the interpreter. Parameters currently may be names of HAL pins in the GladeVCP component. This is how it │ │ │ │ │ works: │ │ │ │ │ • assume you have a HAL SpinBox named speed, and you want to pass it’s current value as a parameter in an MDI command. │ │ │ │ │ • The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description). │ │ │ │ │ • To substitute this value in the MDI command, insert the HAL pin name enclosed like so: ${pin-name} │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1021 / 1279 │ │ │ │ │ │ │ │ │ │ • for the above HAL SpinBox, we could use (MSG, ”The speed is: ${speed-f}”) just to show what’s │ │ │ │ │ happening. │ │ │ │ │ The example UI file is configs/apps/gladevcp/mdi-command-example/speed.ui. Here’s what you │ │ │ │ │ get when running it: │ │ │ │ │ @@ -45788,15 +45788,15 @@ │ │ │ │ │ Figure 12.54: Action_MDI Advanced Example │ │ │ │ │ │ │ │ │ │ 12.3.7.8 Preparing for an MDI Action, and cleaning up afterwards │ │ │ │ │ The LinuxCNC G-code interpreter has a single global set of variables, like feed, spindle speed, relative/absolute mode and others. If you use G-code commands or O-word subs, some of these variables │ │ │ │ │ might get changed by the command or subroutine - for example, a probing subroutine will very likely │ │ │ │ │ set the feed value quite low. With no further precautions, your previous feed setting will be overwritten by the probing subroutine’s value. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1022 / 1279 │ │ │ │ │ │ │ │ │ │ To deal with this surprising and undesirable side effect of a given O-word subroutine or G-code statement executed with an LinuxCNC ToggleAction_MDI, you might associate pre-MDI and post-MDI handlers with a given LinuxCNC ToggleAction_MDI. These handlers are optional and provide a way to save │ │ │ │ │ any state before executing the MDI Action, and to restore it to previous values afterwards. The signal │ │ │ │ │ names are mdi-command-start and mdi-command-stop; the handler names can be set in Glade like │ │ │ │ │ any other handler. │ │ │ │ │ @@ -45833,15 +45833,15 @@ │ │ │ │ │ • mode-related: │ │ │ │ │ – mode-manual: emitted when LinuxCNC enters manual mode, │ │ │ │ │ – mode-mdi: emitted when LinuxCNC enters MDI mode, │ │ │ │ │ – mode-auto: emitted when LinuxCNC enters automatic mode, │ │ │ │ │ • interpreter-related: emitted when the G-code interpreter changes into that mode │ │ │ │ │ – interp-run │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1023 / 1279 │ │ │ │ │ │ │ │ │ │ – interp-idle │ │ │ │ │ – interp-paused │ │ │ │ │ – interp-reading │ │ │ │ │ – interp-waiting │ │ │ │ │ @@ -45880,15 +45880,15 @@ │ │ │ │ │ print(INFO.MACHINE_IS_METRIC) │ │ │ │ │ ACTION.SET_ERROR_MESSAGE(’Something went wrong’) │ │ │ │ │ │ │ │ │ │ More information can be found here: GladeVCP Libraries modules There is a sample configuration │ │ │ │ │ that demonstrates using the core library with GladeVCP’s action Python widgets and with a Python │ │ │ │ │ handler file. Try loading sim/axis/gladevcp/gladevcp_panel_tester. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1024 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.8.3 An example: adding custom user callbacks in Python │ │ │ │ │ This is just a minimal example to convey the idea - details are laid out in the rest of this section. │ │ │ │ │ GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in │ │ │ │ │ Python. This could be used, among others, to execute MDI commands. Here’s how you do it: │ │ │ │ │ @@ -45923,15 +45923,15 @@ │ │ │ │ │ The overall approach is as follows: │ │ │ │ │ • Design your UI with Glade, and set signal handlers where you want actions associated with a widget. │ │ │ │ │ • Write a Python module which contains callable objects (see handler models below). │ │ │ │ │ • Pass your module’s path name to GladeVCP with the -u option. │ │ │ │ │ • GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree. │ │ │ │ │ • The main event loop is run. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1025 / 1279 │ │ │ │ │ │ │ │ │ │ For simple tasks it’s sufficient to define functions named after the Glade signal handlers. These will be │ │ │ │ │ called when the corresponding event happens in the widget tree. Here’s a trivial example - it assumes │ │ │ │ │ that the pressed signal of a Gtk Button or HAL Button is linked to a callback called on_button_press: │ │ │ │ │ nhits = 0 │ │ │ │ │ @@ -45977,15 +45977,15 @@ │ │ │ │ │ self.active = False │ │ │ │ │ # connect to client-events from the host GUI │ │ │ │ │ def on_map_event(self, widget, data=None): │ │ │ │ │ top = widget.get_toplevel() │ │ │ │ │ print(”map event”) │ │ │ │ │ top.connect(’client-event’, self.event) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1026 / 1279 │ │ │ │ │ │ │ │ │ │ If during module inspection GladeVCP finds a function get_handlers, it calls it as follows: │ │ │ │ │ get_handlers(halcomp,builder,useropts) │ │ │ │ │ │ │ │ │ │ The arguments are: │ │ │ │ │ @@ -46020,15 +46020,15 @@ │ │ │ │ │ screen). And the HAL component isn’t ready as well, so its unsafe to access pins values in your │ │ │ │ │ __init__() method. │ │ │ │ │ If you want to have a callback to execute at program start after it is safe to access HAL pins, then a │ │ │ │ │ connect a handler to the realize signal of the top level window1 (which might be its only real purpose). │ │ │ │ │ At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about │ │ │ │ │ to enter the Gtk main loop. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1027 / 1279 │ │ │ │ │ │ │ │ │ │ 12.3.8.7 Multiple callbacks with the same name │ │ │ │ │ Within a class, method names must be unique. However, it is OK to have multiple class instances │ │ │ │ │ passed to GladeVCP by get_handlers() with identically named methods. When the corresponding │ │ │ │ │ signal occurs, these methods will be called in definition order - module by module, and within a module, │ │ │ │ │ @@ -46068,15 +46068,15 @@ │ │ │ │ │ are saved and to be restored. In the case of signature mismatch, a new INI file with default settings │ │ │ │ │ is generated. │ │ │ │ │ 12.3.8.10 Using persistent variables │ │ │ │ │ If you want any of Gtk widget state, HAL widgets output pin’s values and/or class attributes of your │ │ │ │ │ handler class to be retained across invocations, proceed as follows: │ │ │ │ │ • Import the gladevcp.persistence module. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1028 / 1279 │ │ │ │ │ │ │ │ │ │ • Decide which instance attributes, and their default values you want to have retained, if any. │ │ │ │ │ • Decide which widgets should have their state retained. │ │ │ │ │ • Describe these decisions in your handler class’ \__init()__ method through a nested dictionary │ │ │ │ │ as follows: │ │ │ │ │ @@ -46117,15 +46117,15 @@ │ │ │ │ │ ini.restore_state(obj) │ │ │ │ │ Restore HAL out pins and obj’s attributes as saved/initialized to default as above. │ │ │ │ │ 12.3.8.11 Saving the state on GladeVCP shutdown │ │ │ │ │ To save the widget and/or variable state on exit, proceed as follows: │ │ │ │ │ • Select some interior widget (type is not important, for instance a table). │ │ │ │ │ • In the Signals tab, select GtkObject. It should show a destroy signal in the first column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1029 / 1279 │ │ │ │ │ │ │ │ │ │ • Add the handler name, e.g. on_destroy to the second column. │ │ │ │ │ • Add a Python handler like below: │ │ │ │ │ import gtk │ │ │ │ │ ... │ │ │ │ │ @@ -46164,15 +46164,15 @@ │ │ │ │ │ 12.3.8.14 Adding HAL pins │ │ │ │ │ If you need HAL pins which are not associated with a specific HAL widget, add them as follows: │ │ │ │ │ import hal_glib │ │ │ │ │ ... │ │ │ │ │ # in your handler class __init__(): │ │ │ │ │ self.example_trigger = hal_glib.GPin(halcomp.newpin(’example-trigger’, hal.HAL_BIT, hal. ←HAL_IN)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1030 / 1279 │ │ │ │ │ │ │ │ │ │ To get a callback when this pin’s value changes, associate a value-change callback with this pin, add: │ │ │ │ │ self.example_trigger.connect(’value-changed’, self._on_example_trigger_change) │ │ │ │ │ │ │ │ │ │ and define a callback method (or function, in this case leave out the self parameter): │ │ │ │ │ @@ -46214,15 +46214,15 @@ │ │ │ │ │ self.max_value = hal_glib.GPin(halcomp.newpin(’max-value’, hal.HAL_FLOAT, hal. ←HAL_IN)) │ │ │ │ │ self.max_value.connect(’value-changed’, self._on_max_value_change) │ │ │ │ │ inifile = linuxcnc.ini(os.getenv(”INI_FILE_NAME”)) │ │ │ │ │ mmin = float(inifile.find(”METER”, ”MIN”) or 0.0) │ │ │ │ │ self.meter = self.builder.get_object(’meter’) │ │ │ │ │ self.meter.min = mmin │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1031 / 1279 │ │ │ │ │ │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,builder,useropts)] │ │ │ │ │ │ │ │ │ │ 12.3.8.17 Examples, and rolling your own GladeVCP application │ │ │ │ │ @@ -46258,15 +46258,15 @@ │ │ │ │ │ that works fine. It doesn’t work for window1. │ │ │ │ │ 5. I want to set the background color or text of a HAL_Label widget depending on its HAL pin value │ │ │ │ │ See the example in configs/apps/gladevcp/colored-label. Setting the background color of a GtkLabel widget (and HAL_Label is derived from GtkLabel) is a bit tricky. The GtkLabel widget has │ │ │ │ │ no window object of its own for performance reasons, and only window objects can have a background color. The solution is to enclose the Label in an EventBox container, which has a window │ │ │ │ │ but is otherwise invisible - see the coloredlabel.ui file. │ │ │ │ │ 6. I defined a hal_spinbutton widget in Glade, and set a default value property in the corresponding adjustment. It comes up with zero? │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1032 / 1279 │ │ │ │ │ │ │ │ │ │ This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely │ │ │ │ │ to be the case for all widgets using adjustment. The workaround mentioned for instance in │ │ │ │ │ http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin │ │ │ │ │ value, it is better to set it explicitly in an on_realize signal handler during widget creation. See │ │ │ │ │ @@ -46307,15 +46307,15 @@ │ │ │ │ │ Support is provided for independently installed GladeVCP applications that conform to system directory placements as defined by the LINUXCNC_AUX_GLADEVCP and LINUXCNC_AUX_EXAMPLES │ │ │ │ │ items reported by the script linuxcnc_var: │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_GLADEVCP │ │ │ │ │ /usr/share/linuxcnc/aux_gladevcp │ │ │ │ │ $ linuxcnc_var LINUXCNC_AUX_EXAMPLES │ │ │ │ │ /usr/share/linuxcnc/aux_examples │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1033 / 1279 │ │ │ │ │ │ │ │ │ │ The system directory defined by LINUXCNC_AUX_GLADEVCP (/usr/share/linuxcnc/aux_gladevcp) specifies the location for a GladeVCP-compatible Python file(s) and related subdirectories. The Python file │ │ │ │ │ is imported at GladeVCP startup and made available to subsequent GladeVCP applications including │ │ │ │ │ embedded usage in supporting GUIs. │ │ │ │ │ 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 │ │ │ │ │ @@ -46353,15 +46353,15 @@ │ │ │ │ │ MACRO_PATH_LIST = [] │ │ │ │ │ INI_MACROS = self.INI.findall(”DISPLAY”, ”MACRO”) │ │ │ │ │ IMAGE_PATH = IMAGEDIR │ │ │ │ │ LIB_PATH = os.path.join(HOME, ”share”,”qtvcp”) │ │ │ │ │ PROGRAM_FILTERS = None │ │ │ │ │ PARAMETER_FILE = None │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ MACHINE_IS_LATHE = False │ │ │ │ │ MACHINE_IS_METRIC = False │ │ │ │ │ MACHINE_UNIT_CONVERSION = 1 │ │ │ │ │ MACHINE_UNIT_CONVERSION_9 = [1]*9 │ │ │ │ │ TRAJ_COORDINATES = │ │ │ │ │ JOINT_COUNT = int(self.INI.find(”KINS”,”JOINTS”)or 0) │ │ │ │ │ @@ -46414,15 +46414,15 @@ │ │ │ │ │ (heading: [EMCIO], title:TOOL_TABLE) │ │ │ │ │ (heading: [HAL], title: POSTGUI_HALFILE) │ │ │ │ │ │ │ │ │ │ There are some helper functions - mostly used for widget support │ │ │ │ │ │ │ │ │ │ 1034 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1035 / 1279 │ │ │ │ │ │ │ │ │ │ get_error_safe_setting(self, heading, detail, default=None) │ │ │ │ │ convert_metric_to_machine(data) │ │ │ │ │ convert_imperial_to_machine(data) │ │ │ │ │ convert_9_metric_to_machine(data) │ │ │ │ │ @@ -46465,15 +46465,15 @@ │ │ │ │ │ ACTION = Action() │ │ │ │ │ │ │ │ │ │ To access Action commands use general syntax such as these: │ │ │ │ │ ACTION.SET_ESTOP_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_STATE(state) │ │ │ │ │ ACTION.SET_MACHINE_HOMING(joint) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SET_MACHINE_UNHOMED(joint) │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.SET_MDI_MODE() │ │ │ │ │ ACTION.SET_MANUAL_MODE() │ │ │ │ │ ACTION.SET_AUTO_MODE() │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ @@ -46514,15 +46514,15 @@ │ │ │ │ │ ACTION.SET_FLOOD_OFF() │ │ │ │ │ ACTION.TOGGLE_MIST() │ │ │ │ │ ACTION.SET_MIST_ON() │ │ │ │ │ ACTION.SET_MIST_OFF() │ │ │ │ │ │ │ │ │ │ 1036 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1037 / 1279 │ │ │ │ │ │ │ │ │ │ ACTION.RELOAD_TOOLTABLE() │ │ │ │ │ ACTION.UPDATE_VAR_FILE() │ │ │ │ │ ACTION.TOGGLE_OPTIONAL_STOP() │ │ │ │ │ ACTION.SET_OPTIONAL_STOP_ON() │ │ │ │ │ @@ -46548,60 +46548,60 @@ │ │ │ │ │ to create a GUI screen for running a CNC machine. │ │ │ │ │ QtVCP is completely customizable: you can add different buttons and status LEDs etc. or add python │ │ │ │ │ code for even finer grain customization. │ │ │ │ │ │ │ │ │ │ 12.5.1 Showcase │ │ │ │ │ Few examples of QtVCP built screens and virtual control panels: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.55: QtDragon - 3/4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1038 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.56: QtDefault - 3-Axis Sample │ │ │ │ │ │ │ │ │ │ 1039 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.57: QtAxis - Self Adjusting Axis Sample │ │ │ │ │ │ │ │ │ │ 1040 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.58: Blender - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1041 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.59: X1mill - 4-Axis Sample │ │ │ │ │ │ │ │ │ │ 1042 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.60: cam_align - Camera Alignment VCP │ │ │ │ │ │ │ │ │ │ 1043 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.61: test_panel - Test Panel VCP │ │ │ │ │ │ │ │ │ │ 12.5.2 Overview │ │ │ │ │ Two files are used, individually or in combination, to add customizations: │ │ │ │ │ │ │ │ │ │ 1044 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1045 / 1279 │ │ │ │ │ │ │ │ │ │ • A UI file that is a XML file made with Qt Designer graphical editor. │ │ │ │ │ • A handler file which is a Python code text file. │ │ │ │ │ Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use local UI and │ │ │ │ │ handler files. │ │ │ │ │ @@ -46633,15 +46633,15 @@ │ │ │ │ │ │ │ │ │ │ Options │ │ │ │ │ • -d Debugging on. │ │ │ │ │ • -i Enable info output. │ │ │ │ │ • -v Enable verbose debug output. │ │ │ │ │ • -q Enable only error debug output. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1046 / 1279 │ │ │ │ │ │ │ │ │ │ • -a Set window always on top. │ │ │ │ │ • -c NAME HAL component name. Default is to use the UI file name. │ │ │ │ │ • -g GEOMETRY Set geometry WIDTHxHEIGHT+XOFFSET+YOFFSET. Values are in pixel units, XOFFSET/YOFFSET is referenced from top left of screen. Use -g WIDTHxHEIGHT for just setting size or │ │ │ │ │ -g +XOFFSET+YOFFSET for just position. Example: -g 200x400+0+100 │ │ │ │ │ @@ -46677,15 +46677,15 @@ │ │ │ │ │ 12.5.2.4 Handler Files │ │ │ │ │ A handler file is a file containing Python code, which adds to QtVCP default routines. │ │ │ │ │ A handler file allows one to modify defaults, or add logic to a QtVCP screen without having to modify │ │ │ │ │ QtVCP’s core code. In this way you can have custom behaviors. │ │ │ │ │ If present a handler file will be loaded. │ │ │ │ │ Only one file is allowed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1047 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.2.5 Libraries Modules │ │ │ │ │ QtVCP, as built, does little more than display the screen and react to widgets. For more prebuilt │ │ │ │ │ behaviors there are available libraries (found in lib/python/qtvcp/lib in RIP LinuxCNC install). │ │ │ │ │ Libraries are prebuilt Python modules that add features to QtVCP. In this way you can select what │ │ │ │ │ @@ -46715,15 +46715,15 @@ │ │ │ │ │ QtVCP will look for a folder named (in the launched configuration folder that holds │ │ │ │ │ the INI file). │ │ │ │ │ In that folder, QtVCP will load any of the available following files: │ │ │ │ │ • .ui, │ │ │ │ │ • _handler.py, and │ │ │ │ │ • .qss. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1048 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.2.8 Modifying Stock Screens │ │ │ │ │ There are three ways to customize a screen/panel. │ │ │ │ │ Minor StyleSheet Changes Stylesheets can be used to set Qt properties. │ │ │ │ │ If a widget uses properties they usually can be modified by stylesheets. │ │ │ │ │ @@ -46763,46 +46763,46 @@ │ │ │ │ │ basename in the edit box. │ │ │ │ │ • Validate to copy all the files │ │ │ │ │ • Delete the files you don’t wish to modifyso that the original files will be used. │ │ │ │ │ │ │ │ │ │ 12.5.3 VCP Panels │ │ │ │ │ QtVCP can be used to create control panels that interface with HAL. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1049 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.3.1 Builtin Panels │ │ │ │ │ There are several builtin HAL panels available. │ │ │ │ │ In a terminal type qtvcp to see a list: │ │ │ │ │ test_panel │ │ │ │ │ Collection of useful widgets for testing HAL components, including speech of LED state. │ │ │ │ │ │ │ │ │ │ Figure 12.62: QtVCP HAL Test Builtin Panel │ │ │ │ │ cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.63: cam_align - Camera Alignment VCP │ │ │ │ │ sim_panel │ │ │ │ │ A small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations. │ │ │ │ │ │ │ │ │ │ 1050 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.64: QtVCP Sim Builtin Panel │ │ │ │ │ vismach_mill_xyz │ │ │ │ │ 3D openGL view of a 3-Axis milling machine. │ │ │ │ │ │ │ │ │ │ 1051 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1052 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.65: QtVismach - 3-Axis Mill Builtin Panel │ │ │ │ │ You can load these from the terminal or from a HAL file with this basic command: │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ @@ -46811,15 +46811,15 @@ │ │ │ │ │ │ │ │ │ │ In this way HAL will wait till the HAL pins are made before continuing on. │ │ │ │ │ 12.5.3.2 Custom Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ If you made a UI file named my_panel.ui and a HAL file named my_panel.hal, you would then load │ │ │ │ │ this from a terminal with: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1053 / 1279 │ │ │ │ │ │ │ │ │ │ halrun -I -f my_panel.hal │ │ │ │ │ │ │ │ │ │ Example HAL file loading a QtVCP panel │ │ │ │ │ # load realtime components │ │ │ │ │ @@ -46868,15 +46868,15 @@ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ In this case we load qtvcp using -Wn which waits for the panel to finish loading before continuing │ │ │ │ │ to run the next HAL command. │ │ │ │ │ This is to ensure that the panel created HAL pins are actually done in case they are used in the │ │ │ │ │ rest of the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1054 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.4 Build A Simple Clean-sheet Custom Screen │ │ │ │ │ │ │ │ │ │ Figure 12.66: QtVCP Ugly custom screen │ │ │ │ │ 12.5.4.1 Overview │ │ │ │ │ @@ -46892,15 +46892,15 @@ │ │ │ │ │ │ │ │ │ │ Add qtvcp_plugin.py link to the Qt Designer Search Path Then you must add a link to the │ │ │ │ │ qtvcp_plugin.py in one of the folders that Qt Designer will search into. │ │ │ │ │ In a RIP version of LinuxCNC qtvcp_plugin.py will be: │ │ │ │ │ ’~/LINUXCNC_PROJECT_NAME/lib/python/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ For a Package installed version it should be: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1055 / 1279 │ │ │ │ │ │ │ │ │ │ ’usr/lib/python2.7/qtvcp/plugins/qtvcp_plugin.py’ or │ │ │ │ │ ’usr/lib/python2.7/dist-packages/qtvcp/plugins/qtvcp_plugin.py’ │ │ │ │ │ Make a symbolic link to the above file and move it to one of the places Qt Designer searches in. │ │ │ │ │ Qt Designer searches in these two place for links (pick one): │ │ │ │ │ @@ -46935,15 +46935,15 @@ │ │ │ │ │ │ │ │ │ │ We are going to make this window a specific non resizeable size: │ │ │ │ │ Set MainWindow Minimum and Maximum Size │ │ │ │ │ • Grab the corner of the window and resize to an appropriate size, say 1000x600. │ │ │ │ │ • Right click on the window and click set minimum size. │ │ │ │ │ • Do it again and set maximum size. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1056 / 1279 │ │ │ │ │ │ │ │ │ │ Our sample widget will now not be resizable. │ │ │ │ │ Add the ScreenOptions Widget Drag and drop the ScreenOptions widget anywhere onto the main │ │ │ │ │ window. │ │ │ │ │ This widget doesn’t add anything visually but sets up some common options. │ │ │ │ │ @@ -46977,28 +46977,28 @@ │ │ │ │ │ • Click the machine_on action checkbox you will see in the list of properties and values. │ │ │ │ │ The button will now control machine on/off. │ │ │ │ │ Do the same for all the other button with the addition of: │ │ │ │ │ • With the Home button we must also change the joint_number property to -1. │ │ │ │ │ This tells the controller to home all the axes rather then a specific axis. │ │ │ │ │ • With the Pause button: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ – Under the Indicated_PushButton heading check the indicator_option. │ │ │ │ │ – Under the QAbstactButton heading check checkable. │ │ │ │ │ │ │ │ │ │ 1057 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.67: Qt Designer: Selecting Pause Button’s Properties │ │ │ │ │ │ │ │ │ │ 1058 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1059 / 1279 │ │ │ │ │ │ │ │ │ │ Save The .ui File We then need to save this design as tester.ui in the sim/qtvcp folder. │ │ │ │ │ We are saving it as tester as that is a file name that QtVCP recognizes and will use a built in handler │ │ │ │ │ file to display it. │ │ │ │ │ 12.5.4.4 Handler file │ │ │ │ │ @@ -47031,15 +47031,15 @@ │ │ │ │ │ • after the screen is built, │ │ │ │ │ • after all the POSTGUI_HALFILEs are run. │ │ │ │ │ In our example there are no HAL pins to connect. │ │ │ │ │ │ │ │ │ │ 12.5.5 Handler File In Detail │ │ │ │ │ Handler files are used to create custom controls using Python. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.5.5.1 Overview │ │ │ │ │ Here is a sample handler file. │ │ │ │ │ It’s broken up in sections for ease of discussion. │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ @@ -47086,15 +47086,15 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ pass │ │ │ │ │ def processed_key_event__(self,receiver,event,is_pressed,key,code,shift,cntrl): │ │ │ │ │ # when typing in MDI, we don’t want keybinding to call functions │ │ │ │ │ │ │ │ │ │ 1060 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1061 / 1279 │ │ │ │ │ │ │ │ │ │ # so we catch and process the events directly. │ │ │ │ │ # We do want ESC, F1 and F2 to call keybinding functions though │ │ │ │ │ if code not in(QtCore.Qt.Key_Escape,QtCore.Qt.Key_F1 ,QtCore.Qt.Key_F2, │ │ │ │ │ QtCore.Qt.Key_F3,QtCore.Qt.Key_F5,QtCore.Qt.Key_F5): │ │ │ │ │ @@ -47145,15 +47145,15 @@ │ │ │ │ │ ####################### │ │ │ │ │ # CALLBACKS FROM FORM # │ │ │ │ │ ####################### │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ # keyboard jogging from key binding calls │ │ │ │ │ # double the rate if fast is true │ │ │ │ │ def kb_jog(self, state, joint, direction, fast = False, linear = True): │ │ │ │ │ if not STATUS.is_man_mode() or not STATUS.machine_is_on(): │ │ │ │ │ return │ │ │ │ │ if linear: │ │ │ │ │ @@ -47202,15 +47202,15 @@ │ │ │ │ │ def on_keycall_ZPOS(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, 1, shift) │ │ │ │ │ def on_keycall_ZNEG(self,event,state,shift,cntrl): │ │ │ │ │ self.kb_jog(state, 2, -1, shift) │ │ │ │ │ │ │ │ │ │ 1062 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1063 / 1279 │ │ │ │ │ │ │ │ │ │ def on_keycall_APOS(self,event,state,shift,cntrl): │ │ │ │ │ pass │ │ │ │ │ #self.kb_jog(state, 3, 1, shift, False) │ │ │ │ │ def on_keycall_ANEG(self,event,state,shift,cntrl): │ │ │ │ │ @@ -47245,15 +47245,15 @@ │ │ │ │ │ 12.5.5.5 INITIALIZE Section │ │ │ │ │ Like all Python libraries the +__init__+ function is called when the library is first instantiated. │ │ │ │ │ This is where you would set up defaults, as well as reference variables and global variables. │ │ │ │ │ The widget references are not available at this point. │ │ │ │ │ The variables halcomp, widgets and paths give access to QtVCP’s HAL component, widgets, and path │ │ │ │ │ info respectively. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1064 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.5.6 SPECIAL FUNCTIONS Section │ │ │ │ │ There are several special functions that QtVCP looks for in the handler file. │ │ │ │ │ If QtVCP finds these it will call them, if not it will silently ignore them. │ │ │ │ │ initialized__(self): │ │ │ │ │ @@ -47288,15 +47288,15 @@ │ │ │ │ │ The Linux system will not shutdown if using this function, you will have to do that yourself. │ │ │ │ │ QtVCP/LinuxCNC will terminate without a prompt once this function returns. │ │ │ │ │ closing_cleanup__(self): │ │ │ │ │ This function is called just before the screen closes. It can be used to do cleanup before closing. │ │ │ │ │ 12.5.5.7 STATUS CALLBACKS Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from STATUS definitions. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1065 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.5.8 CALLBACKS FROM FORM Section │ │ │ │ │ By convention this is where you would put functions that are callbacks from the widgets connected │ │ │ │ │ to the MainWindow in the Qt Designer editor. │ │ │ │ │ 12.5.5.9 GENERAL FUNCTIONS Section │ │ │ │ │ @@ -47326,15 +47326,15 @@ │ │ │ │ │ 12.5.6.1 Overview │ │ │ │ │ In the Qt Designer editor: │ │ │ │ │ • You create user function slots │ │ │ │ │ • You connect the slots to widgets using signals. │ │ │ │ │ In the handler file: │ │ │ │ │ • You create the slot’s functions defined in Qt Designer. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1066 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.6.2 Using Qt Designer to add Slots │ │ │ │ │ When you have loaded your screen into Qt Designer, add a plain PushButton to the screen. │ │ │ │ │ You could change the name of the button to something interesting like test_button. │ │ │ │ │ There are two ways to edit connections - This is the graphical way. │ │ │ │ │ @@ -47350,15 +47350,15 @@ │ │ │ │ │ • You can now edit a new slot name. │ │ │ │ │ • Erase the default name slot() and change it to test_button() │ │ │ │ │ • Press the OK button. │ │ │ │ │ • You’ll be back to the Configure Connections dialog. │ │ │ │ │ • Now you can select your new slot in the slot list. │ │ │ │ │ • Then press OK and save the file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1067 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.68: Qt Designer Signal/Slot Selection │ │ │ │ │ │ │ │ │ │ 12.5.6.3 Python Handler Changes │ │ │ │ │ Now you must add the function to the handler file. │ │ │ │ │ @@ -47375,15 +47375,15 @@ │ │ │ │ │ │ │ │ │ │ In fact it doesn’t matter where in the handler class you put the commands but by convention this is │ │ │ │ │ where to put it. │ │ │ │ │ Save the handler file. │ │ │ │ │ Now when you load your screen and press the button it should print the name of the button in the │ │ │ │ │ terminal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1068 / 1279 │ │ │ │ │ │ │ │ │ │ 12.5.7 More Information │ │ │ │ │ QtVCP Builtin Virtual Control Panels │ │ │ │ │ QtVCP Widgets │ │ │ │ │ QtVCP Libraries │ │ │ │ │ @@ -47400,28 +47400,28 @@ │ │ │ │ │ In a terminal type qtvcp list to see a list. │ │ │ │ │ 12.6.1.1 copy │ │ │ │ │ Used for copying QtVCP’s builtin Screens/VCP Panels/QtVismach code to a folder so one can │ │ │ │ │ customize it. │ │ │ │ │ In a terminal run: │ │ │ │ │ qtvcp copy │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1069 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.69: QtVCP copy Dialog - Screen, VCP Panel or QtVismach Code Copy Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.2 test_dial │ │ │ │ │ • This panel has a dial that adjusts S32 and Float HAL output pins. │ │ │ │ │ • The dial’s range can be adjusted from a drop down menu. │ │ │ │ │ • The output can be scaled with the spinbox. │ │ │ │ │ • A combobox can be used to automatically select and connect to a signal. │ │ │ │ │ loadusr qtvcp test_dial │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.70: QtVCP test_dial Panel - Test Dial VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.3 test_button │ │ │ │ │ • This panel has a button that will set a HAL pin. │ │ │ │ │ • The button can be selected as a momentary or a toggle button. │ │ │ │ │ • The button’s indicator color can be adjusted from a drop down menu. │ │ │ │ │ @@ -47436,15 +47436,15 @@ │ │ │ │ │ The -o switch sets how many buttons the panel starts with. │ │ │ │ │ If loading directly from a terminal omit the loadusr. │ │ │ │ │ │ │ │ │ │ Figure 12.71: QtVCP test_button - Test Button VCP │ │ │ │ │ │ │ │ │ │ 1070 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1071 / 1279 │ │ │ │ │ │ │ │ │ │ 12.6.1.4 test_led │ │ │ │ │ • This panel has an LED that can selected to watch HAL bit pins/signals. │ │ │ │ │ • The LED’s color can be adjusted from a drop down menu. │ │ │ │ │ • The text box and state can be output as speech if sound is selected. │ │ │ │ │ @@ -47460,24 +47460,24 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.72: QtVCP test_dial Panel - Test LED VCP │ │ │ │ │ │ │ │ │ │ 12.6.1.5 test_panel │ │ │ │ │ Collection of useful widgets for testing HAL component, including speech of LED state. │ │ │ │ │ loadusr qtvcp test_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.73: QtVCP test_panel - HAL Component Testing Panel │ │ │ │ │ │ │ │ │ │ 12.6.1.6 cam_align │ │ │ │ │ A camera display widget for rotational alignment. │ │ │ │ │ │ │ │ │ │ 1072 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1073 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.74: QtVCP cam_align Panel - Camera Based Alignment Panel │ │ │ │ │ Usage Add these lines to the INI file: │ │ │ │ │ [DISPLAY] │ │ │ │ │ EMBED_TAB_NAME = cam_align │ │ │ │ │ @@ -47491,15 +47491,15 @@ │ │ │ │ │ You can add window width and height size, rotation increment, and camera number from the INI with │ │ │ │ │ -o options. │ │ │ │ │ EMBED_TAB_COMMAND = halcmd loadusr -Wn qtvcp_embed qtvcp -d -c qtvcp_embed -x {XID} -o size ←=400,400 -o rotincr=.2 -o camnumber=0 cam_align │ │ │ │ │ │ │ │ │ │ Mouse controls: │ │ │ │ │ • left mouse single click - increase cross hair rotation one increment │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1074 / 1279 │ │ │ │ │ │ │ │ │ │ • right mouse single click - decrease cross hair rotation one increment │ │ │ │ │ • middle mouse single click - cycle through rotation increments │ │ │ │ │ • left mouse hold and scroll - scroll camera zoom │ │ │ │ │ • right mouse hold and scroll - scroll cross hair rotation angle │ │ │ │ │ @@ -47517,83 +47517,83 @@ │ │ │ │ │ Note the comma and text after is optional - it will override the default button text. │ │ │ │ │ These buttons are QtVCP action buttons and follow those rules. │ │ │ │ │ 12.6.1.7 sim_panel │ │ │ │ │ Small control panel to simulate MPG jogging controls etc. │ │ │ │ │ For simulated configurations │ │ │ │ │ loadusr qtvcp sim_panel │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1075 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.75: QtVCP sim_panel - Simulated Controls Panel For Screen Testing. │ │ │ │ │ │ │ │ │ │ 12.6.1.8 tool_dialog │ │ │ │ │ Manual tool change dialog that gives tool description. │ │ │ │ │ loadusr -Wn tool_dialog qtvcp -o speak_on -o audio_on tool_dialog │ │ │ │ │ │ │ │ │ │ Options: │ │ │ │ │ • -o notify_on - use desktop notify dialogs instead of QtVCP native ones. │ │ │ │ │ • -o audio_on - play sound on tool change │ │ │ │ │ • -o speak_on - speak announcement of tool change │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.76: QtVCP tool_dialog - Manual Tool Change Dialog │ │ │ │ │ │ │ │ │ │ 12.6.2 vismach 3D Simulation Panels │ │ │ │ │ These panels are prebuilt simulation of common machine types. │ │ │ │ │ These are also embed-able in other screens such as AXIS or GMOCCAPY. │ │ │ │ │ 12.6.2.1 QtVCP vismach_mill_xyz │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_xyz │ │ │ │ │ │ │ │ │ │ 1076 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.77: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.2 QtVCP vismach_scara │ │ │ │ │ 3D OpenGL view of a SCARA based milling machine. │ │ │ │ │ loadusr qtvcp vismach_scara │ │ │ │ │ │ │ │ │ │ 1077 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.78: QtVCP vismach_scara - SCARA Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.3 QtVCP vismach_millturn │ │ │ │ │ 3D OpenGL view of a 3-Axis milling machine with an A axis/spindle. │ │ │ │ │ loadusr qtvcp vismach_millturn │ │ │ │ │ │ │ │ │ │ 1078 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.79: QtVCP vismach_millturn - 4 Axis MillTurn 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.4 QtVCP vismach_mill_5axis_gantry │ │ │ │ │ 3D OpenGL view of a 5-Axis gantry type milling machine. │ │ │ │ │ loadusr qtvcp vismach_mill_5axis_gantry │ │ │ │ │ │ │ │ │ │ 1079 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1080 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.80: QtVCP vismach_mill_5axis_gantry - 5-AxIs Gantry Mill 3D View Panel │ │ │ │ │ │ │ │ │ │ 12.6.2.5 QtVCP vismach_fanuc_200f │ │ │ │ │ 3D openGL view of a 6 joint robotic arm. │ │ │ │ │ loadusr qtvcp vismach_fanuc_200f │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1081 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.81: QtVCP vismach_fanuc_200f - 6 Joint Robotic Arm │ │ │ │ │ │ │ │ │ │ 12.6.3 Custom Virtual Control Panels │ │ │ │ │ You can of course make your own panel and load it. │ │ │ │ │ @@ -47621,15 +47621,15 @@ │ │ │ │ │ # connect pins │ │ │ │ │ net bit-input1 │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_1 │ │ │ │ │ │ │ │ │ │ classicladder.0.in-00 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ net bit-hide │ │ │ │ │ │ │ │ │ │ test_panel.checkbox_4 │ │ │ │ │ │ │ │ │ │ classicladder.0.hide_gui │ │ │ │ │ │ │ │ │ │ @@ -47679,15 +47679,15 @@ │ │ │ │ │ Allows one to embed a program into the widget. │ │ │ │ │ Only programs that utilize the xembed protocol will work such as: │ │ │ │ │ • GladeVCP virtual control panels │ │ │ │ │ • Onboard virtual keyboard │ │ │ │ │ • QtVCP virtual control panels │ │ │ │ │ • mplayer video player │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1083 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.1.2 Slider - HAL Pin Value Adjusting Widget │ │ │ │ │ Allows one to adjust a HAL pin value using a sliding pointer. │ │ │ │ │ 12.7.1.3 LED - Indicator Widget │ │ │ │ │ │ │ │ │ │ @@ -47717,15 +47717,15 @@ │ │ │ │ │ qproperty-flashRate: 150; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ 12.7.1.4 CheckBox Widget │ │ │ │ │ This widget allows the user to check a box to set a HAL pin true or false. │ │ │ │ │ It is based on PyQt’s QCheckButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1084 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.1.5 RadioButton Widget │ │ │ │ │ This widget allows a user to set HAL pins true or false. Only one RadioButton widget of a group │ │ │ │ │ can be true at a time. │ │ │ │ │ It is based on PyQt’s QRadioButton. │ │ │ │ │ @@ -47746,15 +47746,15 @@ │ │ │ │ │ In other words, it is the full scale input. num_ticks:: This is the number of ticks/gauge readings │ │ │ │ │ on the gauge face. │ │ │ │ │ It should be set to a number that ensures the text readings around the gauge face are readable. │ │ │ │ │ The minimum allowed value is 2. zone1_color:: Zone1 extends from the maximum reading to │ │ │ │ │ the threshold point. │ │ │ │ │ It can be set to any RGB color. zone2_color:: Zone2 extends from the threshold point to the │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1085 / 1279 │ │ │ │ │ │ │ │ │ │ minimum reading, which is 0. │ │ │ │ │ It can be set to any RGB color. bezel_color:: This is the color of the outer ring of the gauge. │ │ │ │ │ threshold:: The threshold is the transition point between the zones. │ │ │ │ │ It should be set to a value between 0 and the maximum value. │ │ │ │ │ @@ -47772,15 +47772,15 @@ │ │ │ │ │ to a value between 0 and the maximum value. │ │ │ │ │ 12.7.1.7 HALPad - HAL Buttons Joypad │ │ │ │ │ │ │ │ │ │ Figure 12.84: QtVCP HALPad: HAL Buttons Joypad │ │ │ │ │ This widget looks and acts like a 5 buttons D-pad, with an LED ring. │ │ │ │ │ Each button has an selectable type (Bit, S32 or Float) output HAL pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1086 / 1279 │ │ │ │ │ │ │ │ │ │ The LED center ring has selectable colors for off and on and is controlled by a bit HAL pin. │ │ │ │ │ HALPad ENUMS There are enumerated constants used: │ │ │ │ │ • To reference indicator positions: │ │ │ │ │ – NONE │ │ │ │ │ @@ -47818,15 +47818,15 @@ │ │ │ │ │ left_text , right_text , center_text , top_text , bottom_text │ │ │ │ │ A text string to be displayed in the described button location. │ │ │ │ │ If left blank an image can be designated to be displayed. │ │ │ │ │ true_color , false_color │ │ │ │ │ Color selection for the center LED ring to be displayed when the .light.center HAL │ │ │ │ │ pin is True or False. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1087 / 1279 │ │ │ │ │ │ │ │ │ │ text_color │ │ │ │ │ Color selection for the button text. │ │ │ │ │ text_font │ │ │ │ │ Font selection for the button text. │ │ │ │ │ @@ -47844,15 +47844,15 @@ │ │ │ │ │ 12.7.5.1 [IndicatedPushButton] below for more info. │ │ │ │ │ │ │ │ │ │ It also has other options. │ │ │ │ │ It is based on PyQt’s QPushButton. │ │ │ │ │ 12.7.1.9 focusOverlay - Focus Overlay Widget │ │ │ │ │ This widget places a colored overlay over the screen, usually while a dialog is showing. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Figure 12.85: Focus overlay example for confirm close prompt │ │ │ │ │ Used to create a focused feel and to draw attention to critical information. │ │ │ │ │ It can also show a translucent image. │ │ │ │ │ It can also display message text and buttons. │ │ │ │ │ This widget can be controlled with STATUS messages. │ │ │ │ │ 12.7.1.10 gridLayout - Grid Layout Widget │ │ │ │ │ @@ -47860,15 +47860,15 @@ │ │ │ │ │ Disabled widgets typically have a different color and do not respond to actions. │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ 12.7.1.11 hal_label - HAL Label Widget │ │ │ │ │ This widget displays values sent to it. │ │ │ │ │ │ │ │ │ │ 1088 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1089 / 1279 │ │ │ │ │ │ │ │ │ │ Values can be sent from: │ │ │ │ │ • HAL pins │ │ │ │ │ The input pin can be selected as Bit, S32, Float or no pin selected │ │ │ │ │ • Programmatically │ │ │ │ │ @@ -47903,15 +47903,15 @@ │ │ │ │ │ When using floats you can set a formatting string. │ │ │ │ │ You must set the digitCount property to an appropriate setting to display the largest number. │ │ │ │ │ Properties │ │ │ │ │ pin_name │ │ │ │ │ Option string to be used as the HAL pin name. │ │ │ │ │ If set to an empty string the widget name will be used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1090 / 1279 │ │ │ │ │ │ │ │ │ │ bit_pin_type │ │ │ │ │ Selects the input pin as type BIT. │ │ │ │ │ s32_pin_type │ │ │ │ │ Selects the input pin as type S32. │ │ │ │ │ @@ -47942,15 +47942,15 @@ │ │ │ │ │ a large view of a widget and a smaller multi widget view. │ │ │ │ │ It is different from a stacked widget as it can pull a widget from anywhere in the screen and place it │ │ │ │ │ in its page with a different layout than it originally had. │ │ │ │ │ The original widget must be in a layout for switcher to put it back. │ │ │ │ │ In Qt Designer you will: │ │ │ │ │ • Add the WidgetSwitcher widget on screen. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1091 / 1279 │ │ │ │ │ │ │ │ │ │ • Right click the WidgetSwitcher and add a page. │ │ │ │ │ • Populate it with the widgets/layouts you wish to see in a default form. │ │ │ │ │ • Add as many pages as there are views to switch to. │ │ │ │ │ • On each page, add a layout widget. │ │ │ │ │ @@ -47983,15 +47983,15 @@ │ │ │ │ │ Estop , Machine On , Auto , mdi , manual , run , run_from_line status │ │ │ │ │ Gets line number from STATUS message gcode-line-selected. │ │ │ │ │ run_from_line slot │ │ │ │ │ Gets line number from Qt Designer int/str slot setRunFromLine. │ │ │ │ │ abort , pause , load dialog │ │ │ │ │ Requires a dialog widget present. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1092 / 1279 │ │ │ │ │ │ │ │ │ │ Camview dialog │ │ │ │ │ Requires camview dialog widget present. │ │ │ │ │ origin offset dialog │ │ │ │ │ Requires origin offset dialog widget present. │ │ │ │ │ @@ -48032,15 +48032,15 @@ │ │ │ │ │ spindle fwd , spindle backward , spindle stop , spindle up , spindle down , view change │ │ │ │ │ Set view_type_string. │ │ │ │ │ limits override , flood , mist , block delete , optional stop , mdi command │ │ │ │ │ Set command_string, i.e.,calls a hard coded MDI command │ │ │ │ │ INI mdi number │ │ │ │ │ Set ini_mdi_number, i.e., calls an INI based MDI command │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1093 / 1279 │ │ │ │ │ │ │ │ │ │ dro absolute , dro relative , dro dtg , exit screen │ │ │ │ │ Closes down LinuxCNC │ │ │ │ │ Override limits │ │ │ │ │ Temporarily override hard limits │ │ │ │ │ @@ -48079,15 +48079,15 @@ │ │ │ │ │ Then in the INI file, under the heading [MDI_COMMAND_LIST] add appropriate lines. │ │ │ │ │ The commands are separated by the ;. │ │ │ │ │ The label is set after the comma, and \n symbol adds a line break. │ │ │ │ │ [MDI_COMMAND_LIST] │ │ │ │ │ MDI_COMMAND = G0 Z25;X0 Y0;Z0, Goto\nUser\nZero │ │ │ │ │ MDI_COMMAND = G53 G0 Z0;G53 G0 X0 Y0, Goto\nMachn\nZero │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Action buttons are subclassed from │ │ │ │ │ for more information about: │ │ │ │ │ │ │ │ │ │ 1094 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.5.1 [IndicatedPushButton]. See the following sections │ │ │ │ │ @@ -48124,15 +48124,15 @@ │ │ │ │ │ • Divide the axis by 2 │ │ │ │ │ • Set the axis arbitrarily │ │ │ │ │ • Reset the axis to the last number recorded │ │ │ │ │ You select the axis by setting the joint number. │ │ │ │ │ You can select a halpin option that is set true when the axis is selected. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1095 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.5 CamView - Workpiece Alignment and Origin Setting Widget │ │ │ │ │ This widget displays a image from a web camera. │ │ │ │ │ It overlays an adjustable circular and cross hair target over the image. │ │ │ │ │ CamView was built with precise visual positioning in mind. │ │ │ │ │ @@ -48172,15 +48172,15 @@ │ │ │ │ │ Here is how you specify a particular widget by its objectName in Qt Designer: │ │ │ │ │ DROLabel #dr0_x_axis [isHomed=false] { │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1096 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.7 GcodeDisplay - G-code Text Display Widget │ │ │ │ │ This displays G-code in text form, highlighting the currently running line. │ │ │ │ │ This can also display: │ │ │ │ │ • MDI history when LinuxCNC is in MDI mode. │ │ │ │ │ @@ -48222,15 +48222,15 @@ │ │ │ │ │ • styleColor1 = LineNo and Comments: Nxxx and comments (characters inside of and including │ │ │ │ │ () or anything after ; (when used outside of parenthesis) with the exception of the note below) │ │ │ │ │ • styleColor2 = G-code: G and the digits after │ │ │ │ │ • styleColor3 = M-code: M and the digits after │ │ │ │ │ • styleColor4 = Axis: XYZABCUVW │ │ │ │ │ • styleColor5 = Other: EFHIJKDQLRPST (feed, rpm, radius, etc.) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1097 / 1279 │ │ │ │ │ │ │ │ │ │ • styleColor6 = AxisValue: Values following XYZABCUVW │ │ │ │ │ • styleColor7 = OtherValue: Values following EFHIJKDQLRPST$ │ │ │ │ │ │ │ │ │ │ For comments, the ”OtherValue” color (Color 5) can be used to highlight ”print,” ”debug,” ”msg,” │ │ │ │ │ @@ -48243,15 +48243,15 @@ │ │ │ │ │ ”style name, size, -1, 0, bold setting (0-99), italics (0-1), │ │ │ │ │ underline (0-1),0,0,0” │ │ │ │ │ It is based on PyQt’s QsciScintilla. │ │ │ │ │ 12.7.2.8 GcodeEditor - G-code Program Editor Widget │ │ │ │ │ This is an extension of the GcodeDisplay widget that adds editing convenience. │ │ │ │ │ It is based on PyQt’s QWidget which incorporates GcodeDisplay widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1098 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.9 GCodeGraphics - G-code Graphic Backplot Widget │ │ │ │ │ │ │ │ │ │ Figure 12.86: QtVCP GcodeGraphics: G-code Graphic Backplot Widget │ │ │ │ │ This displays the current G-code in a graphical form. │ │ │ │ │ @@ -48267,15 +48267,15 @@ │ │ │ │ │ +_dro+ (bool) │ │ │ │ │ Determines whether or not to show the DRO. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dro: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ +_dtg+ (bool) │ │ │ │ │ Determine whether or not to show the Distance To Go. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_dtg: False; │ │ │ │ │ } │ │ │ │ │ @@ -48324,15 +48324,15 @@ │ │ │ │ │ │ │ │ │ │ +_use_gradient_background+ (bool) │ │ │ │ │ Determines whether or not use a gradient background by default. │ │ │ │ │ The following shows an example of how to set this property: │ │ │ │ │ │ │ │ │ │ 1099 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1100 / 1279 │ │ │ │ │ │ │ │ │ │ #gcodegraphics{ │ │ │ │ │ qproperty-_use_gradient_background: False; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ @@ -48403,15 +48403,15 @@ │ │ │ │ │ Middle │ │ │ │ │ Middle │ │ │ │ │ Left │ │ │ │ │ │ │ │ │ │ Modes 6-11 are intended for machines that only require a 2D preview such as plasma or some │ │ │ │ │ lathes and have no rotate button assigned. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Mode │ │ │ │ │ 6 │ │ │ │ │ 7 │ │ │ │ │ 8 │ │ │ │ │ 9 │ │ │ │ │ 10 │ │ │ │ │ @@ -48468,15 +48468,15 @@ │ │ │ │ │ • inhibit-selection-off │ │ │ │ │ • dimensions-on │ │ │ │ │ • dimensions-off │ │ │ │ │ • grid-size │ │ │ │ │ • record-view │ │ │ │ │ • set-recorded-view │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ • P │ │ │ │ │ • X │ │ │ │ │ • Y │ │ │ │ │ • Y2 │ │ │ │ │ • Z │ │ │ │ │ • Z2 │ │ │ │ │ @@ -48506,15 +48506,15 @@ │ │ │ │ │ This will be the text set when the option is False. │ │ │ │ │ You can use Qt rich text code for different fonts/colors etc. │ │ │ │ │ Typical template for metric mode in false state, might be: Imperial Mode. │ │ │ │ │ It is based on PyQt’s QLabel. │ │ │ │ │ │ │ │ │ │ 1102 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1103 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.11 StatusLabel - Controller Variables State Label Display Widget │ │ │ │ │ This will display a label based on selectable status of the machine controller. │ │ │ │ │ You can change how the status will be displayed by substituting python formatting code in the text │ │ │ │ │ template. You can also use rich text for different fonts/colors etc. │ │ │ │ │ @@ -48553,15 +48553,15 @@ │ │ │ │ │ jograte_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog Rate. │ │ │ │ │ jogincr_status │ │ │ │ │ Shows the current QtVCP based Jog increment. │ │ │ │ │ jogincr_angular_status │ │ │ │ │ Shows the current QtVCP based Angular Jog increment. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1104 / 1279 │ │ │ │ │ │ │ │ │ │ machine_state_status │ │ │ │ │ Shows the current machine interpreter state using the text described from the machine_state_list. │ │ │ │ │ The interpreter states are: │ │ │ │ │ • Estopped │ │ │ │ │ @@ -48600,15 +48600,15 @@ │ │ │ │ │ tool_number_status │ │ │ │ │ Returns the tool number of the current loaded tool. │ │ │ │ │ tool_offset_status │ │ │ │ │ Returns the offset of the current loaded tool, indexed by index_number to select axis (0=x,1=y,etc.). │ │ │ │ │ user_system_status │ │ │ │ │ Shows the active user coordinate system (G5x setting). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1105 / 1279 │ │ │ │ │ │ │ │ │ │ Other Properties │ │ │ │ │ index_number │ │ │ │ │ Integer that specifies the tool status index to display. │ │ │ │ │ state_label_list │ │ │ │ │ @@ -48637,15 +48637,15 @@ │ │ │ │ │ Toggles between 2 images: axis not homed, axis homed. │ │ │ │ │ *watch_all_homed │ │ │ │ │ Would toggle between 2 images: not all homed, all homed. │ │ │ │ │ *watch_hard_limits │ │ │ │ │ Would toggle between 2 images or one per joint. │ │ │ │ │ Here is an example of using it to display an icon of Z axis homing state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1106 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 12.87: QtVCP StatusImageSwitcher: Controller Status Image Switcher │ │ │ │ │ In the properties section notice that: │ │ │ │ │ • watch_axis_homed is checked │ │ │ │ │ • axis_letter is set to Z │ │ │ │ │ @@ -48658,15 +48658,15 @@ │ │ │ │ │ │ │ │ │ │ • Right click the image name and you should see Copy path. │ │ │ │ │ • Click Copy path. │ │ │ │ │ • Now double click the image list property so the dialog shows. │ │ │ │ │ • Click the New button. │ │ │ │ │ • Paste the image path in the entry box. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1107 / 1279 │ │ │ │ │ │ │ │ │ │ Do that again for the next image. │ │ │ │ │ Use a clear image to represent a hidden icon. │ │ │ │ │ You can test the images display from the image list by changing the image number. In this case 0 is │ │ │ │ │ unhomed and 1 would be homed. │ │ │ │ │ @@ -48700,15 +48700,15 @@ │ │ │ │ │ notify_option │ │ │ │ │ Hooking into the desktop notification bubbles for error and messages. │ │ │ │ │ notify_max_messages │ │ │ │ │ Number of messages shown on screen at one time. │ │ │ │ │ catch_close_option │ │ │ │ │ Catching the close event to pop up a ’are you sure’ prompt. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1108 / 1279 │ │ │ │ │ │ │ │ │ │ close_overlay_color │ │ │ │ │ Color of transparent layer shown when quitting. │ │ │ │ │ catch_error_option │ │ │ │ │ Monitoring of the LinuxCNC error channel. │ │ │ │ │ @@ -48750,15 +48750,15 @@ │ │ │ │ │ tool_overlay_color │ │ │ │ │ Color of transparent layer shown when the tool dialog is shown. │ │ │ │ │ ToolUseDesktopNotify │ │ │ │ │ Option to use desktop notify dialogs for manual tool change dialog. │ │ │ │ │ ToolFrameless │ │ │ │ │ Frameless dialogs can not be easily moved by users. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1109 / 1279 │ │ │ │ │ │ │ │ │ │ fileDialog_option │ │ │ │ │ Sets up the file choosing dialog. │ │ │ │ │ file_overlay_color │ │ │ │ │ Color of transparent layer shown when the file dialog is shown. │ │ │ │ │ @@ -48796,15 +48796,15 @@ │ │ │ │ │ Color of transparent layer shown when the machineLog dialog is shown. │ │ │ │ │ runFromLineDialog_option │ │ │ │ │ Sets up a dialog to display starting options when starting machine execution from a arbitrary │ │ │ │ │ line. │ │ │ │ │ runFromLine_overlay_color │ │ │ │ │ Color of transparent layer shown when the runFromLine dialog is shown. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1110 / 1279 │ │ │ │ │ │ │ │ │ │ Setting Properties Programmatically The screen designer chooses the default settings of the │ │ │ │ │ screenOptions widget. │ │ │ │ │ Once chosen, most won’t ever need to be changed. But if needed, some can be changed in the handler │ │ │ │ │ file or in stylesheets. │ │ │ │ │ @@ -48847,15 +48847,15 @@ │ │ │ │ │ Turns all sounds on or off. │ │ │ │ │ [MCH_MSG_OPTIONS] │ │ │ │ │ mchnMsg_play_sound (bool) │ │ │ │ │ To play alert sound when dialog pops. │ │ │ │ │ mchnMsg_speak_errors (bool) │ │ │ │ │ To use Espeak to speak error messages. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1111 / 1279 │ │ │ │ │ │ │ │ │ │ mchnMsg_speak_text (bool) │ │ │ │ │ To use Espeak to speak all other messages. │ │ │ │ │ mchnMsg_sound_type (str) │ │ │ │ │ Sound to play when messages displayed. See notes below. │ │ │ │ │ @@ -48895,15 +48895,15 @@ │ │ │ │ │ – DONE │ │ │ │ │ – ATTENTION │ │ │ │ │ – RING │ │ │ │ │ – LOGIN │ │ │ │ │ – LOGOUT │ │ │ │ │ – BELL │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1112 / 1279 │ │ │ │ │ │ │ │ │ │ These Sound options require python3-gst1.0 installed. │ │ │ │ │ • Audio Files │ │ │ │ │ You can also specify a file path to an arbitrary audio file. │ │ │ │ │ You can use ~ in path to substitute for the user home file path. │ │ │ │ │ @@ -48937,15 +48937,15 @@ │ │ │ │ │ jograte_angular_rate │ │ │ │ │ Selects a angular jograte slider. │ │ │ │ │ max_velocity_rate │ │ │ │ │ Selects a maximum velocity rate slider. │ │ │ │ │ alertState │ │ │ │ │ String to define style change: read-only, under, over and normal. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1113 / 1279 │ │ │ │ │ │ │ │ │ │ alertUnder │ │ │ │ │ Sets the float value that signals the stylesheet for under warning. │ │ │ │ │ alertOver │ │ │ │ │ Sets the float value that signals the stylesheet for over warning. │ │ │ │ │ @@ -48981,15 +48981,15 @@ │ │ │ │ │ diameter │ │ │ │ │ Diameter of the LED. │ │ │ │ │ color │ │ │ │ │ Color of the LED when on. │ │ │ │ │ off_color │ │ │ │ │ Color of the LED when off. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1114 / 1279 │ │ │ │ │ │ │ │ │ │ alignment │ │ │ │ │ Qt Alignment hint. │ │ │ │ │ state │ │ │ │ │ Current state of LED (for testing in Qt Designer). │ │ │ │ │ @@ -49026,15 +49026,15 @@ │ │ │ │ │ • Rapid override rate │ │ │ │ │ It is based on PyQt’s QProgressBar. │ │ │ │ │ 12.7.2.19 SystemToolButton - User System Selection Widget │ │ │ │ │ This widget allows you to manually select a G5x user system by pressing and holding. │ │ │ │ │ If you don’t set the button text it will automatically update to the current system. │ │ │ │ │ It is based on PyQt’s QToolButton. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1115 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.20 MacroTab - Special Macros Widget │ │ │ │ │ │ │ │ │ │ Figure 12.88: QtVCP MacroTab: Special Macros Widget │ │ │ │ │ This widget allows a user to select and adjust special macro programs for doing small jobs. │ │ │ │ │ @@ -49052,15 +49052,15 @@ │ │ │ │ │ ; MACROOPTIONS = load:yes,save:yes,default:default.txt,path:~/macros │ │ │ │ │ │ │ │ │ │ MACROCOMMAND This is the first line in the O-word file. │ │ │ │ │ It is a comma separated list of text to display above an entry. │ │ │ │ │ There will be one for every variable required in the O-word function. │ │ │ │ │ If the macro does not require variables, leave it empty: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1116 / 1279 │ │ │ │ │ │ │ │ │ │ ; MACROCOMMAND= │ │ │ │ │ │ │ │ │ │ MACRODEFAULTS This must be the second line in the O-word file. │ │ │ │ │ It is a comma separated list of the default values for each variable in the O-word function. │ │ │ │ │ @@ -49097,15 +49097,15 @@ │ │ │ │ │ MACROOPTIONS This optional line must be the fourth line in the O-word file. │ │ │ │ │ It is a comma separated list of keyword and data: │ │ │ │ │ LOAD:yes │ │ │ │ │ Shows a load button. │ │ │ │ │ SAVE:yes │ │ │ │ │ Shows a save button. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1117 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.21 MDILine - MDI Commands Line Entry Widget │ │ │ │ │ One can enter MDI commands here. │ │ │ │ │ A popup keyboard is available. │ │ │ │ │ Embedded Commands There are also embedded commands available from this widget. │ │ │ │ │ @@ -49142,15 +49142,15 @@ │ │ │ │ │ Disconnects a pin from a signal. │ │ │ │ │ An error will result if the pin does not exist. │ │ │ │ │ Running LinuxCNC from terminal may help determine the root cause as error messages from │ │ │ │ │ hal_lib.c will be displayed there. │ │ │ │ │ • Syntax: unlinkp │ │ │ │ │ • Example: unlinkp motion.jog-stop │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1118 / 1279 │ │ │ │ │ │ │ │ │ │ The MDILine function spindle_inhibit can be used by a GUI’s handler file to inhibit M3, M4, and M5 │ │ │ │ │ spindle commands if necessary. │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s QLineEdit. │ │ │ │ │ @@ -49161,15 +49161,15 @@ │ │ │ │ │ default): │ │ │ │ │ MDI_HISTORY_FILE = ’~/.axis_mdi_history’ │ │ │ │ │ │ │ │ │ │ 12.7.2.23 MDITouchy - Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ Figure 12.89: QtVCP MDITouchy: Touch Screen MDI Entry Widget │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1119 / 1279 │ │ │ │ │ │ │ │ │ │ This widget displays buttons and entry lines to use for entering MDI commands. │ │ │ │ │ Based on LinuxCNC’s Touchy screen’s MDI entry process, its large buttons are most useful for touch │ │ │ │ │ screens. │ │ │ │ │ To use MDITouchy: │ │ │ │ │ @@ -49208,15 +49208,15 @@ │ │ │ │ │ G90 │ │ │ │ │ O endsub │ │ │ │ │ │ │ │ │ │ Notice the name of the sub matches the file name and macro name exactly, including case. │ │ │ │ │ When you invoke the macro by pressing the Macro button you can enter values for parameters (xinc │ │ │ │ │ and yinc in our example). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1120 / 1279 │ │ │ │ │ │ │ │ │ │ These are passed to the macro as positional parameters: #1, #2… #N respectively. │ │ │ │ │ Parameters you leave empty are passed as value 0. │ │ │ │ │ If there are several different macros, press the Macro button repeatedly to cycle through them. │ │ │ │ │ In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid G0 │ │ │ │ │ @@ -49229,15 +49229,15 @@ │ │ │ │ │ Figure 12.90: QtVCP OriginOffsetsView: Origins View and Setting Widget │ │ │ │ │ This widget allows one to visualize and modify User System Origin offsets directly. │ │ │ │ │ It will update LinuxCNC’s Parameter file for changes made or found. │ │ │ │ │ The settings can only be changed in LinuxCNC after homing and when the motion controller is idle. │ │ │ │ │ The display and entry will change between metric and imperial, based on LinuxCNC’s current G20 / │ │ │ │ │ G21 setting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1121 / 1279 │ │ │ │ │ │ │ │ │ │ The current in-use user system will be highlighted. │ │ │ │ │ Extra actions can be integrated to manipulate settings. │ │ │ │ │ These actions depend on extra code added either to a combined widget, like originoffsetview dialog, │ │ │ │ │ or the screens handler code. │ │ │ │ │ @@ -49276,15 +49276,15 @@ │ │ │ │ │ It can selectably react to: │ │ │ │ │ • Machine on │ │ │ │ │ • Interpreter idle │ │ │ │ │ • E-stop off │ │ │ │ │ • All-homed │ │ │ │ │ It is based on PyQt’s QGridLayout. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.26 MachineLog - Machine Events Journal Display Widget │ │ │ │ │ FIXME MachineLog documentation │ │ │ │ │ 12.7.2.27 JointEnableWidget - FIXME │ │ │ │ │ FIXME JointEnableWidget documentation │ │ │ │ │ 12.7.2.28 StatusImageSwitcher - Controller Status Image Switching Widget │ │ │ │ │ This widget will display images based on LinuxCNC status. │ │ │ │ │ @@ -49293,15 +49293,15 @@ │ │ │ │ │ • the state of all homed, │ │ │ │ │ • the state of a certain axis homed, │ │ │ │ │ • the state of hard limits. │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ │ │ │ │ │ 1122 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1123 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.29 FileManager - File Loading Selector Widget │ │ │ │ │ │ │ │ │ │ Figure 12.91: QtVCP FileManager: File Loading Selector Widget │ │ │ │ │ This widget is used to select files to load. │ │ │ │ │ @@ -49314,15 +49314,15 @@ │ │ │ │ │ if temp[1]: │ │ │ │ │ print(’Is a file’) │ │ │ │ │ │ │ │ │ │ It is based on PyQt’s FIXME │ │ │ │ │ 12.7.2.30 RadioAxisSelector - FIXME │ │ │ │ │ FIXME RadioAxisSelector documentation │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1124 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.31 ToolOffsetView - Tools Offsets View And Edit Widget │ │ │ │ │ │ │ │ │ │ Figure 12.92: QtVCP ToolOffsetView: Tools Offsets View And Edit Widget │ │ │ │ │ This widget displays and allows one to modify tools offsets. │ │ │ │ │ @@ -49346,15 +49346,15 @@ │ │ │ │ │ Properties ToolOffsetView has properties that can be set in Qt Designer, in Python handler code or │ │ │ │ │ (if appropriate) in stylesheets: │ │ │ │ │ dialog_code_string │ │ │ │ │ Sets which dialog will pop up with numerical entry. │ │ │ │ │ test_dialog_code_string │ │ │ │ │ Sets which dialog will pop up with text entry. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1125 / 1279 │ │ │ │ │ │ │ │ │ │ metric_template │ │ │ │ │ Metric numerical data format. │ │ │ │ │ imperial_template │ │ │ │ │ Imperial numerical data format. │ │ │ │ │ @@ -49383,24 +49383,24 @@ │ │ │ │ │ Uncheck all selected tools. │ │ │ │ │ Example for handler file executing aforementioned functions. │ │ │ │ │ self.w.tooloffsetview.add_tool() │ │ │ │ │ self.w.tooloffsetview.delete_tools() │ │ │ │ │ toolList = self.w.tooloffsetview.get_checked_list() │ │ │ │ │ self.w.tooloffsetview.set_all_unchecked() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.2.32 BasicProbe - Simple Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.93: QtVCP BasicProbe: Simple Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ │ │ │ │ │ 1126 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1127 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.2.33 VersaProbe - Mill Probing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.94: QtVCP VersaProbe: Mill Probing Widget │ │ │ │ │ Widget for probing on a mill. Used by the QtDragon screen. │ │ │ │ │ @@ -49418,15 +49418,15 @@ │ │ │ │ │ │ │ │ │ │ • Add a function to call a dialog: │ │ │ │ │ This function must build a message dict to send to the dialog. │ │ │ │ │ This message will be passed back in the general message with the addition of the return variable. │ │ │ │ │ It is possible to add extra user information to the message. The dialog will ignore these and pass │ │ │ │ │ them back. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1128 / 1279 │ │ │ │ │ │ │ │ │ │ NAME │ │ │ │ │ Launches code name of dialog to show. │ │ │ │ │ ID │ │ │ │ │ A unique id so we process only a dialog that we requested. │ │ │ │ │ @@ -49467,15 +49467,15 @@ │ │ │ │ │ TYPE (OK|YESNO|OKCANCEL) , ICON (QUESTION|INFO|CRITICAL|WARNING) , PINNAME │ │ │ │ │ Not implemented yet. │ │ │ │ │ FOCUSTEXT (overlay text|None) │ │ │ │ │ Text to display if focus overlay is used. Use None for no text. │ │ │ │ │ FOCUSCOLOR (QColor(_R, G, B, A_)) │ │ │ │ │ Color to use if focus overlay is used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1129 / 1279 │ │ │ │ │ │ │ │ │ │ PLAYALERT │ │ │ │ │ Sound to play if sound is available, i.e., SPEAK . │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is MESSAGE. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ @@ -49485,15 +49485,15 @@ │ │ │ │ │ This is used as a manual tool change prompt. │ │ │ │ │ It has HAL pins to connect to the machine controller. The pins are named the same as the original │ │ │ │ │ AXIS manual tool prompt and works the same. │ │ │ │ │ The tool change dialog can only be launched by HAL pins. │ │ │ │ │ If there is a Focus Overlay widget present, it will signal it to display. │ │ │ │ │ It is based on PyQt’s QMessagebox. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1130 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.3 FileDialog - Load and Save File Chooser Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.96: QtVCP FileDialog: Load and Save File Chooser Widget │ │ │ │ │ This is used to load G-code files. │ │ │ │ │ @@ -49509,15 +49509,15 @@ │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ } │ │ │ │ │ ACTION.CALL_DIALOG(mess) │ │ │ │ │ │ │ │ │ │ And for a save dialog │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1131 / 1279 │ │ │ │ │ │ │ │ │ │ mess = {’NAME’:’SAVE’,’ID’:’_MY_DIALOG_’, │ │ │ │ │ ’TITLE’:’Save Some text File’, │ │ │ │ │ ’FILENAME’:’~/linuxcnc/nc_files/someprogram.txt’, │ │ │ │ │ ’EXTENSIONS’:’Text Files (*.txt);;ALL Files (*.*)’ │ │ │ │ │ @@ -49529,15 +49529,15 @@ │ │ │ │ │ │ │ │ │ │ Figure 12.97: QtVCP OriginOffsetDialog: Origin Offset Setting Widget │ │ │ │ │ This widget allows one to modify User System origin offsets directly in a dialog form. │ │ │ │ │ If there is an Focus Overlay widget present, it will signal it to display. │ │ │ │ │ When using STATUS ’s request-dialog function, the default launch name is ORIGINOFFSET. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1132 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.5 ToolOffsetDialog - Tool Offset Setting Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.98: QtVCP ToolOffsetDialog: Tool Offset Setting Dialog Widget │ │ │ │ │ This widget allows one to modify Tool offsets directly in a dialog form. │ │ │ │ │ @@ -49557,61 +49557,61 @@ │ │ │ │ │ 12.7.3.8 EntryDialog - Edit Line Dialog Widget │ │ │ │ │ This is a dialog to display an edit line for information entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is ENTRY. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1133 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.9 CalculatorDialog - Calculator Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.99: QtVCP CalculatorDialog: Calculator Dialog Widget │ │ │ │ │ This is a dialog to display a calculator for numeric entry, such as origin offset. │ │ │ │ │ It returns the entry via STATUS messages using a Python DICT. │ │ │ │ │ The DICT contains at minimum, the name of the dialog requested and an ID code. │ │ │ │ │ When using ̀ ̀STATUS ̀ ̀’s request-dialog function, the default launch name is CALCULATOR. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.7.3.10 RunFromLine - Run-From-Line Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.100: QtVCP RunFromLine: Run-From-Line Dialog Widget │ │ │ │ │ Dialog to preset spindle settings before running a program from a specific line. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 1134 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1135 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.11 VersaProbeDialog - Part Touch Probing Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.101: QtVCP VersaProbeDialog: Part Touch Probing Dialog Widget │ │ │ │ │ This is a dialog to display a part probing screen based on Verser Probe v2. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1136 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.3.12 MachineLogDialog - Machine and Debugging Logs Dialog Widget │ │ │ │ │ │ │ │ │ │ Figure 12.102: QtVCP MachineLogDialog: Machine and Debugging Logs Dialog Widget │ │ │ │ │ This is a dialog to display the machine log and QtVCP’s debugging log. │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ │ │ │ │ │ 12.7.4 Other Widgets │ │ │ │ │ Other available widgets: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1137 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.4.1 NurbsEditor - NURBS Editing Widget │ │ │ │ │ │ │ │ │ │ Figure 12.103: QtVCP NurbsEditor: NURBS Editing Widget │ │ │ │ │ The Nurbs editor allows you to manipulate a NURBS based geometry on screen and then convert │ │ │ │ │ @@ -49620,15 +49620,15 @@ │ │ │ │ │ It is based on PyQt’s QDialog. │ │ │ │ │ 12.7.4.2 JoyPad - 5 button D-pad Widget │ │ │ │ │ It is the base class for the HALPad widget. │ │ │ │ │ This widget looks and acts like a 5 button D-pad, with a LED like indicators in a ring. │ │ │ │ │ You can put text or icons in each of the button positions. │ │ │ │ │ You can connect to output signals when the buttons are pressed. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1138 / 1279 │ │ │ │ │ │ │ │ │ │ There are also input slots to change the color of the indicator(s). │ │ │ │ │ ENUMS There are enumerated constants used to reference indicator positions. │ │ │ │ │ They are used in Qt Designer editor’s property editor or in Python code. │ │ │ │ │ NONE , LEFT, L , RIGHT, R , CENTER, C , TOP, T , BOTTOM, B , LEFTRIGHT, X , TOPBOTTOM, A │ │ │ │ │ @@ -49665,15 +49665,15 @@ │ │ │ │ │ The set_highlight() function must be used prior to set the indicator to use. │ │ │ │ │ Signals These signals will be sent when buttons are pressed. │ │ │ │ │ They can be connected to in Qt Designer editor or Python code. │ │ │ │ │ The first two output a string that indicates the button pressed: │ │ │ │ │ │ │ │ │ │ joy_btn_pressed (string) , joy_btn_released (string) , joy_l_pressed (bool) , joy_l_released (boo │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1139 / 1279 │ │ │ │ │ │ │ │ │ │ They are based on PyQt’s Signal (QtCore.pyqtSignal()) │ │ │ │ │ Slots Slots can be connected to in Qt Designer editor or Python code: │ │ │ │ │ set_colorStateTrue() , set_colorStateFalse() , set_colorState(_bool_) , set_true_color(_str_) │ │ │ │ │ │ │ │ │ │ @@ -49709,15 +49709,15 @@ │ │ │ │ │ self.w.joypadename.setProperty(’true_color’,’green’) │ │ │ │ │ self.w.joypadename.setProperty(’false_color’,’red’) │ │ │ │ │ │ │ │ │ │ 12.7.5 BaseClass/Mixin Widgets │ │ │ │ │ These widgets are used combine different properties and behaviours into other widgets. │ │ │ │ │ You will see them as a collapsible header in the Qt Designer properties column. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1140 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.5.1 IndicatedPushButtons │ │ │ │ │ This class modifies QPushButton behaviour. │ │ │ │ │ indicator_option puts a LED on the top of the button. │ │ │ │ │ │ │ │ │ │ @@ -49747,15 +49747,15 @@ │ │ │ │ │ │ │ │ │ │ Options IndicatedPushButton have exclusive options: │ │ │ │ │ indicator_HAL_pin_option │ │ │ │ │ Adds a halpin, named -led that controls the button indicator state. │ │ │ │ │ indicator_status_option │ │ │ │ │ Makes the LED indicate the state of these selectable LinuxCNC status: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1141 / 1279 │ │ │ │ │ │ │ │ │ │ • Is Estopped │ │ │ │ │ • Is On │ │ │ │ │ • All Homed │ │ │ │ │ • Is Joint Homed │ │ │ │ │ @@ -49797,15 +49797,15 @@ │ │ │ │ │ color: yellow; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ Often, having the button disabled and enabled based on the state of LinuxCNC’s motion controller is │ │ │ │ │ necessary. │ │ │ │ │ There are several properties that can be selected to aid with this: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1142 / 1279 │ │ │ │ │ │ │ │ │ │ isAllHomedSentive , isOnSensitive , isIdleSensitive , isRunSensitive , isManSensitive , isMDISen │ │ │ │ │ You can select multiple properties for combined requirements. │ │ │ │ │ Choosing the checked_state_text_option allows a checkable button to change the text based on it’s │ │ │ │ │ checked state. │ │ │ │ │ @@ -49841,15 +49841,15 @@ │ │ │ │ │ │ │ │ │ │ 12.7.6 Import-Only Widgets │ │ │ │ │ These widgets are usually the base class widget for other QtVCP widgets. │ │ │ │ │ They are not available directly from the Qt Designer editor but could be imported and manually │ │ │ │ │ inserted. │ │ │ │ │ They could also be subclassed to make a similar widget with new features. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1143 / 1279 │ │ │ │ │ │ │ │ │ │ 12.7.6.1 Auto Height │ │ │ │ │ Widget for measuring two heights with a probe. │ │ │ │ │ For setup. │ │ │ │ │ 12.7.6.2 G-code Utility │ │ │ │ │ @@ -49872,15 +49872,15 @@ │ │ │ │ │ 12.8.1 Status │ │ │ │ │ Status is a library that sends GObject messages based on LinuxCNC’s current state. It is an │ │ │ │ │ extension of GladeVCP’s GStat object. │ │ │ │ │ It also has some functions to report status on such things as internal jog rate. │ │ │ │ │ You connect a function call to the STATUS message you are interested in, and QtVCP will call this │ │ │ │ │ function when the message is sent from STATUS. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1144 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.1.1 Usage │ │ │ │ │ • Import Status modules │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -49914,15 +49914,15 @@ │ │ │ │ │ print(’LinuxCNC machine is on’) │ │ │ │ │ def on_state_off(self): │ │ │ │ │ print(’LinuxCNC machine is off’) │ │ │ │ │ │ │ │ │ │ 12.8.2 Info │ │ │ │ │ Info is a library to collect and filter data from the INI file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.2.1 Available data and defaults │ │ │ │ │ LINUXCNC_IS_RUNNING │ │ │ │ │ LINUXCNC_VERSION │ │ │ │ │ INIPATH │ │ │ │ │ INI = linuxcnc.ini(INIPATH) │ │ │ │ │ MDI_HISTORY_PATH = ’~/.axis_mdi_history’ │ │ │ │ │ @@ -49970,15 +49970,15 @@ │ │ │ │ │ MAX_SPINDLE_0_OVERRIDE = 100 │ │ │ │ │ MIN_SPINDLE_0_OVERRIDE = 50 │ │ │ │ │ MAX_FEED_OVERRIDE = 1.5 │ │ │ │ │ MAX_TRAJ_VELOCITY │ │ │ │ │ │ │ │ │ │ 1145 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1146 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.2.2 User message dialog info │ │ │ │ │ USRMESS_BOLDTEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_BOLDTEXT”) │ │ │ │ │ USRMESS_TEXT = self.INI.findall(”DISPLAY”, ”MESSAGE_TEXT”) │ │ │ │ │ USRMESS_TYPE = self.INI.findall(”DISPLAY”, ”MESSAGE_TYPE”) │ │ │ │ │ @@ -50022,15 +50022,15 @@ │ │ │ │ │ INFO = Info() │ │ │ │ │ │ │ │ │ │ • Access INFO data Use this general syntax: │ │ │ │ │ home_state = INFO.NO_HOME_REQUIRED │ │ │ │ │ if INFO.MACHINE_IS_METRIC is True: │ │ │ │ │ print(’Metric based’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1147 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.3 Action │ │ │ │ │ Action library is used to command LinuxCNC’s motion controller. │ │ │ │ │ It tries to hide incidental details and add convenience methods for developers. │ │ │ │ │ 12.8.3.1 Helpers │ │ │ │ │ @@ -50066,15 +50066,15 @@ │ │ │ │ │ ACTION.SET_LIMITS_OVERRIDE() │ │ │ │ │ ACTION.CALL_MDI(code) │ │ │ │ │ ACTION.CALL_MDI_WAIT(code) │ │ │ │ │ ACTION.CALL_INI_MDI(number) │ │ │ │ │ ACTION.CALL_OWORD() │ │ │ │ │ ACTION.OPEN_PROGRAM(filename) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ACTION.SAVE_PROGRAM(text_source, fname): │ │ │ │ │ ACTION.SET_AXIS_ORIGIN(axis,value) │ │ │ │ │ ACTION.SET_TOOL_OFFSET(axis,value,fixture = False) │ │ │ │ │ ACTION.RUN() │ │ │ │ │ ACTION.ABORT() │ │ │ │ │ ACTION.PAUSE() │ │ │ │ │ @@ -50115,15 +50115,15 @@ │ │ │ │ │ ACTION.SET_BLOCK_DELETE_OFF() │ │ │ │ │ ACTION.RELOAD_DISPLAY() │ │ │ │ │ ACTION.SET_GRAPHICS_VIEW(view) │ │ │ │ │ ACTION.UPDATE_MACHINE_LOG(text, option=None): │ │ │ │ │ │ │ │ │ │ 1148 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1149 / 1279 │ │ │ │ │ │ │ │ │ │ ACTION.CALL_DIALOG(command): │ │ │ │ │ ACTION.HIDE_POINTER(state): │ │ │ │ │ ACTION.PLAY_SOUND(path): │ │ │ │ │ ACTION.PLAY_ERROR(): │ │ │ │ │ @@ -50157,15 +50157,15 @@ │ │ │ │ │ • [0] will be real tools information │ │ │ │ │ • [1] will be wear tools information (tool numbers will be over 10000; Fanuc style tool wear) │ │ │ │ │ By default, adds a blank tool entry with tool number -99. │ │ │ │ │ You can preload the newtool array with tool information. │ │ │ │ │ DELETE_TOOLS(_toolnumber_) │ │ │ │ │ Delete the numbered tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1150 / 1279 │ │ │ │ │ │ │ │ │ │ SAVE_TOOLFILE(_toolarray_) │ │ │ │ │ This will parse the toolarray and save it to the tool file specified in the INI file as the tool │ │ │ │ │ path. │ │ │ │ │ This tool array must contain all the available tools information. │ │ │ │ │ @@ -50201,15 +50201,15 @@ │ │ │ │ │ PATH.RIPCONFIGDIR │ │ │ │ │ The Run-in-place config folder for QtVCP screens. │ │ │ │ │ PATH.BASEDIR │ │ │ │ │ Base folder for LinuxCNC. │ │ │ │ │ PATH.BASENAME │ │ │ │ │ The Qt Designer files name (no ending). │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ PATH.IMAGEDIR │ │ │ │ │ The QtVCP image folder. │ │ │ │ │ PATH.SCREENDIR │ │ │ │ │ The QtVCP builtin Screen folder. │ │ │ │ │ PATH.PANELDIR │ │ │ │ │ The QtVCP builtin VCP folder. │ │ │ │ │ @@ -50242,15 +50242,15 @@ │ │ │ │ │ There are some helper functions available: │ │ │ │ │ file_list = PATH.find_vismach_files() │ │ │ │ │ directory_list = PATH.find_screen_dirs() │ │ │ │ │ directory_list = PATH.find_panel_dirs() │ │ │ │ │ │ │ │ │ │ 1151 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1152 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.5.3 Usage │ │ │ │ │ • Import Path module │ │ │ │ │ Add this Python code to your import section: │ │ │ │ │ ############################ │ │ │ │ │ @@ -50282,15 +50282,15 @@ │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ ########################################### │ │ │ │ │ WIDGETS = VCPWindow() │ │ │ │ │ │ │ │ │ │ 12.8.7 Aux_program_loader │ │ │ │ │ Aux_program_loader module allows an easy way to load auxiliary programs LinuxCNC often uses. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.8.7.1 Helpers │ │ │ │ │ │ │ │ │ │ load_halmeter() │ │ │ │ │ Halmeter is used to display one HAL pin data. │ │ │ │ │ Load a halmeter with: │ │ │ │ │ AUX_PRGM.load_halmeter() │ │ │ │ │ @@ -50329,15 +50329,15 @@ │ │ │ │ │ ############################ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from qtvcp.lib.aux_program_loader import Aux_program_loader │ │ │ │ │ │ │ │ │ │ 1153 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1154 / 1279 │ │ │ │ │ │ │ │ │ │ • Instantiate Aux_program_loader module │ │ │ │ │ Add this Python code to your instantiate section: │ │ │ │ │ ########################################### │ │ │ │ │ # **** INSTANTIATE LIBRARIES SECTION **** # │ │ │ │ │ @@ -50375,15 +50375,15 @@ │ │ │ │ │ # the widgets are instantiated. │ │ │ │ │ # the HAL pins are built but HAL is not set ready │ │ │ │ │ def initialized__(self): │ │ │ │ │ KEYBIND.add_call(’Key_F10’,’on_keycall_F10’,None) │ │ │ │ │ KEYBIND.add_call(’Key_F11’,’on_keycall_override’,10) │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_override’,20) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1155 / 1279 │ │ │ │ │ │ │ │ │ │ And then we need to add the functions that get called. │ │ │ │ │ In the handler file, under the KEY BINDING CALLS section, add this: │ │ │ │ │ ##################### │ │ │ │ │ # KEY BINDING CALLS # │ │ │ │ │ @@ -50419,15 +50419,15 @@ │ │ │ │ │ no buttons to close the dialog. │ │ │ │ │ Yes/No messages have three HAL pins: │ │ │ │ │ • One to show the dialog, │ │ │ │ │ • One for waiting, and │ │ │ │ │ • one for the answer. │ │ │ │ │ By default it will send STATUS messages for focus_overlay and alert sound. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1156 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.9.2 Examples │ │ │ │ │ Here are sample INI message definition code blocks that would be found under the [DISPLAY] heading: │ │ │ │ │ • Status bar and desktop notify pop up message: │ │ │ │ │ MESSAGE_BOLDTEXT = NONE │ │ │ │ │ @@ -50467,15 +50467,15 @@ │ │ │ │ │ Typically STATUS messages are used to sent notify messages. │ │ │ │ │ │ │ │ │ │ 12.8.10.1 Properties │ │ │ │ │ You can set the: │ │ │ │ │ title │ │ │ │ │ Notification message title text. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1157 / 1279 │ │ │ │ │ │ │ │ │ │ message │ │ │ │ │ Notification message content text. │ │ │ │ │ icon │ │ │ │ │ Notification message icon. │ │ │ │ │ @@ -50508,15 +50508,15 @@ │ │ │ │ │ • READY │ │ │ │ │ • ATTENTION │ │ │ │ │ • RING │ │ │ │ │ • DONE │ │ │ │ │ • LOGIN │ │ │ │ │ • LOGOUT │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1158 / 1279 │ │ │ │ │ │ │ │ │ │ Beeps There are three beeps: │ │ │ │ │ • BEEP_RING │ │ │ │ │ • BEEP_START │ │ │ │ │ • BEEP │ │ │ │ │ @@ -50551,15 +50551,15 @@ │ │ │ │ │ │ │ │ │ │ 12.8.14 Toolbar Actions │ │ │ │ │ This library supplies prebuilt submenus and actions for toolbar menus and toolbar buttons. │ │ │ │ │ Toolbuttons, menu and toolbar menus are: │ │ │ │ │ • built in Qt Designer, and │ │ │ │ │ • assigned actions/submenus in the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1159 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.14.1 Actions │ │ │ │ │ │ │ │ │ │ estop , power , load , reload , gcode_properties , run , pause , abort , block_delete , optional_stop │ │ │ │ │ Toggles dimensions display. │ │ │ │ │ @@ -50599,15 +50599,15 @@ │ │ │ │ │ • Add a custom toolbar function: │ │ │ │ │ ##################### │ │ │ │ │ # GENERAL FUNCTIONS # │ │ │ │ │ ##################### │ │ │ │ │ def my_function(self, widget, state): │ │ │ │ │ print(’My function State = ()’.format(state)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1160 / 1279 │ │ │ │ │ │ │ │ │ │ 12.8.15 Qt Vismach Machine Graphics library │ │ │ │ │ Qt_vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach: │ │ │ │ │ • displays the model in a 3D viewport │ │ │ │ │ @@ -50637,15 +50637,15 @@ │ │ │ │ │ to. │ │ │ │ │ Translate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ Scale │ │ │ │ │ This object will perform an OpenGL scale function on a collection object. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1161 / 1279 │ │ │ │ │ │ │ │ │ │ HalTranslate │ │ │ │ │ This object will perform an OpenGL translation calculation on a Collection object, offset by │ │ │ │ │ the HAL pin value. │ │ │ │ │ Translation refers to moving an object in straight line to a different position on screen. │ │ │ │ │ @@ -50686,15 +50686,15 @@ │ │ │ │ │ ArcX │ │ │ │ │ Build an arc by specifying │ │ │ │ │ Box │ │ │ │ │ Build a box specified by the 6 vertex coordinates. │ │ │ │ │ BoxCentered │ │ │ │ │ Build a box centered on origin by specifying the width in X and Y, and the height in Z. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1162 / 1279 │ │ │ │ │ │ │ │ │ │ BoxCenteredXY │ │ │ │ │ Build a box centered in X and Y, and running from Z=0, by specifying the width in X and Y, │ │ │ │ │ and running up or down to the specified height in Z. │ │ │ │ │ Capture │ │ │ │ │ @@ -50735,30 +50735,30 @@ │ │ │ │ │ def initialized__(self): │ │ │ │ │ machine = MILL.Window() │ │ │ │ │ self.w.mainLayout.addWidget(machine) │ │ │ │ │ │ │ │ │ │ 12.8.15.4 More Information │ │ │ │ │ More information on how to build a custom machine simulation in the Qt Vismach chapter. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1163 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9 QtVismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ This chapter is about the Qt embedded version of Vismach, also see: https://sa-cnc.com/linuxcncvismach/ . │ │ │ │ │ │ │ │ │ │ 12.9.1 Introduction │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ Figure 12.105: QtVismach 3D Viewport │ │ │ │ │ The Vismach 3D viewport view can be manipulated as follows: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1164 / 1279 │ │ │ │ │ │ │ │ │ │ • zoom by scroll wheel │ │ │ │ │ • pan by middle button drag │ │ │ │ │ • rotate by right-button drag │ │ │ │ │ • tilt by left button drag │ │ │ │ │ @@ -50819,15 +50819,15 @@ │ │ │ │ │ | │ │ │ │ │ |---zassembly │ │ │ │ │ | │ │ │ │ │ |---zframe │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1165 / 1279 │ │ │ │ │ │ │ │ │ │ | │ │ │ │ │ |---zbody │ │ │ │ │ | │ │ │ │ │ | │ │ │ │ │ @@ -50870,15 +50870,15 @@ │ │ │ │ │ c.ready() │ │ │ │ │ │ │ │ │ │ 12.9.5 Creating Parts │ │ │ │ │ 12.9.5.1 Import STL or OBJ Files │ │ │ │ │ It is probably easiest to: │ │ │ │ │ • create geometry in a CAD package │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1166 / 1279 │ │ │ │ │ │ │ │ │ │ • import into the model script using the AsciiSTL() or AsciiOBJ() functions. │ │ │ │ │ Both functions can take one of two named arguments, either a filename or data: │ │ │ │ │ part = AsciiSTL(filename=”path/to/file.stl”) │ │ │ │ │ part = AsciiSTL(data=”solid part1 facet normal ...”) │ │ │ │ │ @@ -50913,15 +50913,15 @@ │ │ │ │ │ Creates a box ground on WY plane of width xw / yw and height z. │ │ │ │ │ Composite parts may be created by assembling these primitives either at creation time or subsequently: │ │ │ │ │ part1 = Collection([Sphere(100,100,100,50), CylinderX(100,40,150,30)]) │ │ │ │ │ part2 = Box(50,40,75,100,75,100) │ │ │ │ │ part3 = Collection([part2, TriangleXY(10,10,20,10,15,20,100,101)]) │ │ │ │ │ part4 = Collection([part1, part2]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1167 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.6 Moving Model Parts │ │ │ │ │ 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. They │ │ │ │ │ may also need to be moved to create the animation as the animation rotation axis is created at the │ │ │ │ │ @@ -50955,15 +50955,15 @@ │ │ │ │ │ The HAL component is the next argument. │ │ │ │ │ In QtVCP if you are reading system pins directly then the component argument is set to None. │ │ │ │ │ hal_pin │ │ │ │ │ The name of the HAL pin that will animate the motion. │ │ │ │ │ This needs to match an existing HAL pin that describes the joint position such as: │ │ │ │ │ ”joint.2.pos-fb” │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1168 / 1279 │ │ │ │ │ │ │ │ │ │ Otherwise the component instance would be specified and the pin name of that component │ │ │ │ │ would be specified. xs, ys, zs;; The X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in │ │ │ │ │ the positive X direction. │ │ │ │ │ @@ -50998,15 +50998,15 @@ │ │ │ │ │ Make a triangle to represent a triangular lathe tool, based on the tool table and current loaded │ │ │ │ │ tool. │ │ │ │ │ tool = HalToolTriangle() │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[tool]) │ │ │ │ │ # or more compact: │ │ │ │ │ toolshape = Color([1, 1, 0, 1],[HalToolTriangle()]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1169 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.8 Assembling the model │ │ │ │ │ In order for parts to move together they need to be assembled with the Collection() command. │ │ │ │ │ It is important to assemble the parts and define their motions in the correct sequence. │ │ │ │ │ For example to create a moving head milling machine with a rotating spindle and an animated draw │ │ │ │ │ @@ -51048,15 +51048,15 @@ │ │ │ │ │ Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final │ │ │ │ │ model is created by: │ │ │ │ │ model = Collection([link0, floor, table]) │ │ │ │ │ │ │ │ │ │ Whereas a VMC model with separate parts moving on the base might have │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1170 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.9 Other functions │ │ │ │ │ part = Color([_colorspec_], [_part_]) │ │ │ │ │ Sets the display color of the part. │ │ │ │ │ Note that unlike the other functions, the part definition comes second in this case. │ │ │ │ │ @@ -51098,15 +51098,15 @@ │ │ │ │ │ │ │ │ │ │ Add it to the Window class Collection so it is never moved from the origin. │ │ │ │ │ v.model = Collection([origin, model, world]) │ │ │ │ │ │ │ │ │ │ Start from the cutting tip and work your way back. Add each collection to the model at the origin and │ │ │ │ │ run the script to confirm the location, then rotate/translate and run the script to confirm again. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.9.11 Basic structure of a QtVismach script │ │ │ │ │ # imports │ │ │ │ │ import hal │ │ │ │ │ from qtvcp.lib.qt_vismach.qt_vismach import * │ │ │ │ │ # create HAL pins here if needed │ │ │ │ │ #c = hal.component(”samplegui”) │ │ │ │ │ @@ -51149,15 +51149,15 @@ │ │ │ │ │ # if you call this file directly from python3, it will display a PyQt5 window │ │ │ │ │ # good for confirming the parts of the assembly. │ │ │ │ │ if __name__ == ’__main__’: │ │ │ │ │ main(model, tooltip, work, size=600, hud=None, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1171 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1172 / 1279 │ │ │ │ │ │ │ │ │ │ 12.9.12 Builtin Vismach Sample Panels │ │ │ │ │ QtVCP builtin Vismach Panels │ │ │ │ │ │ │ │ │ │ 12.10 QtVCP: Building Custom Widgets │ │ │ │ │ @@ -51185,15 +51185,15 @@ │ │ │ │ │ • Injecting important variables, │ │ │ │ │ • Calling an extra setup function │ │ │ │ │ • Calling a closing cleanup function at shutdown. │ │ │ │ │ These functions are not called when the Qt Designer editor displays the widgets. │ │ │ │ │ When QtVCP builds a screen from the .ui file: │ │ │ │ │ 1. It searches for all the HAL-ified widgets. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1173 / 1279 │ │ │ │ │ │ │ │ │ │ 2. It finds the ScreenOptions widget, to collect information it needs to inject into the other widgets │ │ │ │ │ 3. It instantiates each widget and if it is a HAL-ified widget, calls the hal_init() function. │ │ │ │ │ hal_init() is defined in the base class and it: │ │ │ │ │ a. Adds variables such as the preference file to every HAL-ified widget. │ │ │ │ │ @@ -51246,15 +51246,15 @@ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ 2 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 3y │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1174 / 1279 │ │ │ │ │ │ │ │ │ │ In this case we need access to: │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ PyQt’s QtWidgets library, │ │ │ │ │ @@ -51326,15 +51326,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ ############################### │ │ │ │ │ # Imports │ │ │ │ │ ############################### │ │ │ │ │ from PyQt5.QtCore import pyqtProperty │ │ │ │ │ from qtvcp.widgets.led_widget import LED │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ from qtvcp.core import Status │ │ │ │ │ ########################################### │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ ########################################### │ │ │ │ │ STATUS = Status() │ │ │ │ │ ########################################## │ │ │ │ │ @@ -51384,15 +51384,15 @@ │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ │ │ │ │ │ 1175 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1176 / 1279 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ is_estopped_status = pyqtProperty(bool, get_is_estopped, set_is_estopped, ←reset_is_estopped) │ │ │ │ │ is_on_status = pyqtProperty(bool, get_is_on, set_is_on, reset_is_on) │ │ │ │ │ @@ -51462,15 +51462,15 @@ │ │ │ │ │ self.setState(False) │ │ │ │ │ self.is_estopped = False │ │ │ │ │ self.is_on = False │ │ │ │ │ self.invert_state = False │ │ │ │ │ │ │ │ │ │ # │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ Defines the name of our custom widget and what other class it inherits from. │ │ │ │ │ In this case we inherit LED - a QtVCP widget that represents a status light. │ │ │ │ │ @@ -51531,15 +51531,15 @@ │ │ │ │ │ self.PREFS_ │ │ │ │ │ the instance of an optional preference file │ │ │ │ │ self.SETTINGS_ │ │ │ │ │ the Qsettings object │ │ │ │ │ We could use this information to create HAL pins or look up image paths etc. │ │ │ │ │ STATUS.connect(’state-estop’, lambda w:self._flip_state(True)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1178 / 1279 │ │ │ │ │ │ │ │ │ │ Lets look at this line more closely: │ │ │ │ │ • STATUS is very common theme is widget building. │ │ │ │ │ STATUS uses GObject message system to send messages to widgets that register to it. │ │ │ │ │ This line is the registering process. │ │ │ │ │ @@ -51586,15 +51586,15 @@ │ │ │ │ │ return self.is_on │ │ │ │ │ def reset_is_on(self): │ │ │ │ │ self.is_on = False │ │ │ │ │ │ │ │ │ │ This is how Qt Designer sets the attributes of the widget. │ │ │ │ │ This can also be called directly in the widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1179 / 1279 │ │ │ │ │ │ │ │ │ │ ####################################### │ │ │ │ │ # Qt Designer properties │ │ │ │ │ ####################################### │ │ │ │ │ invert_state_status = pyqtProperty(bool, get_invert_state, set_invert_state, ←reset_invert_state) │ │ │ │ │ @@ -51634,15 +51634,15 @@ │ │ │ │ │ self._last = 0 │ │ │ │ │ self._block_signal = False │ │ │ │ │ self._auto_label_flag = True │ │ │ │ │ SettingMenu = QMenu() │ │ │ │ │ for system in(’G54’, ’G55’, ’G56’, ’G57’, ’G58’, ’G59’, ’G59.1’, ’G59.2’, ’G59.3’): │ │ │ │ │ Button = QAction(QIcon(’exit24.png’), system, self) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1180 / 1279 │ │ │ │ │ │ │ │ │ │ Button.triggered.connect(self[system.replace(’.’,’_’)]) │ │ │ │ │ SettingMenu.addAction(Button) │ │ │ │ │ self.setMenu(SettingMenu) │ │ │ │ │ self.dialog = EntryDialog() │ │ │ │ │ @@ -51685,15 +51685,15 @@ │ │ │ │ │ def ChangeState(self, joint): │ │ │ │ │ if int(joint) != self._joint: │ │ │ │ │ self._block_signal = True │ │ │ │ │ self.setChecked(False) │ │ │ │ │ self._block_signal = False │ │ │ │ │ self.hal_pin.set(False) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1181 / 1279 │ │ │ │ │ │ │ │ │ │ ############################## │ │ │ │ │ # required class boiler code # │ │ │ │ │ ############################## │ │ │ │ │ def __getitem__(self, item): │ │ │ │ │ @@ -51740,15 +51740,15 @@ │ │ │ │ │ HomeLabel[homed=true] { │ │ │ │ │ color: green; │ │ │ │ │ } │ │ │ │ │ HomeLabel[homed=false] { │ │ │ │ │ color: red; │ │ │ │ │ } │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12.10.6 Use Stylesheets To Change Custom Widget Properties │ │ │ │ │ class Label(QLabel): │ │ │ │ │ def __init__(self, parent=None): │ │ │ │ │ super(Label, self).__init__(parent) │ │ │ │ │ alternateFont0 = self.font │ │ │ │ │ # Qproperty getter and setter │ │ │ │ │ @@ -51793,15 +51793,15 @@ │ │ │ │ │ return Lcnc_GridLayout(parent) │ │ │ │ │ def name(self): │ │ │ │ │ return ”Lcnc_GridLayout” │ │ │ │ │ def group(self): │ │ │ │ │ │ │ │ │ │ 1182 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ return ”LinuxCNC - HAL” │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’lcnc_gridlayout’))) │ │ │ │ │ def toolTip(self): │ │ │ │ │ return ”HAL enable/disable GridLayout widget” │ │ │ │ │ def whatsThis(self): │ │ │ │ │ @@ -51850,15 +51850,15 @@ │ │ │ │ │ def domXml(self): │ │ │ │ │ return ’\n’ │ │ │ │ │ def includeFile(self): │ │ │ │ │ return ”qtvcp.widgets.system_tool_button” │ │ │ │ │ │ │ │ │ │ 1183 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1184 / 1279 │ │ │ │ │ │ │ │ │ │ 12.10.7.3 Making a plugin with a MenuEntry dialog box │ │ │ │ │ It possible to add an entry to the dialog that pops up when you right click the widget in the layout. │ │ │ │ │ This can do things such as selecting options in a more convenient way. │ │ │ │ │ This is the plugin used for action buttons. │ │ │ │ │ @@ -51904,15 +51904,15 @@ │ │ │ │ │ def createWidget(self, parent): │ │ │ │ │ return ActionButton(parent) │ │ │ │ │ # This method returns the name of the custom widget class │ │ │ │ │ def name(self): │ │ │ │ │ return ”ActionButton” │ │ │ │ │ # Returns the name of the group in Qt Designer’s widget box │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ def group(self): │ │ │ │ │ return ”LinuxCNC - Controller” │ │ │ │ │ # Returns the icon │ │ │ │ │ def icon(self): │ │ │ │ │ return QtGui.QIcon(QtGui.QPixmap(ICON.get_path(’actionbutton’))) │ │ │ │ │ # Returns a tool tip short description │ │ │ │ │ @@ -51953,15 +51953,15 @@ │ │ │ │ │ self.setWindowTitle(self.tr(”Set Options”)) │ │ │ │ │ def updateWidget(self): │ │ │ │ │ formWindow = QDesignerFormWindowInterface.findFormWindow(self.widget) │ │ │ │ │ if formWindow: │ │ │ │ │ │ │ │ │ │ 1185 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1186 / 1279 │ │ │ │ │ │ │ │ │ │ formWindow.cursor().setProperty(”estop_action”, │ │ │ │ │ QtCore.QVariant(self.c_estop.isChecked())) │ │ │ │ │ self.accept() │ │ │ │ │ class ActionButtonMenuEntry(QPyDesignerTaskMenuExtension): │ │ │ │ │ @@ -52000,15 +52000,15 @@ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, default value, type, section name) │ │ │ │ │ self.int_value = self.w.PREFS_.getpref(’Integer_value’, 75, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.string_value = self.w.PREFS_.getpref(’String_value’, ’on’, str, ’ ←CUSTOM_FORM_ENTRIES’) │ │ │ │ │ │ │ │ │ │ Writing preferences at close time In the closing_cleanup__() function, add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1187 / 1279 │ │ │ │ │ │ │ │ │ │ if self.w.PREFS_: │ │ │ │ │ # variable name (entry name, variable name, type, section name) │ │ │ │ │ self.w.PREFS_.putpref(’Integer_value’, self.integer_value, int, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ self.w.PREFS_.putpref(’String_value’, self.string_value, str, ’CUSTOM_FORM_ENTRIES’) │ │ │ │ │ @@ -52043,15 +52043,15 @@ │ │ │ │ │ Being able to edit a style on a running screen is convenient. │ │ │ │ │ Import StyleSheetEditor module in the IMPORT SECTION: │ │ │ │ │ from qtvcp.widgets.stylesheeteditor import StyleSheetEditor as SSE │ │ │ │ │ │ │ │ │ │ Instantiate StyleSheetEditor module in the INSTANTIATE SECTION: │ │ │ │ │ STYLEEDITOR = SSE() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1188 / 1279 │ │ │ │ │ │ │ │ │ │ Create a keybinding in the INITIALIZE SECTION: Under the +__init__.(self, halcomp, widgets, │ │ │ │ │ paths):+ function add: │ │ │ │ │ KEYBIND.add_call(’Key_F12’,’on_keycall_F12’) │ │ │ │ │ │ │ │ │ │ @@ -52095,15 +52095,15 @@ │ │ │ │ │ def return_value(self, w, message): │ │ │ │ │ num = message.get(’RETURN’) │ │ │ │ │ id_code = bool(message.get(’ID’) == ’FORM__NUMBER’) │ │ │ │ │ name = bool(message.get(’NAME’) == ’ENTRY’) │ │ │ │ │ if id_code and name and num is not None: │ │ │ │ │ print(’The {} number from {} was: {}’.format(name, id_code, num)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1189 / 1279 │ │ │ │ │ │ │ │ │ │ This catches all general messages so it must check the dialog type and id code to confirm it’s our │ │ │ │ │ dialog. │ │ │ │ │ In this case we had requested an ENTRY dialog and our unique id was FORM_NUMBER, so now we know │ │ │ │ │ the message is for us. │ │ │ │ │ @@ -52138,15 +52138,15 @@ │ │ │ │ │ The objectName of the toolbar button is used to identify the button when configuring it - descriptive │ │ │ │ │ names help. │ │ │ │ │ Using the action editor menu, right click and select edit. │ │ │ │ │ Edit the object name, text, and button type for an appropriate action. │ │ │ │ │ In this example the: │ │ │ │ │ • submenu name must be menuRecent, │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1190 / 1279 │ │ │ │ │ │ │ │ │ │ • actions names must be actionAbout, actionQuit, actionMyFunction │ │ │ │ │ Loads the toolbar_actions library in the IMPORT SECTION │ │ │ │ │ from qtvcp.lib.toolbar_actions import ToolBarActions │ │ │ │ │ │ │ │ │ │ @@ -52190,15 +52190,15 @@ │ │ │ │ │ Define the function called by pin state change in the GENERAL FUNCTIONS SECTION │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def cycleStart(self, state): │ │ │ │ │ if state: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1191 / 1279 │ │ │ │ │ │ │ │ │ │ tab = self.w.mainTab.currentWidget() │ │ │ │ │ if tab in( self.w.tab_auto, self.w.tab_graphics): │ │ │ │ │ ACTION.RUN(line=0) │ │ │ │ │ elif tab == self.w.tab_files: │ │ │ │ │ @@ -52240,15 +52240,15 @@ │ │ │ │ │ jog increment after. │ │ │ │ │ We will build a button that toggles between continuous jog and whatever increment that was already │ │ │ │ │ selected. │ │ │ │ │ In Qt Designer: │ │ │ │ │ • Add an ActionButton with no action │ │ │ │ │ • Call it btn_toggle_continuous. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1192 / 1279 │ │ │ │ │ │ │ │ │ │ • Set the AbstractButton property checkable to True. │ │ │ │ │ • Set the ActionButton properties incr_imperial_number and incr_mm_number to 0. │ │ │ │ │ • Use Qt Designer’s slot editor to use the button signal clicked(bool) to call form’s handler function │ │ │ │ │ toggle_continuous_clicked(). │ │ │ │ │ @@ -52294,15 +52294,15 @@ │ │ │ │ │ Class patching (monkey patching) is a little like black magic - so use it only if needed. │ │ │ │ │ │ │ │ │ │ The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want │ │ │ │ │ to print the file name first. │ │ │ │ │ We can ”class patch” the library to redirect the function call. │ │ │ │ │ In the IMPORT SECTION add: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1193 / 1279 │ │ │ │ │ │ │ │ │ │ from qtvcp.widgets.file_manager import FileManager as FM │ │ │ │ │ │ │ │ │ │ Here we are going to: │ │ │ │ │ 1. Keep a reference to the original function (1) so we can still call it │ │ │ │ │ @@ -52334,15 +52334,15 @@ │ │ │ │ │ def our_load(self,fname): │ │ │ │ │ print(fname) │ │ │ │ │ self.old_load(self.w.filemanager,fname) │ │ │ │ │ │ │ │ │ │ Now our custom function will print the file path to the terminal before loading the file. │ │ │ │ │ Obviously boring but shows the principle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1194 / 1279 │ │ │ │ │ │ │ │ │ │ There is another slightly different way to do this that can have advantages: you can store the reference to the original function in the original class. │ │ │ │ │ The trick here is to make sure the function name you use to store it is not already used in the class. │ │ │ │ │ super__ added to the function name would be a good choice. │ │ │ │ │ We won’t use that in built in QtVCP widgets. │ │ │ │ │ @@ -52379,15 +52379,15 @@ │ │ │ │ │ # **** IMPORT SECTION **** # │ │ │ │ │ ############################ │ │ │ │ │ from PyQt5 import QtWidgets │ │ │ │ │ from PyQt5.QtGui import QColor │ │ │ │ │ from qtvcp.widgets.state_led import StateLED as LED │ │ │ │ │ from qtvcp.core import Status, Info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1195 / 1279 │ │ │ │ │ │ │ │ │ │ Instantiate Status and Info channels STATUS and INFO are initialized outside the handler class so │ │ │ │ │ as to be global references (no self. in front): │ │ │ │ │ ########################################## │ │ │ │ │ # **** instantiate libraries section **** # │ │ │ │ │ @@ -52438,15 +52438,15 @@ │ │ │ │ │ # │ │ │ │ │ self.w.led.setProperty(’is_spindle_at_speed_status’,True) # │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 2y │ │ │ │ │ 1 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1196 / 1279 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ 4y │ │ │ │ │ │ │ │ │ │ self.w.led.setProperty(’color’,QColor(0,255,0,255)) │ │ │ │ │ @@ -52559,15 +52559,15 @@ │ │ │ │ │ │ │ │ │ │ 7 │ │ │ │ │ │ │ │ │ │ We create a QWidget │ │ │ │ │ Since you can only add one widget to the tab corner and we want two there, we must add both │ │ │ │ │ into a container. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ y │ │ │ │ │ │ │ │ │ │ 8 │ │ │ │ │ │ │ │ │ │ 1197 / 1279 │ │ │ │ │ │ │ │ │ │ @@ -52647,15 +52647,15 @@ │ │ │ │ │ self.w = widgets │ │ │ │ │ self.PATHS = paths │ │ │ │ │ # register a function to be called at CYCLE_TIME period (usually every 100 ms) │ │ │ │ │ STATUS.connect(’periodic’, lambda w: self.update_periodic()) │ │ │ │ │ │ │ │ │ │ Create the custom function to be called periodically │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1198 / 1279 │ │ │ │ │ │ │ │ │ │ ##################### │ │ │ │ │ # general functions # │ │ │ │ │ ##################### │ │ │ │ │ def update_periodic(self): │ │ │ │ │ @@ -52697,15 +52697,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ from time import sleep │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ context = zmq.Context() │ │ │ │ │ socket = context.socket(zmq.PUB) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1199 / 1279 │ │ │ │ │ │ │ │ │ │ socket.bind(”tcp://127.0.0.1:5690”) │ │ │ │ │ topic = b’QtVCP’ │ │ │ │ │ # prebuilt message 1 │ │ │ │ │ # makes a dict of function to call plus any arguments │ │ │ │ │ @@ -52763,15 +52763,15 @@ │ │ │ │ │ def __init__(self, halcomp,widgets,paths): │ │ │ │ │ # directly select ZMQ message sending │ │ │ │ │ self.w.screen_options.setProperty(’use_send_zmq_option’,True) │ │ │ │ │ │ │ │ │ │ This allows sending messages to a separate program. │ │ │ │ │ The message sent will depend on what the external program is expecting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1200 / 1279 │ │ │ │ │ │ │ │ │ │ Create a function to send ZMQ messages Let’s add a specific function for testing. │ │ │ │ │ You will need to run LinuxCNC from a terminal to see the printed text. │ │ │ │ │ Also, something needs to be added to call this function, such as a button click. │ │ │ │ │ ##################### │ │ │ │ │ @@ -52811,15 +52811,15 @@ │ │ │ │ │ You can also use the Status library to send a message to the notify library if it is enabled (usually │ │ │ │ │ set in ScreenOptions widget): this will send the message to the statusbar and the desktop notify │ │ │ │ │ dialog. │ │ │ │ │ The messages are also recorded until the user erases them using controls. The users can recall any │ │ │ │ │ recorded messages. │ │ │ │ │ There are several options: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1201 / 1279 │ │ │ │ │ │ │ │ │ │ STATUS.TEMPORARY_MESSAGE │ │ │ │ │ Show the message for a short time only. │ │ │ │ │ STATUS.OPERATOR_ERROR , STATUS.OPERATOR_TEXT , STATUS.NML_ERROR , STATUS.NML_TEXT │ │ │ │ │ │ │ │ │ │ @@ -52858,15 +52858,15 @@ │ │ │ │ │ Notice we sometimes compare to widget, sometimes to widget.parent(). │ │ │ │ │ This is because some QtVCP widgets are built from multiple sub-widgets and the latter actually get │ │ │ │ │ the focus; so we need to check the parent of those sub-widgets. │ │ │ │ │ Other times the main widget is what gets the focus, e.g., the G-code display widget can be set to │ │ │ │ │ accept the focus. In that case there are no sub-widgets in it, so comparing to the widget.parent() │ │ │ │ │ would get you the container that holds the G-code widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1202 / 1279 │ │ │ │ │ │ │ │ │ │ 12.12 QtVCP Development │ │ │ │ │ 12.12.1 Overview │ │ │ │ │ The intention of QtVCP is to supply an infrastructure to support screen and VCP panel building │ │ │ │ │ for LinuxCNC. │ │ │ │ │ @@ -52895,15 +52895,15 @@ │ │ │ │ │ 12.12.3 QtVCP Startup To Shutdown │ │ │ │ │ QtVCP source is located in +src/emc/usr_intf/qtvcp+ folder of LinuxCNC source tree. │ │ │ │ │ 12.12.3.1 QtVCP Startup │ │ │ │ │ When QtVCP first starts: │ │ │ │ │ 1. It must decide if this object is a screen or a panel. │ │ │ │ │ 2. It searches for and collects information about paths of required files and useful folders. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1203 / 1279 │ │ │ │ │ │ │ │ │ │ 3. It then: │ │ │ │ │ a. Builds the HAL component, │ │ │ │ │ b. Loads the window instance, │ │ │ │ │ c. Adds handler extensions, │ │ │ │ │ @@ -52939,15 +52939,15 @@ │ │ │ │ │ LIBDIR │ │ │ │ │ Path of QtVCP’s Python library │ │ │ │ │ HANDLER │ │ │ │ │ Path of handler file │ │ │ │ │ XML │ │ │ │ │ Path of .ui file │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1204 / 1279 │ │ │ │ │ │ │ │ │ │ DOMAIN │ │ │ │ │ Path of translation │ │ │ │ │ IS_SCREEN │ │ │ │ │ Screen/panel switch │ │ │ │ │ @@ -52981,15 +52981,15 @@ │ │ │ │ │ Most importantly widgets that require regular key input and not jogging, should be checked for in the │ │ │ │ │ processed_key_event__ function. │ │ │ │ │ 12.12.5.4 Preference File │ │ │ │ │ Some QtVCP widgets use the preference file to record important information. │ │ │ │ │ This requires the preference file to be set up early in the widget initialization process. │ │ │ │ │ The easiest way to do this is to use the ScreenOptions widget. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1205 / 1279 │ │ │ │ │ │ │ │ │ │ 12.12.5.5 Widget Special Setup Functions │ │ │ │ │ QtVCP looks for and calls the +_hal_init()+ function when the widget is first loaded. │ │ │ │ │ It is not called when using Qt Designer editor. │ │ │ │ │ After this function is called the widget has access to some special variables: │ │ │ │ │ @@ -53016,15 +53016,15 @@ │ │ │ │ │ By default, if there is a preference file, the dialogs will remember their last size/placement. │ │ │ │ │ It is possible to override this so they open in the same location each time. │ │ │ │ │ 12.12.5.7 Styles (Themes) │ │ │ │ │ While it is possible to set styles in Qt Designer, it is more convenient to change them later if they are │ │ │ │ │ all set in a separate .qss file. │ │ │ │ │ The file should be put in the same location as the handler file. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1206 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 13 │ │ │ │ │ │ │ │ │ │ User Interface Programming │ │ │ │ │ 13.1 Panelui │ │ │ │ │ @@ -53053,15 +53053,15 @@ │ │ │ │ │ loadrt sampler cfg=u depth=1025 │ │ │ │ │ #uncomment to validate the panelui INI file │ │ │ │ │ #loadusr pyui │ │ │ │ │ # -d = debug, -v = verbose debug │ │ │ │ │ # -d will show you keypress identification and commands called │ │ │ │ │ # -v is for develeper info │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1207 / 1279 │ │ │ │ │ │ │ │ │ │ loadusr -W panelui -d │ │ │ │ │ # using simulated buttons instead of the MESA 7I73 card │ │ │ │ │ # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes │ │ │ │ │ loadrt sim_matrix_kb │ │ │ │ │ @@ -53102,15 +53102,15 @@ │ │ │ │ │ This allows one to change the prefix of the HAL pins from panelui to an arbitrary name. │ │ │ │ │ ZMQ Messaging Setup │ │ │ │ │ [ZMQ_SETUP] │ │ │ │ │ TOPIC = ’QTVCP’ │ │ │ │ │ SOCKET = ’tcp://127.0.0.1:5690’ │ │ │ │ │ ENABLE = True │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1208 / 1279 │ │ │ │ │ │ │ │ │ │ This sets up and enables ZMQ based messaging. TOPIC and SOCKET must match the listening program. │ │ │ │ │ Radio Buttons Radiobutons allow only one button in the group to be active at a time. Each group │ │ │ │ │ has its own output pin, separate from each button in the group. Radio button definitions start with │ │ │ │ │ the text RADIO_BUTTON inside single brackets. │ │ │ │ │ @@ -53164,15 +53164,15 @@ │ │ │ │ │ │ │ │ │ │ Toggle Buttons Togglebuttons only change state on each press of the button. Toggle button definitions start with the text TOGGLE_BUTTON inside single brackets. │ │ │ │ │ [TOGGLE_BUTTONS] │ │ │ │ │ # Each button name inside double brackets, must be unique and is case sensitive. │ │ │ │ │ # This button, named ’tool_change’is controller by the row 2 column 5 key. │ │ │ │ │ # It has a BIT output, will output 1 on true state and 0 on false state. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1209 / 1279 │ │ │ │ │ │ │ │ │ │ # It also has a status pin which will follow it’s current state. │ │ │ │ │ # DEFAULT sets this to true when first initialized. │ │ │ │ │ # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will │ │ │ │ │ # add the lines regardless │ │ │ │ │ @@ -53216,15 +53216,15 @@ │ │ │ │ │ • required argument: axis number (int) │ │ │ │ │ spindle_forward_adjust │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ • Description: If the spindle is stopped it will start in the forward direction. If it is already running it │ │ │ │ │ will increase or decrease the rpm depending on what direction the spindle is running in. │ │ │ │ │ spindle_forward │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1210 / 1279 │ │ │ │ │ │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse │ │ │ │ │ • optional argument: starting RPM (int) - default 100 │ │ │ │ │ spindle_reverse_adjust │ │ │ │ │ @@ -53250,15 +53250,15 @@ │ │ │ │ │ • Description: Move Z axis to the given machine position │ │ │ │ │ feed_hold │ │ │ │ │ • required argument: state (bool 0 or 1) │ │ │ │ │ feed_override │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ rapid_override │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ • required argument: rate (float 0-1) │ │ │ │ │ spindle_override │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ max_velocity │ │ │ │ │ • required argument: rate (float) │ │ │ │ │ optional_stop │ │ │ │ │ @@ -53290,15 +53290,15 @@ │ │ │ │ │ STATUS_PIN = False │ │ │ │ │ DEFAULT = FALSE │ │ │ │ │ TRUE_STATE = 1 │ │ │ │ │ FALSE_STATE = 0 │ │ │ │ │ │ │ │ │ │ 1211 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1212 / 1279 │ │ │ │ │ │ │ │ │ │ Here is a sample program that will receive the message and print it to the terminal. │ │ │ │ │ import zmq │ │ │ │ │ import json │ │ │ │ │ # ZeroMQ Context │ │ │ │ │ @@ -53342,15 +53342,15 @@ │ │ │ │ │ print(wname.metadata) │ │ │ │ │ # Print the calling widgets internal metadata (from config ←file) │ │ │ │ │ # Call a mdi command to print a msg in LinuxCNC. │ │ │ │ │ # This requires LinuxCNC to be homed, but does not check for that. │ │ │ │ │ # parent commands expect a widget_instance - None is substituted │ │ │ │ │ self.parent.mdi(None,’(MSG, Hello Linuxcnc World!)’) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1213 / 1279 │ │ │ │ │ │ │ │ │ │ # Each call to this function will cycle the mode of LinuxCNC. │ │ │ │ │ def cycle_mode(self, wname, m): │ │ │ │ │ if self.current_mode == 0: │ │ │ │ │ self.current_mode = 1 │ │ │ │ │ @@ -53390,15 +53390,15 @@ │ │ │ │ │ PROGRAM_EXTENSION = .py Python Script │ │ │ │ │ py = python │ │ │ │ │ │ │ │ │ │ In this way, any Python script can be opened, and its output is treated as G-code. One such example │ │ │ │ │ script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes │ │ │ │ │ along the circumference of a circle. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1214 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 13.1: Circular Holes │ │ │ │ │ If the filter program sends lines to stderr of the form: │ │ │ │ │ FILTER_PROGRESS=10 │ │ │ │ │ │ │ │ │ │ @@ -53418,15 +53418,15 @@ │ │ │ │ │ time.sleep(.1) │ │ │ │ │ # output a line of G-code │ │ │ │ │ print(’G0 X1’, file=sys.stdout) │ │ │ │ │ # update progress │ │ │ │ │ print(’FILTER_PROGRESS={}’.format(i), file=sys.stderr) │ │ │ │ │ except: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1215 / 1279 │ │ │ │ │ │ │ │ │ │ # This causes an error message │ │ │ │ │ print(’Error; But this was only a test’, file=sys.stderr) │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ │ │ │ │ │ @@ -53469,15 +53469,15 @@ │ │ │ │ │ raise SystemExit(1) │ │ │ │ │ def process(self): │ │ │ │ │ try: │ │ │ │ │ # get next line of code │ │ │ │ │ codeLine = self.temp[self.line] │ │ │ │ │ # process the line somehow │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1216 / 1279 │ │ │ │ │ │ │ │ │ │ # push out processed code │ │ │ │ │ print(codeLine, file=sys.stdout) │ │ │ │ │ self.line +=1 │ │ │ │ │ # update progress │ │ │ │ │ @@ -53517,15 +53517,15 @@ │ │ │ │ │ Make sure you use the correct path to your INI file. │ │ │ │ │ loadusr halui -ini /path/to/inifile.ini │ │ │ │ │ │ │ │ │ │ 13.3.2 MDI │ │ │ │ │ Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL │ │ │ │ │ pin. This is possible by adding MDI commands to the INI file in the [HALUI] section. Example: │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1217 / 1279 │ │ │ │ │ │ │ │ │ │ [HALUI] │ │ │ │ │ MDI_COMMAND = G0 X0 │ │ │ │ │ MDI_COMMAND = G0 G53 Z0 │ │ │ │ │ MDI_COMMAND = G28 │ │ │ │ │ @@ -53570,15 +53570,15 @@ │ │ │ │ │ 13.3.4.1 Abort │ │ │ │ │ • halui.abort (bit, in) - pin to send an abort message (clears out most errors) │ │ │ │ │ 13.3.4.2 E-Stop │ │ │ │ │ • halui.estop.activate (bit, in) - pin for requesting E-Stop │ │ │ │ │ • halui.estop.is-activated (bit, out) - indicates E-stop reset │ │ │ │ │ • halui.estop.reset (bit, in) - pin for requesting E-Stop reset │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1218 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.3 Feed Override │ │ │ │ │ • halui.feed-override.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ • halui.feed-override.counts (s32, in) - counts * scale = FO percentage. Can be used with an encoder │ │ │ │ │ or direct-value. │ │ │ │ │ @@ -53607,15 +53607,15 @@ │ │ │ │ │ • halui.lube.on (bit, in) - pin for requesting lube on │ │ │ │ │ 13.3.4.8 Machine │ │ │ │ │ • 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 │ │ │ │ │ • halui.machine.is-on (bit, out) - indicates machine on │ │ │ │ │ • halui.machine.off (bit, in) - pin for requesting machine off │ │ │ │ │ • halui.machine.on (bit, in) - pin for requesting machine on │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1219 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.9 Max Velocity │ │ │ │ │ The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ] │ │ │ │ │ section of the INI file. │ │ │ │ │ • halui.max-velocity.count-enable (bit, in) - must be true for counts or direct-value to work. │ │ │ │ │ @@ -53649,15 +53649,15 @@ │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.on-soft-max-limit (bit out) - status pin telling that joint N is on the positive software │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.on-soft-min-limit (bit out) - status pin telling that joint N is on the negative software │ │ │ │ │ limit │ │ │ │ │ • halui.joint.N.override-limits (bit out) - status pin telling that joint N’s limits are temporarily overridden │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1220 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.joint.N.unhome (bit in) - pin for unhoming joint N │ │ │ │ │ • halui.joint.selected (u32 out) - selected joint number (0 … num_joints-1) │ │ │ │ │ • halui.joint.selected.has-fault (bit out) - status pin selected joint is faulted │ │ │ │ │ • halui.joint.selected.home (bit in) - pin for homing the selected joint │ │ │ │ │ @@ -53690,15 +53690,15 @@ │ │ │ │ │ • halui.joint.selected.increment (float in) - pin for setting the jog increment for the selected joint when │ │ │ │ │ using increment-plus/minus │ │ │ │ │ • halui.joint.selected.increment-minus (bit in) - a rising edge will will make the selected joint jog in │ │ │ │ │ the negative direction by the increment amount │ │ │ │ │ • halui.joint.selected.increment-plus (bit in) - a rising edge will will make the selected joint jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1221 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.joint.selected.minus (bit in) - pin for jogging the selected joint in negative direction at the │ │ │ │ │ halui.joint.jog-speed velocity │ │ │ │ │ │ │ │ │ │ • halui.joint.selected.plus (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jogspeed velocity │ │ │ │ │ @@ -53731,15 +53731,15 @@ │ │ │ │ │ • halui.axis.selected.increment-plus (bit in) - a rising edge will will make the selected axis jog in the │ │ │ │ │ positive direction by the increment amount │ │ │ │ │ • halui.axis.selected.minus (bit in) - pin for jogging the selected axis in negative direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ • halui.axis.selected.plus (pin in) - for jogging the selected axis bit in in positive direction at the │ │ │ │ │ halui.axis.jog-speed velocity │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1222 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.15 Mode │ │ │ │ │ • halui.mode.auto (bit, in) - pin for requesting auto mode │ │ │ │ │ • halui.mode.is-auto (bit, out) - indicates auto mode is on │ │ │ │ │ • halui.mode.is-joint (bit, out) - indicates joint by joint jog mode is on │ │ │ │ │ @@ -53769,15 +53769,15 @@ │ │ │ │ │ • halui.rapid-override.count-enable (bit in (default: TRUE)) - When TRUE, modify Rapid Override │ │ │ │ │ when counts changes. │ │ │ │ │ • halui.rapid-override.counts (s32 in) - counts X scale = Rapid Override percentage. Can be used │ │ │ │ │ with an encoder or direct-value. │ │ │ │ │ • halui.rapid-override.decrease (bit in) - pin for decreasing the Rapid Override (-=scale) │ │ │ │ │ • halui.rapid-override.direct-value (bit in) - pin to enable direct value Rapid Override input │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1223 / 1279 │ │ │ │ │ │ │ │ │ │ • halui.rapid-override.increase (bit in) - pin for increasing the Rapid Override (+=scale) │ │ │ │ │ • halui.rapid-override.scale (float in) - pin for setting the scale on changing the Rapid Override │ │ │ │ │ • halui.rapid-override.value (float out) - current Rapid Override value │ │ │ │ │ • halui.rapid-override.reset (bit, in) - pin for resetting the Rapid Override value (scale=1.0) │ │ │ │ │ @@ -53802,15 +53802,15 @@ │ │ │ │ │ • halui.spindle.N.is-on (bit, out) - indicates spindle is on (either direction) │ │ │ │ │ • halui.spindle.N.reverse (bit, in)- starts the spindle with a CCW motion │ │ │ │ │ • halui.spindle.N.runs-backward (bit, out) - indicates spindle is on, and in reverse │ │ │ │ │ • halui.spindle.N.runs-forward (bit, out) - indicates spindle is on, and in forward │ │ │ │ │ • halui.spindle.N.start (bit, in) - starts the spindle │ │ │ │ │ • halui.spindle.N.stop (bit, in) - stops the spindle │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1224 / 1279 │ │ │ │ │ │ │ │ │ │ 13.3.4.20 Tool │ │ │ │ │ • halui.tool.length-offset.a (float out) - current applied tool length offset for the A axis │ │ │ │ │ • halui.tool.length-offset.b (float out) - current applied tool length offset for the B axis │ │ │ │ │ • halui.tool.length-offset.c (float out) - current applied tool length offset for the C axis │ │ │ │ │ @@ -53831,15 +53831,15 @@ │ │ │ │ │ To connect a remote program start button to LinuxCNC you use the halui.program.run pin and the │ │ │ │ │ halui.mode.auto pin. You have to insure that it is OK to run first by using the halui.mode.is-auto │ │ │ │ │ pin. You do this with an and2 component. The following figure shows how this is done. When the │ │ │ │ │ Remote Run Button is pressed it is connected to both halui.mode.auto and and2.0.in0. If it is OK │ │ │ │ │ for auto mode the pin halui.mode.is-auto will be on. If both the inputs to the and2.0 component │ │ │ │ │ are on the and2.0.out will be on and this will start the program. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1225 / 1279 │ │ │ │ │ │ │ │ │ │ Figure 13.2: Remote Start Example │ │ │ │ │ The hal commands needed to accomplish the above are: │ │ │ │ │ net program-start-btn halui.mode.auto and2.0.in0 <= │ │ │ │ │ net program-run-ok and2.0.in1 <= halui.mode.is-auto │ │ │ │ │ @@ -53862,15 +53862,15 @@ │ │ │ │ │ Your input and output pins are connected to the pins wired to the other controller. They may be │ │ │ │ │ parallel port pins or any other I/O pins that you have access to. │ │ │ │ │ │ │ │ │ │ This system works in the following way. When an M0 is encountered in your G-code, the halui.program.is-p │ │ │ │ │ signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC │ │ │ │ │ is paused. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1226 / 1279 │ │ │ │ │ │ │ │ │ │ To resume the LinuxCNC G-code program, when the external controller is ready it will make its output │ │ │ │ │ true. This will signal LinuxCNC that it should resume executing G-code. │ │ │ │ │ Difficulties in timing │ │ │ │ │ • The ”resume” input return signal should not be longer than the time required to get the G-code │ │ │ │ │ @@ -53904,15 +53904,15 @@ │ │ │ │ │ • send the command by using one of the linuxcnc command channel methods │ │ │ │ │ To retrieve messages from the error channel, poll the error channel periodically, and process any │ │ │ │ │ messages retrieved. │ │ │ │ │ • poll the status channel, either periodically or as needed │ │ │ │ │ • print any error message and explore the exception code │ │ │ │ │ linuxcnc also defines the error Python exception type to support error reporting. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1227 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.3 Reading LinuxCNC status │ │ │ │ │ Here is a Python fragment to explore the contents of the linuxcnc.stat object which contains some │ │ │ │ │ 80+ values (run while linuxcnc is running for typical values): │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ @@ -53954,15 +53954,15 @@ │ │ │ │ │ Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256. │ │ │ │ │ block_delete │ │ │ │ │ (returns boolean) - block delete current status. │ │ │ │ │ call_level │ │ │ │ │ (returns integer) ̀ - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise │ │ │ │ │ specified │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1228 / 1279 │ │ │ │ │ │ │ │ │ │ command │ │ │ │ │ (returns string) - currently executing command. │ │ │ │ │ current_line │ │ │ │ │ (returns integer) - currently executing line. │ │ │ │ │ @@ -54004,15 +54004,15 @@ │ │ │ │ │ file │ │ │ │ │ (returns string) - currently loaded G-code filename with path. │ │ │ │ │ flood │ │ │ │ │ (returns integer) - Flood status, either FLOOD_OFF or FLOOD_ON. │ │ │ │ │ g5x_index │ │ │ │ │ (returns integer) - currently active coordinate system, G54=1, G55=2 etc. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1229 / 1279 │ │ │ │ │ │ │ │ │ │ g5x_offset │ │ │ │ │ (returns tuple of floats) - offset of the currently active coordinate system. │ │ │ │ │ g92_offset │ │ │ │ │ (returns tuple of floats) - pose of the current g92 offset. │ │ │ │ │ @@ -54055,15 +54055,15 @@ │ │ │ │ │ • KINEMATICS_FORWARD_ONLY │ │ │ │ │ • KINEMATICS_INVERSE_ONLY │ │ │ │ │ • KINEMATICS_BOTH │ │ │ │ │ limit │ │ │ │ │ (returns tuple of integers) - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, │ │ │ │ │ maxSoftLimit=8. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1230 / 1279 │ │ │ │ │ │ │ │ │ │ linear_units │ │ │ │ │ (returns float) - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value. │ │ │ │ │ lube │ │ │ │ │ (returns integer) - lube on flag. │ │ │ │ │ @@ -54107,15 +54107,15 @@ │ │ │ │ │ position │ │ │ │ │ (returns tuple of floats) - trajectory position. │ │ │ │ │ probe_tripped │ │ │ │ │ (returns boolean) - flag, True if probe has tripped (latch) │ │ │ │ │ probe_val │ │ │ │ │ (returns integer) - reflects value of the motion.probe-input pin. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1231 / 1279 │ │ │ │ │ │ │ │ │ │ probed_position │ │ │ │ │ (returns tuple of floats) - position where probe tripped. │ │ │ │ │ probing │ │ │ │ │ (returns boolean) - flag, True if a probe operation is in progress. │ │ │ │ │ @@ -54156,15 +54156,15 @@ │ │ │ │ │ tool_offset │ │ │ │ │ (returns tuple of floats) - offset values of the current tool. │ │ │ │ │ tool_table │ │ │ │ │ (returns tuple of tool_results) - list of tool entries. Each entry is a sequence of the following fields: │ │ │ │ │ id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, │ │ │ │ │ backangle, orientation. The id and orientation are integers and the rest are floats. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1232 / 1279 │ │ │ │ │ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ s.poll() │ │ │ │ │ @@ -54200,15 +54200,15 @@ │ │ │ │ │ enabled │ │ │ │ │ (returns integer) - non-zero means enabled. │ │ │ │ │ fault │ │ │ │ │ (returns integer) - non-zero means axis amp fault. │ │ │ │ │ ferror_current │ │ │ │ │ (returns float) - current following error. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1233 / 1279 │ │ │ │ │ │ │ │ │ │ ferror_highmark │ │ │ │ │ (returns float) - magnitude of max following error. │ │ │ │ │ homed │ │ │ │ │ (returns integer) - non-zero means has been homed. │ │ │ │ │ @@ -54244,15 +54244,15 @@ │ │ │ │ │ units │ │ │ │ │ (returns float) - joint units per mm, or per degree for angular joints. │ │ │ │ │ (joint units are the same as machine units, unless set otherwise by the configuration parameter │ │ │ │ │ [JOINT_n]UNITS) │ │ │ │ │ velocity │ │ │ │ │ (returns float) - current velocity. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1234 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.4 The spindle dictionary │ │ │ │ │ brake │ │ │ │ │ (returns integer) - value of the spindle brake flag. │ │ │ │ │ direction │ │ │ │ │ @@ -54289,15 +54289,15 @@ │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*import linuxcnc │ │ │ │ │ s = linuxcnc.stat() │ │ │ │ │ c = linuxcnc.command() │ │ │ │ │ def ok_for_mdi(): │ │ │ │ │ s.poll() │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1235 / 1279 │ │ │ │ │ │ │ │ │ │ return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state ←== linuxcnc.INTERP_IDLE) │ │ │ │ │ if ok_for_mdi(): │ │ │ │ │ c.mode(linuxcnc.MODE_MDI) │ │ │ │ │ c.wait_complete() # wait until mode switch executed │ │ │ │ │ @@ -54338,15 +54338,15 @@ │ │ │ │ │ c.override_limits() │ │ │ │ │ c.program_open(”foo.ngc”) │ │ │ │ │ c.reset_interpreter() │ │ │ │ │ c.tool_offset(toolno, z_offset, │ │ │ │ │ │ │ │ │ │ x_offset, diameter, frontangle, backangle, orientation) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1236 / 1279 │ │ │ │ │ │ │ │ │ │ 13.5.6.1 linuxcnc.command attributes │ │ │ │ │ │ │ │ │ │ serial │ │ │ │ │ the current command serial number │ │ │ │ │ @@ -54387,15 +54387,15 @@ │ │ │ │ │ linuxcnc.JOG_STOP │ │ │ │ │ linuxcnc.JOG_CONTINUOUS │ │ │ │ │ linuxcnc.JOG_INCREMENT │ │ │ │ │ jjogmode │ │ │ │ │ True │ │ │ │ │ request individual joint jog (requires teleop_enable(0)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1237 / 1279 │ │ │ │ │ │ │ │ │ │ False │ │ │ │ │ request axis Cartesian coordinate jog (requires teleop_enable(1)) │ │ │ │ │ joint_num_or_axis_index │ │ │ │ │ For joint jog (jjogmode=1) │ │ │ │ │ @@ -54436,15 +54436,15 @@ │ │ │ │ │ set_block_delete(int) │ │ │ │ │ set block delete flag │ │ │ │ │ set_digital_output(int, int) │ │ │ │ │ set digital output pin to value │ │ │ │ │ set_feed_hold(int) │ │ │ │ │ set feed hold on/off │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1238 / 1279 │ │ │ │ │ │ │ │ │ │ set_feed_override(int) │ │ │ │ │ set feed override on/off │ │ │ │ │ set_max_limit(int, float) │ │ │ │ │ set max position limit for a given axis │ │ │ │ │ @@ -54480,15 +54480,15 @@ │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF) │ │ │ │ │ # Stop spindle 0 explicitly. │ │ │ │ │ c.spindle.(linuxcnc.SPINDLE_OFF, 0) │ │ │ │ │ │ │ │ │ │ spindleoverride(float [, int]) │ │ │ │ │ Set spindle override factor. Defaults to spindle 0. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1239 / 1279 │ │ │ │ │ │ │ │ │ │ state(int) │ │ │ │ │ Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, │ │ │ │ │ or STATE_OFF. │ │ │ │ │ task_plan_sync() │ │ │ │ │ @@ -54528,15 +54528,15 @@ │ │ │ │ │ Here’s an example for reading values from an INI file through the linuxcnc.ini object: │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ # -*- coding: utf-8 -*# run as: │ │ │ │ │ # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini │ │ │ │ │ import sys │ │ │ │ │ import linuxcnc │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ inifile = linuxcnc.ini(sys.argv[1]) │ │ │ │ │ # inifile.find() returns None if the key wasn’t found - the │ │ │ │ │ # following idiom is useful for setting a default value: │ │ │ │ │ machine_name = inifile.find(”EMC”, ”MACHINE”) or ”unknown” │ │ │ │ │ print(”machine name: ”, machine_name) │ │ │ │ │ # inifile.findall() returns a list of matches, or an empty list │ │ │ │ │ @@ -54571,15 +54571,15 @@ │ │ │ │ │ clear() │ │ │ │ │ clear the position logger │ │ │ │ │ stop() │ │ │ │ │ stop the position logger │ │ │ │ │ │ │ │ │ │ 1240 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1241 / 1279 │ │ │ │ │ │ │ │ │ │ call() │ │ │ │ │ Plot the backplot now. │ │ │ │ │ last([int]) │ │ │ │ │ Return the most recent point on the plot or None │ │ │ │ │ @@ -54613,15 +54613,15 @@ │ │ │ │ │ 13.6.2.1 Sample HAL component code pattern │ │ │ │ │ This program creates two HAL pins that output the status of G20/G21. │ │ │ │ │ #!/usr/bin/env python3 │ │ │ │ │ import gi │ │ │ │ │ gi.require_version(’Gtk’, ’3.0’) │ │ │ │ │ from gi.repository import GObject │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1242 / 1279 │ │ │ │ │ │ │ │ │ │ from gi.repository import GLib │ │ │ │ │ import hal │ │ │ │ │ from hal_glib import GStat │ │ │ │ │ GSTAT = GStat() │ │ │ │ │ @@ -54661,15 +54661,15 @@ │ │ │ │ │ self.builder = builder │ │ │ │ │ GSTAT.connect(”state-estop”,lambda w: self.update_estate_label(’ESTOP’)) │ │ │ │ │ GSTAT.connect(”state-estop-reset”,lambda w: self.update_estate_label(’RESET’)) │ │ │ │ │ GSTAT.connect(”state-on”,lambda w: self.update_state_label(’MACHIBE ON’)) │ │ │ │ │ GSTAT.connect(”state-off”,lambda w: self.update_state_label(’MACHINE OFF’)) │ │ │ │ │ GSTAT.connect(”interp-paused”,lambda w: self.update_interp_label(’Paused’)) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1243 / 1279 │ │ │ │ │ │ │ │ │ │ GSTAT.connect(”interp-run”,lambda w: self.update_interp_label(’Run’)) │ │ │ │ │ GSTAT.connect(”interp-idle”,lambda w: self.update_interp_label(’Idle’)) │ │ │ │ │ def update_state_label(self,text): │ │ │ │ │ self.builder.get_object(’state_label’).set_label(”State: %s” % (text)) │ │ │ │ │ @@ -54704,15 +54704,15 @@ │ │ │ │ │ def update_estate_label(self,text): │ │ │ │ │ self.w.e_state_label.setText(”E State: %s” % (text)) │ │ │ │ │ def update_interp_label(self,text): │ │ │ │ │ self.winterp_state_label.setText(”Interpreter State: %s” % (text)) │ │ │ │ │ def get_handlers(halcomp,builder,useropts): │ │ │ │ │ return [HandlerClass(halcomp,widgets,paths)] │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1244 / 1279 │ │ │ │ │ │ │ │ │ │ 13.6.3 Messages │ │ │ │ │ periodic │ │ │ │ │ (returns nothing) - sent every 100 ms. │ │ │ │ │ state-estop │ │ │ │ │ @@ -54751,15 +54751,15 @@ │ │ │ │ │ interp-idle │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is idle. │ │ │ │ │ interp-paused │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is paused. │ │ │ │ │ interp-reading │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is reading. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1245 / 1279 │ │ │ │ │ │ │ │ │ │ interp-waiting │ │ │ │ │ (returns nothing) - Sent when LinuxCNC’s interpreter is waiting. │ │ │ │ │ jograte-changed │ │ │ │ │ (returns float) - Sent when jog rate has changed. │ │ │ │ │ @@ -54803,15 +54803,15 @@ │ │ │ │ │ motion-mode-changed │ │ │ │ │ (returns integer) - Sent when motion’s mode has changed │ │ │ │ │ spindle-control-changed │ │ │ │ │ (returns integer, bool, integer, bool) - (spindle num, spindle on state, requested spindle direction │ │ │ │ │ & rate, at-speed state) │ │ │ │ │ Sent when spindle direction or running status changes or at-speed changes. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1246 / 1279 │ │ │ │ │ │ │ │ │ │ current-feed-rate │ │ │ │ │ (returns float) - Sent when the current feed rate changes. │ │ │ │ │ current-x-rel-position │ │ │ │ │ (returns float) - Sent every 100 ms. │ │ │ │ │ @@ -54854,15 +54854,15 @@ │ │ │ │ │ rpm-mode │ │ │ │ │ (returns bool) - Sent when G97 status changes │ │ │ │ │ (constant RPM mode) │ │ │ │ │ radius-mode │ │ │ │ │ (returns bool) - Sent when G8 status changes │ │ │ │ │ display X in radius mode │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1247 / 1279 │ │ │ │ │ │ │ │ │ │ diameter-mode │ │ │ │ │ (returns bool) - Sent when G7 status changes │ │ │ │ │ display X in Diameter mode │ │ │ │ │ flood-changed │ │ │ │ │ @@ -54904,15 +54904,15 @@ │ │ │ │ │ machine-log-changed │ │ │ │ │ (returns None) - intended to be sent when machine log has changed. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ update-machine-log │ │ │ │ │ (returns string, string) - intended to be sent when updating the machine. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1248 / 1279 │ │ │ │ │ │ │ │ │ │ move-text-lineup │ │ │ │ │ (returns None) - intended to be sent when moving the cursor one line up in G-code display. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ move-text-linedown │ │ │ │ │ @@ -54956,15 +54956,15 @@ │ │ │ │ │ General message should be used a sparsely as reasonable because all object connected to it will │ │ │ │ │ have to parse it. │ │ │ │ │ It uses a Python dict for communication. │ │ │ │ │ The dict should include and be checked for a unique id keyname pair: │ │ │ │ │ • ID: UNIQUE_ID_CODE │ │ │ │ │ The dict usually has more keyname pair - it depends on implementation. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1249 / 1279 │ │ │ │ │ │ │ │ │ │ forced-update │ │ │ │ │ (returns None) - intended to be sent when one wishes to initialize or arbitrarily update an object. │ │ │ │ │ This depends on the widget/libraries used. │ │ │ │ │ progress │ │ │ │ │ @@ -54999,15 +54999,15 @@ │ │ │ │ │ (nothing) - This will return the state of Estop (BOOL) │ │ │ │ │ set_tool_touchoff │ │ │ │ │ (tool,axis,value) - This command will │ │ │ │ │ 1. record the current mode, │ │ │ │ │ 2. switch to MDI mode, │ │ │ │ │ 3. invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE], │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1250 / 1279 │ │ │ │ │ │ │ │ │ │ 4. wait for it to complete, │ │ │ │ │ 5. invoke G43, │ │ │ │ │ 6. wait for it to complete, │ │ │ │ │ 7. switch back to the original mode. │ │ │ │ │ @@ -55045,15 +55045,15 @@ │ │ │ │ │ get_selected_axis │ │ │ │ │ (None) - returns string representing the internal selected axis letter. │ │ │ │ │ is_man_mode │ │ │ │ │ (None) is_mdi_mode │ │ │ │ │ (None) is_auto_mode │ │ │ │ │ (None) - │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1251 / 1279 │ │ │ │ │ │ │ │ │ │ is_on_and_idle │ │ │ │ │ (None) is_auto_running │ │ │ │ │ (None) is_auto_paused │ │ │ │ │ (None) is_file_loaded │ │ │ │ │ @@ -55068,30 +55068,30 @@ │ │ │ │ │ state-tags branch. │ │ │ │ │ │ │ │ │ │ 13.7 Vismach │ │ │ │ │ Vismach is a set of Python functions that can be used to create and animate models of machines. │ │ │ │ │ Vismach displays the model in a 3D viewport and the model parts are animated as the values of │ │ │ │ │ associated HAL pins change. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1252 / 1279 │ │ │ │ │ │ │ │ │ │ The Vismach viewport view can be manipulated as follows: │ │ │ │ │ • zoom by scroll wheel or right button drag, │ │ │ │ │ • pan by left button drag, │ │ │ │ │ • rotate by middle-button drag or shift-drag. │ │ │ │ │ A Vismach model takes the form of a Python script and can use standard Python syntax. This means │ │ │ │ │ that there is more than one way to lay out the script, but in the examples given in this document I will │ │ │ │ │ use the simplest and most basic of them. │ │ │ │ │ The basic sequence in creating the Vismach model is │ │ │ │ │ • Create the HAL pins that control the motion. │ │ │ │ │ • Create the parts. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1253 / 1279 │ │ │ │ │ │ │ │ │ │ • Define how they move. │ │ │ │ │ • Assemble into movement groups. │ │ │ │ │ │ │ │ │ │ 13.7.1 Start the script │ │ │ │ │ @@ -55131,15 +55131,15 @@ │ │ │ │ │ • cylinder = CylinderX(x1, r1, x2, r2) + cylinder = CylinderY(y1, r1, y2, r2) + cylinder │ │ │ │ │ = CylinderZ(z1, r1, z2, r2) │ │ │ │ │ Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on │ │ │ │ │ the axis. │ │ │ │ │ • sphere = Sphere(x, y, z, r) │ │ │ │ │ Creates a sphere of radius r at (x,y,z) │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1254 / 1279 │ │ │ │ │ │ │ │ │ │ • triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2) + triangle = TriangleXZ(x1, z1, │ │ │ │ │ x2, z2, x3, z3, y1, y2) + triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2) │ │ │ │ │ Creates a triangular plate between planes defined by the last two values parallel to the specified │ │ │ │ │ plane, with vertices given by the three coordinate pairs. │ │ │ │ │ @@ -55177,15 +55177,15 @@ │ │ │ │ │ The function arguments are: │ │ │ │ │ – first a collection/part which can be pre-created earlier in the script, or could be created at this │ │ │ │ │ point if preferred eg part1 = HalTranslate([Box(....)], ...). │ │ │ │ │ – The HAL component is the next argument, ie the object returned by the comp = hal.component(...) │ │ │ │ │ command. After that is the name of the HAL in that will animate the motion, this needs to match │ │ │ │ │ an existing HAL pin that is part of the HAL component created earlier in the script. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1255 / 1279 │ │ │ │ │ │ │ │ │ │ – Then follow the X, Y, Z scales. │ │ │ │ │ For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the │ │ │ │ │ positive X direction. │ │ │ │ │ However if the STL file happened to be in cm and the machine was in inches, this could be fixed │ │ │ │ │ @@ -55226,15 +55226,15 @@ │ │ │ │ │ head = AsciiSTL(filename=”./head.stl”) │ │ │ │ │ head = Color([0.3,0.3,0.3,1],[head]) │ │ │ │ │ head = Translate([head],0,0,4) │ │ │ │ │ head = Collection([head, tool, dogs, draw]) │ │ │ │ │ head = HalTranslate([head],c,”Z”,0,0,0.1) │ │ │ │ │ # base │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1256 / 1279 │ │ │ │ │ │ │ │ │ │ base = AsciiSTL(filename=”./base.stl”) │ │ │ │ │ base = Color([0.5,0.5,0.5,1],[base]) │ │ │ │ │ # mount head on it │ │ │ │ │ base = Collection([head, base]) │ │ │ │ │ @@ -55275,15 +55275,15 @@ │ │ │ │ │ import hal │ │ │ │ │ #create the HAL component and pins │ │ │ │ │ comp = hal.component(”compname”) │ │ │ │ │ comp.newpin(”pin_name”, hal.HAL_FLOAT, hal.HAL_IN) │ │ │ │ │ ... │ │ │ │ │ #create the floor, tool and work │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ floor = Box(-50, -50, -3, 50, 50, 0) │ │ │ │ │ work = Capture() │ │ │ │ │ tooltip = Capture() │ │ │ │ │ ... │ │ │ │ │ #Build and assemble the model │ │ │ │ │ part1 = Collection([Box(-6,-3,94,6,3,100)]) │ │ │ │ │ @@ -55294,23 +55294,23 @@ │ │ │ │ │ #create a top-level model │ │ │ │ │ model = Collection([base, saddle, head, carousel]) │ │ │ │ │ #Start the visualization │ │ │ │ │ main(model, tooltip, work, 100, lat=-75, lon=215) │ │ │ │ │ │ │ │ │ │ 1257 / 1279 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1258 / 1279 │ │ │ │ │ │ │ │ │ │ Part III │ │ │ │ │ │ │ │ │ │ Glossary, Copyright & History │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1259 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 14 │ │ │ │ │ │ │ │ │ │ Overleaf │ │ │ │ │ │ │ │ │ │ @@ -55330,15 +55330,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1260 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 15 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -55372,15 +55372,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1261 / 1279 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -55425,15 +55425,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1262 / 1279 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -55476,15 +55476,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1263 / 1279 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -55527,15 +55527,15 @@ │ │ │ │ │ Rapid │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum speed of the machine. It is often desirable to limit the rapid rate when testing a G-code │ │ │ │ │ program for the first time. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1264 / 1279 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet │ │ │ │ │ these requirements it is necessary to install a realtime kernel such as RTAI and build the software │ │ │ │ │ to run in the special real-time environment. For this reason real-time software runs in kernelspace. │ │ │ │ │ @@ -55576,28 +55576,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1265 / 1279 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1266 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 16 │ │ │ │ │ │ │ │ │ │ Copyright │ │ │ │ │ 16.1 Legal Section │ │ │ │ │ @@ -55625,15 +55625,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1267 / 1279 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any │ │ │ │ │ such manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -55682,15 +55682,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front │ │ │ │ │ cover must present the full title with all words of the title equally prominent and visible. You may add │ │ │ │ │ other material on the covers in addition. Copying with changes limited to the covers, as long as they │ │ │ │ │ preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying │ │ │ │ │ in other respects. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1268 / 1279 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ 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 │ │ │ │ │ @@ -55736,15 +55736,15 @@ │ │ │ │ │ Version. N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any │ │ │ │ │ Invariant Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1269 / 1279 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -55785,15 +55785,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1270 / 1279 │ │ │ │ │ │ │ │ │ │ this 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 version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ @@ -55821,15 +55821,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1271 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 17 │ │ │ │ │ │ │ │ │ │ LinuxCNC History │ │ │ │ │ 17.1 Origin │ │ │ │ │ @@ -55861,15 +55861,15 @@ │ │ │ │ │ interested in improving EMC. Many people requested or coded small improvements to the code. Ray │ │ │ │ │ Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code │ │ │ │ │ in which the user interface was written, a simpler method was sought. Fred Proctor of NIST suggested a scripting language and wrote code to interface the Tcl/Tk scripting language to the internal │ │ │ │ │ NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the │ │ │ │ │ predominant user interface for EMC at the time. │ │ │ │ │ For NIST’s perspective, see this paper written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source. │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1272 / 1279 │ │ │ │ │ │ │ │ │ │ By this time interest in EMC as beginning to pick up substantially. As more and more people attempted │ │ │ │ │ installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of │ │ │ │ │ compiling the EMC code became glaringly obvious. Many attempts to document the process and │ │ │ │ │ write scripts were attempted, some with moderate success. The problem of matching the correct │ │ │ │ │ @@ -55904,15 +55904,15 @@ │ │ │ │ │ The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0. │ │ │ │ │ │ │ │ │ │ 17.1.2 Additional Info │ │ │ │ │ NIST published a paper describing the RS274NGC language and the abstract machining center it controls, as well as an early implementation of EMC. The paper is also available at https://linuxcnc.org/files/RS274NGCv3.pdf . │ │ │ │ │ NIST also published a paper on the history of EMC and its transition to open source. The paper is also │ │ │ │ │ available at https://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1273 / 1279 │ │ │ │ │ │ │ │ │ │ Chapter 18 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ _ │ │ │ │ │ @@ -55996,15 +55996,15 @@ │ │ │ │ │ connecting-rs485, 344 │ │ │ │ │ Controlled Point, 64 │ │ │ │ │ coolant, 63 │ │ │ │ │ Cooling, 65 │ │ │ │ │ coordinate measuring machine, 1261 │ │ │ │ │ Coordinate Systems, 819 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Core components, 250 │ │ │ │ │ Creating Userspace Python Components, 302 │ │ │ │ │ Custom sections and variables, 156 │ │ │ │ │ Cutter Radius Compensation, 832 │ │ │ │ │ D │ │ │ │ │ debounce, 282 │ │ │ │ │ @@ -56112,15 +56112,15 @@ │ │ │ │ │ Spindle Stop │ │ │ │ │ Manual Out, 903 │ │ │ │ │ G89 Boring │ │ │ │ │ Dwell │ │ │ │ │ Feed Out, 903 │ │ │ │ │ G90 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G91 Distance Mode, 903 │ │ │ │ │ G92 Coordinate System Offset, 904 │ │ │ │ │ G92.1 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ G92.2 Reset G92 Offsets, 905 │ │ │ │ │ @@ -56231,15 +56231,15 @@ │ │ │ │ │ HAL xor2 │ │ │ │ │ xor2, 216 │ │ │ │ │ HAL: Implementation, 203 │ │ │ │ │ HAL: Interconnections Design, 203 │ │ │ │ │ HAL: Testing, 203 │ │ │ │ │ HAL:Function, 206 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ HAL:Thread, 206 │ │ │ │ │ HAL:Velocity example, 247 │ │ │ │ │ Halcmd Tutorial, 220 │ │ │ │ │ Halmeter, 312 │ │ │ │ │ Tutorial Halmeter, 226 │ │ │ │ │ Halui Examples, 1224 │ │ │ │ │ @@ -56346,15 +56346,15 @@ │ │ │ │ │ M48 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M49 Speed and Feed Override Control, 911 │ │ │ │ │ M5 Spindle Control, 908 │ │ │ │ │ M50 Feed Override Control, 911 │ │ │ │ │ M51 Spindle Speed Override, 911 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ M52 Adaptive Feed Control, 911 │ │ │ │ │ M53 Feed Stop Control, 911 │ │ │ │ │ M6-Tool-Change, 909 │ │ │ │ │ M60 Pallet Change Pause, 908 │ │ │ │ │ M61 Set Current Tool, 912 │ │ │ │ │ M62 - M65 Digital Output Control, 912 │ │ │ │ │ @@ -56461,15 +56461,15 @@ │ │ │ │ │ real-time, 1264 │ │ │ │ │ refsig-timing-diagram, 337 │ │ │ │ │ Repeat Loop, 924 │ │ │ │ │ Return Values, 925 │ │ │ │ │ RS274NGC, 1264 │ │ │ │ │ RS274NGC STARTUP CODE, 163 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ RTAI, 1264 │ │ │ │ │ RTAPI, 1264 │ │ │ │ │ RTLINUX, 1264 │ │ │ │ │ Running LinuxCNC, 14 │ │ │ │ │ S │ │ │ │ │ s32, 213 │ │ │ │ │ @@ -56577,15 +56577,15 @@ │ │ │ │ │ User Foreword, 43 │ │ │ │ │ User Introduction, 44 │ │ │ │ │ USER M PATH, 164 │ │ │ │ │ V │ │ │ │ │ Variables, 156 │ │ │ │ │ VOLATILE HOME, 186 │ │ │ │ │ │ │ │ │ │ - LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + LinuxCNC V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ W │ │ │ │ │ weighted_sum, 216 │ │ │ │ │ Words, 840 │ │ │ │ │ world coordinates, 1265 │ │ │ │ │ X │ │ │ │ │ xor2, 216 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Getting_Started_zh_CN.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Getting Started │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Contents │ │ │ │ │ 1 About LinuxCNC │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -115,15 +115,15 @@ │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ 3.5 Updates to LinuxCNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 9 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iii │ │ │ │ │ │ │ │ │ │ 3.6 Install Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 10 │ │ │ │ │ │ │ │ │ │ @@ -272,15 +272,15 @@ │ │ │ │ │ │ │ │ │ │ 28 │ │ │ │ │ │ │ │ │ │ 5.5.2 INI HAL pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ iv │ │ │ │ │ │ │ │ │ │ 5.6 HAL Changes (Other 2.8.x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 29 │ │ │ │ │ │ │ │ │ │ @@ -434,15 +434,15 @@ │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ 5.13.4XHC-HB04 Pendant Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ v │ │ │ │ │ │ │ │ │ │ 5.13.4.1xhc_hb04_util.comp (helper component) . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 38 │ │ │ │ │ │ │ │ │ │ @@ -581,15 +581,15 @@ │ │ │ │ │ │ │ │ │ │ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 49 │ │ │ │ │ 49 │ │ │ │ │ 54 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ vi │ │ │ │ │ │ │ │ │ │ The LinuxCNC Team │ │ │ │ │ │ │ │ │ │ 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 │ │ │ │ │ Copyright © 2000-2020 LinuxCNC.org │ │ │ │ │ @@ -607,15 +607,15 @@ │ │ │ │ │ trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, │ │ │ │ │ owner of the mark on a world-wide basis. │ │ │ │ │ The LinuxCNC project is not affiliated with Debian®. Debian is a registered trademark owned by │ │ │ │ │ Software in the Public Interest, Inc. │ │ │ │ │ The LinuxCNC project is not affiliated with UBUNTU®. UBUNTU is a registered trademark owned │ │ │ │ │ by Canonical Limited. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 1 │ │ │ │ │ │ │ │ │ │ About LinuxCNC │ │ │ │ │ 1.1 The Software │ │ │ │ │ @@ -642,15 +642,15 @@ │ │ │ │ │ • It can simultaneously move up to 9 axes and supports a variety of interfaces. │ │ │ │ │ • The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC │ │ │ │ │ software at the computer, or open loop with step-servos or stepper motors. │ │ │ │ │ • Motion control features include: cutter radius and length compensation, path deviation limited to │ │ │ │ │ a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed │ │ │ │ │ override, and constant velocity control. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 55 │ │ │ │ │ │ │ │ │ │ • Support for non-Cartesian motion systems is provided via custom kinematics modules. Available │ │ │ │ │ architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary │ │ │ │ │ joints to provide motion such as PUMA or SCARA robots. │ │ │ │ │ • LinuxCNC runs on Linux using real time extensions. │ │ │ │ │ @@ -683,15 +683,15 @@ │ │ │ │ │ 1.3.2 Mailing List │ │ │ │ │ An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at │ │ │ │ │ their convenience. You get better exposure to your questions on a mailing list than on the IRC but │ │ │ │ │ answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or │ │ │ │ │ individual replies back depending on how you set up your account. │ │ │ │ │ You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 55 │ │ │ │ │ │ │ │ │ │ 1.3.3 Web Forum │ │ │ │ │ A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the │ │ │ │ │ linuxcnc.org home page. │ │ │ │ │ This is quite active but the demographic is more user-biased than the mailing list. If you want to be │ │ │ │ │ @@ -701,15 +701,15 @@ │ │ │ │ │ A Wiki site is a user maintained web site that anyone can add to or edit. │ │ │ │ │ │ │ │ │ │ The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: https://wiki.linuxcnc.or │ │ │ │ │ │ │ │ │ │ 1.3.5 Bug Reports │ │ │ │ │ Report bugs to the LinuxCNC github bug tracker. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 2 │ │ │ │ │ │ │ │ │ │ System Requirements │ │ │ │ │ 2.1 Minimum Requirements │ │ │ │ │ @@ -737,15 +737,15 @@ │ │ │ │ │ LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can, │ │ │ │ │ however run on a standard kernel in simulation mode for purposes such as checking G-code, testing │ │ │ │ │ config files and learning the system. To work with these kernel versions there are two versions of │ │ │ │ │ LinuxCNC distributed. The package names are ”linuxcnc” and ”linuxcnc-uspace”. │ │ │ │ │ The realtime kernel options are preempt-rt, RTAI and Xenomai. │ │ │ │ │ You can discover the kernel version of your system with the command: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 55 │ │ │ │ │ │ │ │ │ │ uname -a │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ @@ -781,15 +781,15 @@ │ │ │ │ │ an extended time will give you the info you need to determine suitability. │ │ │ │ │ │ │ │ │ │ 2.3.2 Video Cards │ │ │ │ │ If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize │ │ │ │ │ your video card or monitor. This can sometimes be worked-around by installing drivers or creating / │ │ │ │ │ editing Xorg.conf files. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 3 │ │ │ │ │ │ │ │ │ │ Getting LinuxCNC │ │ │ │ │ This section describes the recommended way to download and make a fresh install of LinuxCNC. │ │ │ │ │ @@ -816,15 +816,15 @@ │ │ │ │ │ │ │ │ │ │ 3.1.1 Normal Download │ │ │ │ │ For x86 PCs Download the Live/Install CD by clicking here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.4-buster.iso │ │ │ │ │ For the Raspberry Pi a complete SD card image is available here: │ │ │ │ │ https://linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.4) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 7 / 55 │ │ │ │ │ │ │ │ │ │ This can be installed using the normal Pi install process including with the Raspberry Pi Imager app. │ │ │ │ │ This SD image is reported not to work with the Raspberry Pi4 8GB model. Note also that this version │ │ │ │ │ of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both │ │ │ │ │ WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by │ │ │ │ │ @@ -860,15 +860,15 @@ │ │ │ │ │ 2. Then compare to these checksums │ │ │ │ │ md5sum: 8a6e6abd2c792c3e06fbee0ed049ed41 │ │ │ │ │ sha256sum: 0bfeac3ddfe1bdbf5ca4dad84eeec165741d3f253a16b75e4405c06b7b489700 │ │ │ │ │ │ │ │ │ │ Verify md5sum on Windows or Mac Windows and Mac OS X do not come with an md5sum program, │ │ │ │ │ but there are alternatives. More information can be found at: How To MD5SUM │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 8 / 55 │ │ │ │ │ │ │ │ │ │ 3.2 Write the image to a bootable device │ │ │ │ │ The Raspberry Pi image is a completes SD card image and should be written to an SD card in the │ │ │ │ │ normal way. │ │ │ │ │ The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB │ │ │ │ │ @@ -903,15 +903,15 @@ │ │ │ │ │ 4. Select the write speed. It is recommended that you write at the lowest possible speed. │ │ │ │ │ 5. Start the burning process. │ │ │ │ │ 6. If a choose a file name for the disc image window pops up, just pick OK. │ │ │ │ │ Writing the image to a DVD in Windows │ │ │ │ │ │ │ │ │ │ 1. Download and install Infra Recorder, a free and open source image burning program: http://infrarecorde │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 9 / 55 │ │ │ │ │ │ │ │ │ │ 2. Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up. │ │ │ │ │ 3. Open Infra Recorder, and select the Actions menu, then Burn image. │ │ │ │ │ Writing the image to a DVD in Mac OSX │ │ │ │ │ 1. Download the .iso file │ │ │ │ │ @@ -945,15 +945,15 @@ │ │ │ │ │ With the normal install the Update Manager will notify you of updates to LinuxCNC when you go on │ │ │ │ │ line and allow you to easily upgrade with no Linux knowledge needed. It is OK to upgrade everything │ │ │ │ │ except the operating system when asked to. │ │ │ │ │ │ │ │ │ │ Do not upgrade the operating system if prompted to do so. You should accept OS updates │ │ │ │ │ however, especially security updates. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 10 / 55 │ │ │ │ │ │ │ │ │ │ 3.6 Install Problems │ │ │ │ │ In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot │ │ │ │ │ recognize the hard drive during the boot up. │ │ │ │ │ │ │ │ │ │ @@ -1055,15 +1055,15 @@ │ │ │ │ │ • Debian Wheezy: deb https://linuxcnc.org wheezy base │ │ │ │ │ • Ubuntu Precise: deb https://linuxcnc.org precise base │ │ │ │ │ │ │ │ │ │ Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is │ │ │ │ │ strongly advised not to use either for a new install, and to seriously consider upgrading an existing │ │ │ │ │ installation. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 11 / 55 │ │ │ │ │ │ │ │ │ │ The Buster / RTAI package is only available on amd64, but there are very few surviving systems that │ │ │ │ │ can not run a 64-bit OS. │ │ │ │ │ │ │ │ │ │ There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The │ │ │ │ │ @@ -1099,15 +1099,15 @@ │ │ │ │ │ 4. Open Applications Menu > System > Synaptic Package Manager, search for linux-image, right │ │ │ │ │ click on the original non-rt and select Mark for Complete Removal. Reboot. This is to force the │ │ │ │ │ system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels │ │ │ │ │ need not be deleted, but grub boot configuration changes will be needed beyond the scope of │ │ │ │ │ this document. │ │ │ │ │ 5. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ │ │ │ │ │ 6. Add the apt repository: │ │ │ │ │ @@ -1142,15 +1142,15 @@ │ │ │ │ │ sudo apt-get update │ │ │ │ │ │ │ │ │ │ 5. Install the new realtime kernel, RTAI and the rtai version of linuxcnc │ │ │ │ │ sudo apt-get install linux-image-4.19.195-rtai-amd64 │ │ │ │ │ │ │ │ │ │ 6. Install the RTAI application layer │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 55 │ │ │ │ │ │ │ │ │ │ sudo apt-get install rtai-modules-4.19.195 │ │ │ │ │ │ │ │ │ │ 7. Install LinuxCNC (may be necessary to reboot before installing) │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ @@ -1187,15 +1187,15 @@ │ │ │ │ │ │ │ │ │ │ 3. Add the LinuxCNC Archive Signing Key to your apt keyring by running │ │ │ │ │ # Alternate keyserver: keyserver.ubuntu.com │ │ │ │ │ sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef │ │ │ │ │ │ │ │ │ │ 4. Add a new apt source │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 55 │ │ │ │ │ │ │ │ │ │ sudo add-apt-repository ”deb https://linuxcnc.org/ precise base 2.8-rt” │ │ │ │ │ │ │ │ │ │ 5. Fetch the package list from linuxcnc.org. │ │ │ │ │ sudo apt-get update │ │ │ │ │ @@ -1209,15 +1209,15 @@ │ │ │ │ │ 8. Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name │ │ │ │ │ is 3.4-9-rtai-686-pae. │ │ │ │ │ uname -r │ │ │ │ │ │ │ │ │ │ 9. Run │ │ │ │ │ sudo apt-get install linuxcnc │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 4 │ │ │ │ │ │ │ │ │ │ Running LinuxCNC │ │ │ │ │ 4.1 Invoking LinuxCNC │ │ │ │ │ @@ -1244,15 +1244,15 @@ │ │ │ │ │ applications like PyVCP or GladeVCP. │ │ │ │ │ – attic - Obsolete or historical configurations. │ │ │ │ │ The sim configurations are often the most useful starting point for new users and are organized around │ │ │ │ │ supported GUIs: │ │ │ │ │ • axis - Keyboard and Mouse GUI │ │ │ │ │ • gmoccapy - Touch Screen GUI │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 55 │ │ │ │ │ │ │ │ │ │ • gscreen - Touch Screen GUI │ │ │ │ │ • low_graphics - Keyboard GUI │ │ │ │ │ • pyvcp_demo - Paneles de Control Virtuales Python │ │ │ │ │ • qtvcp_screens - Guis diseñadas con Qt5 y Python │ │ │ │ │ @@ -1283,15 +1283,15 @@ │ │ │ │ │ applications that can be used with linuxcnc: │ │ │ │ │ • info - creates a file with system information that may be useful for problem diagnosis. │ │ │ │ │ • gladevcp - Example GladeVCP applications. │ │ │ │ │ • halrun - Starts halrun in an terminal. │ │ │ │ │ • latency - Applications to investigate latency │ │ │ │ │ – latency-test - standard test │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 55 │ │ │ │ │ │ │ │ │ │ – latency-plot - stripchart │ │ │ │ │ – latency-histogram - histogram │ │ │ │ │ • parport - Applications to test parport. │ │ │ │ │ • pyvcp - Example pyvcp applications. │ │ │ │ │ @@ -1303,15 +1303,15 @@ │ │ │ │ │ Figure 4.1: LinuxCNC Configuration Selector │ │ │ │ │ Click any of the listed configurations to display specific information about it. Double-click a configuration or click OK to start the configuration. │ │ │ │ │ Select Create Desktop Shortcut and then click OK to add an icon on the Ubuntu desktop to directly │ │ │ │ │ launch this configuration without showing the Configuration Selector screen. │ │ │ │ │ When you select a configuration from the Sample Configurations section, it will automatically place a │ │ │ │ │ copy of that config in the ~/linuxcnc/configs directory. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 55 │ │ │ │ │ │ │ │ │ │ 4.3 Next steps in configuration │ │ │ │ │ After finding the sample configuration that uses the same interface hardware as your machine (or a │ │ │ │ │ simulator configuration), and saving a copy to your home directory, you can customize it according to │ │ │ │ │ the details of your machine. Refer to the Integrator Manual for topics on configuration. │ │ │ │ │ @@ -1338,15 +1338,15 @@ │ │ │ │ │ HAL files, local modifications will then prevail. │ │ │ │ │ The Configuration selector makes a symbolic link in the user configuration directory (named hallib) │ │ │ │ │ that points to the system HAL file library. This link simplifies copying a library file. For example, to │ │ │ │ │ copy the library core_sim.hal file in order to make local modifications: │ │ │ │ │ cd ~/linuxcnc/configs/name_of_configuration │ │ │ │ │ cp hallib/core_sim.hal core_sim.hal │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 19 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 5 │ │ │ │ │ │ │ │ │ │ Updating LinuxCNC │ │ │ │ │ Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example │ │ │ │ │ @@ -1378,15 +1378,15 @@ │ │ │ │ │ │ │ │ │ │ You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also │ │ │ │ │ available for Debian Jessie or Debian Buster if you happen to already be running one of those. │ │ │ │ │ You will also need to check which realtime kernel is being used: │ │ │ │ │ uname -r │ │ │ │ │ 4.19.0-9-rt-amd64 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 20 / 55 │ │ │ │ │ │ │ │ │ │ If you see (as above) -rt- in the kernel name then you are running the preempt-rt kernel and should │ │ │ │ │ install the ”uspace” version of LinuxCNC. You should also install uspace for ”sim” configs on nonrealtime kernels │ │ │ │ │ If you see -rtai- in the kernel name then you are running RTAI realtime. See below for the LinuxCNC │ │ │ │ │ version to install. │ │ │ │ │ @@ -1431,15 +1431,15 @@ │ │ │ │ │ deb https://linuxcnc.org jessie base │ │ │ │ │ 2.8-rt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rtpreempt │ │ │ │ │ deb https://linuxcnc.org buster base │ │ │ │ │ 2.8-rt │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 21 / 55 │ │ │ │ │ │ │ │ │ │ • Click Add Source, then Close in the Software Sources window. If it pops up a window informing │ │ │ │ │ you that the information about available software is out-of-date, click the Reload button. │ │ │ │ │ │ │ │ │ │ 5.1.2 Upgrading to the new version │ │ │ │ │ @@ -1459,15 +1459,15 @@ │ │ │ │ │ │ │ │ │ │ 5.1.3 Ubuntu Precise │ │ │ │ │ • Click on the Dash Home icon in the top left. │ │ │ │ │ • In the Search field, type ”update”, then click on the Update Manager icon. │ │ │ │ │ • Click the Check button to fetch the list of packages available. │ │ │ │ │ • Click the Install Updates button to install the new versions of all packages. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 22 / 55 │ │ │ │ │ │ │ │ │ │ 5.2 Updating without Network │ │ │ │ │ To update without a network connection you need to download the .deb then install it with dpkg. The │ │ │ │ │ .debs can be found in https://linuxcnc.org/dists/ . │ │ │ │ │ You have to drill down from the above link to find the correct deb for your installation. Open a terminal │ │ │ │ │ @@ -1504,15 +1504,15 @@ │ │ │ │ │ /usr/lib/libcanterp.so to /usr/lib/linuxcnc/canterp.so, and the [TASK]INTERPRETER setting │ │ │ │ │ correspondingly needs to change from libcanterp.so to canterp.so. │ │ │ │ │ │ │ │ │ │ 5.4 Updating Configuration Files (for 2.8.x) │ │ │ │ │ The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your │ │ │ │ │ machine configuration. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 23 / 55 │ │ │ │ │ │ │ │ │ │ The main difference is that LinuxCNC no longer makes any assumptions about which joint controls │ │ │ │ │ which axis. This change is generally termed ”joints-axes” after the name of the development branch │ │ │ │ │ where the changes started. This change has been in development since at least 2010, and has finally │ │ │ │ │ been merged. │ │ │ │ │ @@ -1552,15 +1552,15 @@ │ │ │ │ │ spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for │ │ │ │ │ the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a │ │ │ │ │ HAL file loadrt entry for motmod). │ │ │ │ │ The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings must match. │ │ │ │ │ The spindle control pin names have been changed to make spindles look more like axes and joints. │ │ │ │ │ motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 24 / 55 │ │ │ │ │ │ │ │ │ │ take care of these changes. To control extra spindles the G and M-codes which control spindle speed │ │ │ │ │ now accept an additional ”$” argument, for example M3 $2 to start the third spindle. ”$” was chosen │ │ │ │ │ to avoid clashes with any existing code letters. It should be possible to create custom G-codes to │ │ │ │ │ match any other multi-spindle controller. See the G-code and M-code manuals for code changes, and │ │ │ │ │ @@ -1608,15 +1608,15 @@ │ │ │ │ │ │ │ │ │ │ HAL file: │ │ │ │ │ │ │ │ │ │ loadrt [KINS]KINEMATICS │ │ │ │ │ │ │ │ │ │ haltcl file: loadrt $::KINS(KINEMATICS) │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 25 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.6 Lathe Configurations │ │ │ │ │ Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation │ │ │ │ │ configs) but required specification of [TRAJ]AXES =3, a dummy AXIS_Y section, and provisions for │ │ │ │ │ homing the unused Y coordinate. These arrangements are no longer required or recommended. │ │ │ │ │ @@ -1656,15 +1656,15 @@ │ │ │ │ │ │ │ │ │ │ Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters: │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XZ │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ = 2 │ │ │ │ │ [TRAJ]COORDINATES = XZ │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 26 / 55 │ │ │ │ │ │ │ │ │ │ Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint │ │ │ │ │ positioning (for homing): │ │ │ │ │ [KINS]KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH │ │ │ │ │ [KINS]JOINTS │ │ │ │ │ @@ -1712,15 +1712,15 @@ │ │ │ │ │ [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer │ │ │ │ │ │ │ │ │ │ Specify that the joint is a locking indexer with an INI file setting for the joint (N is the joint_number_for_indexe │ │ │ │ │ [JOINT_N]LOCKING_INDEXER = 1 │ │ │ │ │ │ │ │ │ │ HAL pins can be created to coordinate use of a locking indicator joint: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 27 / 55 │ │ │ │ │ │ │ │ │ │ joint.N.unlock │ │ │ │ │ (BIT output from HAL) │ │ │ │ │ joint.N.is-unlocked (BIT input to │ │ │ │ │ HAL) │ │ │ │ │ @@ -1762,15 +1762,15 @@ │ │ │ │ │ For example, lines like this will no longer be accepted: │ │ │ │ │ MAX_VELOCITY = 7.5 # This is the max velocity of the axis. │ │ │ │ │ │ │ │ │ │ They could be transformed into pairs of lines like this: │ │ │ │ │ # This is the max velocity of the axis. │ │ │ │ │ MAX_VELOCITY = 7.5 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 28 / 55 │ │ │ │ │ │ │ │ │ │ 5.4.11 [TRAJ] settings │ │ │ │ │ In 2.7.x versions, trajectory planning ([TRAJ]) settings included: │ │ │ │ │ [TRAJ] │ │ │ │ │ DEFAULT_ACCELERATION │ │ │ │ │ @@ -1837,15 +1837,15 @@ │ │ │ │ │ axis.L.jog-vel-mode │ │ │ │ │ │ │ │ │ │ where N is a joint number and L is an axis letter. │ │ │ │ │ To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint │ │ │ │ │ number and an axis letter, it may be convenient to connect the corresponding HAL pins. For example, │ │ │ │ │ if joint 1 corresponds exactly to axis letter y: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 29 / 55 │ │ │ │ │ │ │ │ │ │ net jora_1_y_enable │ │ │ │ │ => joint.1.jog-enable => axis.y.jog-enable │ │ │ │ │ net jora_1_y_scale │ │ │ │ │ => joint.1.jog-scale => axis.y.jog-scale │ │ │ │ │ @@ -1904,15 +1904,15 @@ │ │ │ │ │ 5.6.1 halcompile │ │ │ │ │ The number of names= instances was formerly limited to 16. Now, for realtime components (loadrt) │ │ │ │ │ the instances are assigned dynamically with no built-in limit. The limit of 16 still applies to names= │ │ │ │ │ items for userspace (loadusr) components. │ │ │ │ │ For components using personality, the maximum number is now settable by a command line option │ │ │ │ │ -P|--personalities. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 30 / 55 │ │ │ │ │ │ │ │ │ │ 5.6.2 Parameter to Pin changes │ │ │ │ │ The following HAL output pins were changed from parameters to pins so that they can be connected │ │ │ │ │ to signals: │ │ │ │ │ motion.servo.last-period │ │ │ │ │ @@ -1946,15 +1946,15 @@ │ │ │ │ │ homing is completed, the jogging mode is AUTOMATICALLY switched from joint mode to world mode │ │ │ │ │ and axis jogging (coordinate letter X,Y,…) is used. This is appropriate for all G-code moves requested │ │ │ │ │ by MDI commands or by G-code programs. │ │ │ │ │ Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide │ │ │ │ │ a keyboard shortcut ($) to allow toggling between joint and world (teleop) modes for machines that │ │ │ │ │ use non-IDENTITY kinematics. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 31 / 55 │ │ │ │ │ │ │ │ │ │ In many common situations, joint jogging is never needed since homing is accomplished using home │ │ │ │ │ switches and/or the various homing methods provided by LinuxCNC. One simply turns on the machine, │ │ │ │ │ issues the Home-All command, the machine homes and changes to world mode automatically. See │ │ │ │ │ Homing Configuration. │ │ │ │ │ @@ -2001,15 +2001,15 @@ │ │ │ │ │ was: halui.jog.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ is: halui.joint.N.plus │ │ │ │ │ is: halui.joint.N.minus │ │ │ │ │ ... etc. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 32 / 55 │ │ │ │ │ │ │ │ │ │ where N is a joint number (0 … num_noints-1) or selected for the joint selected by the halui.joint.N.select │ │ │ │ │ pins. │ │ │ │ │ 5.8.2.3 Additional pin renames │ │ │ │ │ The HAL pins for selected joints were renamed for consistency with related pins. │ │ │ │ │ @@ -2042,15 +2042,15 @@ │ │ │ │ │ 2. Preview Tab display of joints or axes according to joint or teleop mode │ │ │ │ │ 3. Preview Tab display of Home and Limit icons in joint mode │ │ │ │ │ 4. Preview Tab display of All-homed and Any-limit icons in teleop mode │ │ │ │ │ 5. DRO Tab display of joint or axes according to joint or teleop mode │ │ │ │ │ 6. Jogging is supported in both joint and teleop motion modes. │ │ │ │ │ 7. External changes to the joint/teleop motion mode are detected. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 33 / 55 │ │ │ │ │ │ │ │ │ │ 5.8.3.4 Home icons │ │ │ │ │ For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a │ │ │ │ │ joint is homed. │ │ │ │ │ For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint │ │ │ │ │ @@ -2085,15 +2085,15 @@ │ │ │ │ │ commands have been simplified to use an argument that is just the coordinate letter. │ │ │ │ │ Commands now using a coordinate letter argument are: │ │ │ │ │ 1. emc_pos_offset │ │ │ │ │ 2. emc_abs_cmd_pos │ │ │ │ │ 3. emc_abs_act_pos │ │ │ │ │ 4. emc_rel_cmd_pos │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 34 / 55 │ │ │ │ │ │ │ │ │ │ 5. emc_rel_act_pos │ │ │ │ │ 6. emc_tool_offset │ │ │ │ │ 7. emc_probed_pos │ │ │ │ │ │ │ │ │ │ @@ -2131,15 +2131,15 @@ │ │ │ │ │ was: set jog_stop │ │ │ │ │ is: set jog_stop joint_number|axis_letter │ │ │ │ │ │ │ │ │ │ Test for teleop mode using command: get teleop_enable │ │ │ │ │ If TELEOP_ENABLE=YES, use axis_letter; │ │ │ │ │ Else use joint_number │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 35 / 55 │ │ │ │ │ │ │ │ │ │ Formerly, the command set jog 0 1.234 would jog the zeroth axis (X) with requested speed=1.234 │ │ │ │ │ in any mode (free or teleop). This command now attempts to jog the zeroth joint (Joint0) provided │ │ │ │ │ the mode is free (not teleop). To jog the X axis, the mode must be teleop and the corresponding │ │ │ │ │ command is: set jog x 1.234. │ │ │ │ │ @@ -2167,15 +2167,15 @@ │ │ │ │ │ │ │ │ │ │ 5.12 Simulator configurations (updates for joints axes 2.8.x) │ │ │ │ │ 5.12.1 Pre-joints_axes │ │ │ │ │ Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common │ │ │ │ │ milling machine — a Cartesian system with trivial kinematics and three axes named X Y Z. Typical │ │ │ │ │ HAL file entries: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 36 / 55 │ │ │ │ │ │ │ │ │ │ [HAL] │ │ │ │ │ HALFILE = core_sim.hal │ │ │ │ │ HALFILE = sim_spindle_encoder.hal │ │ │ │ │ HALFILE = axis_manualtoolchange.hal │ │ │ │ │ @@ -2215,15 +2215,15 @@ │ │ │ │ │ Omitting one or more of the core functions allows testing without without the function or addition of │ │ │ │ │ new HALFILEs to implement or expand on the functionality. │ │ │ │ │ 5.12.2.1 Equivalent HAL commands file │ │ │ │ │ When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the configuration directory) to │ │ │ │ │ show the halcmd commands issued. The file name is based on the name of the INI file with _cmds │ │ │ │ │ appended to the basename and a conventional .hal file extension. Example: │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 37 / 55 │ │ │ │ │ │ │ │ │ │ inifilename: │ │ │ │ │ example.ini │ │ │ │ │ equivalent_halfilename: example_cmds.hal │ │ │ │ │ │ │ │ │ │ @@ -2255,15 +2255,15 @@ │ │ │ │ │ Commits to unreleased branches may make changes that affect testers and early-adopters of the │ │ │ │ │ unreleased software. │ │ │ │ │ │ │ │ │ │ 5.13.1 Motion pins │ │ │ │ │ New pins (see the motion man page for more info): │ │ │ │ │ --- axis.L.jog-accel-fraction joint.N.jog-accel-fraction --- │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 38 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.2 HAL pins │ │ │ │ │ Name changes: │ │ │ │ │ was: axis.L.vel-cmd │ │ │ │ │ is: axis.l.teleop-vel-cmd │ │ │ │ │ @@ -2294,15 +2294,15 @@ │ │ │ │ │ 5.13.6 bldc3_hall │ │ │ │ │ The bldc_hall3 component has been removed. The bldc component is more flexible and better tested. │ │ │ │ │ │ │ │ │ │ 5.13.7 [JOINT_n]HOME_SEQUENCE Starting values │ │ │ │ │ Starting sequence values may be 0, 1 (or -1) only. See the ”Homing Configuration” documentation for │ │ │ │ │ more information. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 39 / 55 │ │ │ │ │ │ │ │ │ │ 5.13.8 [JOINT_n]HOME_SEQUENCE Negative values │ │ │ │ │ Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent │ │ │ │ │ misalignment (racking) in common gantry configurations. As always, machines with any kinematics │ │ │ │ │ type must be homed prior to enabling conventional world mode jogging. │ │ │ │ │ @@ -2335,15 +2335,15 @@ │ │ │ │ │ │ │ │ │ │ 5.14.4 Configuration Updates │ │ │ │ │ 5.14.4.1 INI file Settings │ │ │ │ │ New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET — support encoder with index that does not │ │ │ │ │ reset upon receipt of index pulse following assertion of index_enable. │ │ │ │ │ axis.py default for [DISPLAY]GEOMETRY was:”XYZBCUVW”,is:”XYZABCUVW” │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 40 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5 Code Updates │ │ │ │ │ Management of the internal storage of tool data and the communication of same between EMCIO and │ │ │ │ │ TASK has been refactored to use memory mapped storage. Legacy use of nml messages for tooldata │ │ │ │ │ is deprecated and may be removed before a new release. │ │ │ │ │ @@ -2371,15 +2371,15 @@ │ │ │ │ │ A homing api is provided by src/emc/motion/homing.h to support users’ custom homing code that │ │ │ │ │ replaces src/emc/motion/homing.c with a user-customized homing.c file. │ │ │ │ │ 5.14.5.5 Motion │ │ │ │ │ The motion module supports kinematics modules that define new functions kinematicsSwitchable() │ │ │ │ │ and kinematicsSwitch() to switch their kinematics type. A HAL pin, motion.switchkins-type, is provided for use of such kinematics modules. │ │ │ │ │ Provided kinematics modules that implement kinematics switching use the switchkins.o object to supply the required rtapi_main() and related functions. Kinematics modules that do not support kinematics switching use the macro ”KINS_NOT_SWITCHABLE” provided by kinematics.h. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 41 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.5.6 Switchkins Kinematics Modules │ │ │ │ │ Several kinematics modules are now switchable between their eponymous kinematics and an alternate │ │ │ │ │ identity kinematics mode. │ │ │ │ │ Kinematic modules supporting switchkins: │ │ │ │ │ @@ -2408,15 +2408,15 @@ │ │ │ │ │ lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified. │ │ │ │ │ lib/python/vismach.py: new HAL pin vismach.plotclear │ │ │ │ │ │ │ │ │ │ 5.14.6 HAL │ │ │ │ │ 5.14.6.1 Components │ │ │ │ │ sim_home_switch: added I/O pin for index-enable │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 42 / 55 │ │ │ │ │ │ │ │ │ │ 5.14.6.2 Motion module pins │ │ │ │ │ motion.feed-upm — current feed in units per minute │ │ │ │ │ │ │ │ │ │ 5.14.7 Configs │ │ │ │ │ @@ -2426,15 +2426,15 @@ │ │ │ │ │ 5.14.7.2 Simulation Configs │ │ │ │ │ sim/configs/axis/axis_9axis: demonstrate simulated encoder index │ │ │ │ │ │ │ │ │ │ 5.15 Changes after 2.8.x │ │ │ │ │ Future versions of this document will take into account changes made to the development branch │ │ │ │ │ after the latest 2.8.x release. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 43 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 6 │ │ │ │ │ │ │ │ │ │ Glossary │ │ │ │ │ A listing of terms and what they mean. Some terms have a general meaning and several additional │ │ │ │ │ @@ -2468,15 +2468,15 @@ │ │ │ │ │ Backlash Compensation │ │ │ │ │ Any technique that attempts to reduce the effect of backlash without actually removing it from │ │ │ │ │ the mechanical system. This is typically done in software in the controller. This can correct the │ │ │ │ │ final resting place of the part in motion but fails to solve problems related to direction changes │ │ │ │ │ while in motion (think circular interpolation) and motion that is caused when external forces │ │ │ │ │ (think cutting tool pulling on the work piece) are the source of the motion. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 44 / 55 │ │ │ │ │ │ │ │ │ │ Ball Screw │ │ │ │ │ A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce │ │ │ │ │ friction. Ball-screws have very low friction and backlash, but are usually quite expensive. │ │ │ │ │ Ball Nut │ │ │ │ │ @@ -2521,15 +2521,15 @@ │ │ │ │ │ EMCIO │ │ │ │ │ The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion │ │ │ │ │ of the axes. │ │ │ │ │ EMCMOT │ │ │ │ │ The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a │ │ │ │ │ real-time program and directly controls the motors. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 45 / 55 │ │ │ │ │ │ │ │ │ │ Encoder │ │ │ │ │ A device to measure position. Usually a mechanical-optical device, which outputs a quadrature │ │ │ │ │ signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC. │ │ │ │ │ Feed │ │ │ │ │ @@ -2572,15 +2572,15 @@ │ │ │ │ │ Joint Coordinates │ │ │ │ │ These specify the angles between the individual joints of the machine. See also Kinematics │ │ │ │ │ Jog │ │ │ │ │ Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each │ │ │ │ │ key-press, or moves the axis at a constant speed as long as you hold down the key. In manual │ │ │ │ │ mode, jog speed can be set from the graphical interface. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 46 / 55 │ │ │ │ │ │ │ │ │ │ kernel-space │ │ │ │ │ See real-time. │ │ │ │ │ Kinematics │ │ │ │ │ The position relationship between world coordinates and joint coordinates of a machine. There │ │ │ │ │ @@ -2623,15 +2623,15 @@ │ │ │ │ │ Rapid │ │ │ │ │ Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool │ │ │ │ │ meets the workpiece or the fixturing during a rapid, it is probably a bad thing! │ │ │ │ │ Rapid rate │ │ │ │ │ The speed at which a rapid motion occurs. In auto or MDI mode, rapid rate is usually the maximum speed of the machine. It is often desirable to limit the rapid rate when testing a G-code │ │ │ │ │ program for the first time. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 47 / 55 │ │ │ │ │ │ │ │ │ │ Real-time │ │ │ │ │ Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet │ │ │ │ │ these requirements it is necessary to install a realtime kernel such as RTAI and build the software │ │ │ │ │ to run in the special real-time environment. For this reason real-time software runs in kernelspace. │ │ │ │ │ @@ -2672,28 +2672,28 @@ │ │ │ │ │ The module within LinuxCNC that coordinates the overall execution and interprets the part program. │ │ │ │ │ Tcl/Tk │ │ │ │ │ A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and │ │ │ │ │ selection wizards were written. │ │ │ │ │ Traverse Move │ │ │ │ │ A move in a straight line from the start point to the end point. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 48 / 55 │ │ │ │ │ │ │ │ │ │ Units │ │ │ │ │ See ”Machine Units”, ”Display Units”, or ”Program Units”. │ │ │ │ │ Unsigned Integer │ │ │ │ │ A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a │ │ │ │ │ usable range of zero to 4,294,967,296.) │ │ │ │ │ World Coordinates │ │ │ │ │ This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame │ │ │ │ │ that is attached to some point (generally the base) of the machine tool. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 49 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 7 │ │ │ │ │ │ │ │ │ │ Legal Section │ │ │ │ │ Translations of this file provided in the source tree are not legally binding. │ │ │ │ │ @@ -2720,15 +2720,15 @@ │ │ │ │ │ We have designed this License in order to use it for manuals for free software, because free software │ │ │ │ │ needs free documentation: a free program should come with manuals providing the same freedoms │ │ │ │ │ that the software does. But this License is not limited to software manuals; it can be used for any │ │ │ │ │ textual work, regardless of subject matter or whether it is published as a printed book. We recommend │ │ │ │ │ this License principally for works whose purpose is instruction or reference. │ │ │ │ │ 1. APPLICABILITY AND DEFINITIONS │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 50 / 55 │ │ │ │ │ │ │ │ │ │ This License applies to any manual or other work that contains a notice placed by the copyright holder │ │ │ │ │ saying it can be distributed under the terms of this License. The ”Document”, below, refers to any │ │ │ │ │ such manual or work. Any member of the public is a licensee, and is addressed as ”you”. │ │ │ │ │ A ”Modified Version” of the Document means any work containing the Document or a portion of it, │ │ │ │ │ @@ -2777,15 +2777,15 @@ │ │ │ │ │ these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. │ │ │ │ │ Both covers must also clearly and legibly identify you as the publisher of these copies. The front │ │ │ │ │ cover must present the full title with all words of the title equally prominent and visible. You may add │ │ │ │ │ other material on the covers in addition. Copying with changes limited to the covers, as long as they │ │ │ │ │ preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying │ │ │ │ │ in other respects. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 51 / 55 │ │ │ │ │ │ │ │ │ │ If the required texts for either cover are too voluminous to fit legibly, you should put the first ones │ │ │ │ │ listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. │ │ │ │ │ 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 │ │ │ │ │ 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 │ │ │ │ │ @@ -2831,15 +2831,15 @@ │ │ │ │ │ Version. N. Do not retitle any existing section as ”Endorsements” or to conflict in title with any │ │ │ │ │ Invariant Section. │ │ │ │ │ If the Modified Version includes new front-matter sections or appendices that qualify as Secondary │ │ │ │ │ Sections and contain no material copied from the Document, you may at your option designate some │ │ │ │ │ or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the │ │ │ │ │ Modified Version’s license notice. These titles must be distinct from any other section titles. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 52 / 55 │ │ │ │ │ │ │ │ │ │ You may add a section entitled ”Endorsements”, provided it contains nothing but endorsements of │ │ │ │ │ your Modified Version by various parties—for example, statements of peer review or that the text has │ │ │ │ │ been approved by an organization as the authoritative definition of a standard. │ │ │ │ │ You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as │ │ │ │ │ @@ -2880,15 +2880,15 @@ │ │ │ │ │ placed on covers that surround only the Document within the aggregate. Otherwise they must appear │ │ │ │ │ on covers around the whole aggregate. │ │ │ │ │ 8. TRANSLATION │ │ │ │ │ Translation is considered a kind of modification, so you may distribute translations of the Document │ │ │ │ │ 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 │ │ │ │ │ in addition to the original versions of these Invariant Sections. You may include a translation of │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 53 / 55 │ │ │ │ │ │ │ │ │ │ this 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 version will prevail. │ │ │ │ │ 9. TERMINATION │ │ │ │ │ @@ -2916,15 +2916,15 @@ │ │ │ │ │ is included in the section entitled ”GNU Free Documentation License”. │ │ │ │ │ If you have no Invariant Sections, write ”with no Invariant Sections” instead of saying which ones │ │ │ │ │ are invariant. If you have no Front-Cover Texts, write ”no Front-Cover Texts” instead of ”Front-Cover │ │ │ │ │ Texts being LIST”; likewise for Back-Cover Texts. │ │ │ │ │ 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, │ │ │ │ │ to permit their use in free software. │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 54 / 55 │ │ │ │ │ │ │ │ │ │ Chapter 8 │ │ │ │ │ │ │ │ │ │ Index │ │ │ │ │ A │ │ │ │ │ @@ -3002,15 +3002,15 @@ │ │ │ │ │ RTAI, 47 │ │ │ │ │ RTAPI, 47 │ │ │ │ │ RTLINUX, 47 │ │ │ │ │ Running LinuxCNC, 15 │ │ │ │ │ S │ │ │ │ │ servo motor, 47 │ │ │ │ │ │ │ │ │ │ - Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Getting Started V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Signed Integer, 47 │ │ │ │ │ spindle, 47 │ │ │ │ │ stepper motor, 47 │ │ │ │ │ System Requirements, 4 │ │ │ │ │ T │ │ │ │ │ TASK, 47 │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf │ │ │ │ ├── ./usr/share/doc/linuxcnc/LinuxCNC_Integrator_zh_CN.pdf │ │ │ │ │┄ Document info │ │ │ │ │ @@ -1,4 +1,4 @@ │ │ │ │ │ CreationDate: "D:20230210043318-00'00'" │ │ │ │ │ Creator: 'DBLaTeX-0.3.12' │ │ │ │ │ Producer: 'xdvipdfmx (20211117)' │ │ │ │ │ -Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023' │ │ │ │ │ +Title: 'Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023' │ │ │ │ ├── pdftotext {} - │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Integrator Information │ │ │ │ │ -V2.9.0~pre1+git20230208.f1270d6ed7, 09 │ │ │ │ │ +V2.9.0~pre1+git20230208.f1270d6ed7, 10 │ │ │ │ │ Feb 2023 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ ii │ │ │ │ │ │ │ │ │ │ Contents │ │ │ │ │ 1 Stepper Information │ │ │ │ │ │ │ │ │ │ 1 │ │ │ │ │ @@ -127,15 +127,15 @@ │ │ │ │ │ │ │ │ │ │ 18 │ │ │ │ │ │ │ │ │ │ 3.12.3Wiring Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . │ │ │ │ │ │ │ │ │ │ 18 │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 1 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 1 │ │ │ │ │ │ │ │ │ │ Stepper Information │ │ │ │ │ 1.1 Stepper Motor Operation │ │ │ │ │ @@ -154,15 +154,15 @@ │ │ │ │ │ the time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing │ │ │ │ │ the overall torque. This relationship between speed and torque is largely inversely proportional. │ │ │ │ │ In the below example, the charging time for three coils is shown when the applied voltage is stepped │ │ │ │ │ from 0 V to 40 V. While all three coils can easily reach the full current limit of 5 amps (A), the time │ │ │ │ │ taken varies for each coil. The 4 milli-Henry (mH) coil (blue trace) takes twice as long to reach full │ │ │ │ │ current than the 2 mH coil (green trace), and the 8 mH (red trace) coil takes twice as long again: │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 2 / 18 │ │ │ │ │ │ │ │ │ │ If the rate at which step changes are applied to the coils is significantly shorter than the rise time, │ │ │ │ │ it’s easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus │ │ │ │ │ maximum torque is curtailed. In the below example the 2 mH coil can achieve the full 5 A limit before │ │ │ │ │ the step voltage is removed, but the 4 mH and 8 mH coils cannot: │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ In most stepper-based CNC systems the voltage of the supply feeding the stepper driver is several │ │ │ │ │ orders of magnitude greater than the voltage of the motor itself. A typical NEMA23 stepper motor │ │ │ │ │ may have a rating of only a handful of volts, yet the power supply and driver could be operating at │ │ │ │ │ 48 VDC or more. │ │ │ │ │ Nearly all modern stepper motor drivers on the market today are constant-current types. That is, │ │ │ │ │ the current being applied to each winding is fixed irrespective of how much voltage is being applied. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 3 / 18 │ │ │ │ │ │ │ │ │ │ Most drivers accomplish this by monitoring the current being drawn through the motor windings and │ │ │ │ │ rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending │ │ │ │ │ on the drivers being used, it may even be possible to hear this high frequency whistling in the motors │ │ │ │ │ themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding │ │ │ │ │ @@ -234,15 +234,15 @@ │ │ │ │ │ introduced. │ │ │ │ │ Several methods exist to help control the effects of resonance, all with varying degrees of complexity, │ │ │ │ │ effectiveness and side effects: │ │ │ │ │ • Microstepping can help reduce resonance by using smaller step changes in current between each │ │ │ │ │ step. These smaller step changes cause less ringing in the motor and windings and thus cause less │ │ │ │ │ excitation at the point of resonance. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 4 / 18 │ │ │ │ │ │ │ │ │ │ • Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic │ │ │ │ │ method of reducing resonance, always accelerating or decelerating through the resonant peak. │ │ │ │ │ • 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. │ │ │ │ │ @@ -281,15 +281,15 @@ │ │ │ │ │ in leadscrews, flex in gantries, runout in the spindle and cutting tool, static friction in the stepper │ │ │ │ │ motor itself, stepper detent error , etc.) that will render such small amounts of resolution completely │ │ │ │ │ meaningless. In practice, microstepping at rates in excess of 4x or 8x on a CNC machine fitted with │ │ │ │ │ leadscrews serves little purpose. In some cases it may even be more beneficial to run at lower degrees │ │ │ │ │ of microstepping or even full steps, and operate the stepper motor through a gear reduction to obtain │ │ │ │ │ the necessary resolution and torque gains. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 5 / 18 │ │ │ │ │ │ │ │ │ │ 1.5 Open and Closed Loop │ │ │ │ │ In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver │ │ │ │ │ receives no feedback from the motor that it has achieved the desired outcome when commanded to │ │ │ │ │ begin stepping. The assumption by the software, driver and end user is that the motor operated │ │ │ │ │ @@ -309,15 +309,15 @@ │ │ │ │ │ to the downstream driver as it would normally when running in open loop. In these situations the │ │ │ │ │ drivers usually include an alarm output which signals the software to halt when the load placed on │ │ │ │ │ the stepper becomes too great for the driver to compensate without losing steps. │ │ │ │ │ More advanced implementations of closed loop operation bring the encoder signal all the way back │ │ │ │ │ to the host computer, but require that a much higher hardware and software overhead be installed to │ │ │ │ │ manage the encoder feedback and calculation and delivery of drive compensation. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 6 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 2 │ │ │ │ │ │ │ │ │ │ Stepper Timing │ │ │ │ │ This page is for step and direction timing of stepper drives. │ │ │ │ │ @@ -380,15 +380,15 @@ │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ │ │ │ │ │ 1000 │ │ │ │ │ │ │ │ │ │ Falling │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 202 │ │ │ │ │ │ │ │ │ │ @@ -480,15 +480,15 @@ │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g201rev16.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g212rev15.html │ │ │ │ │ http://www.geckodrive.com │ │ │ │ │ support/motorcontrolmanuals/stepperdrives/g213vrev7.html │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ Gecko │ │ │ │ │ │ │ │ │ │ 320 │ │ │ │ │ │ │ │ │ │ @@ -625,15 +625,15 @@ │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_manual.pdf │ │ │ │ │ http://granitedevices.fi/assets/files/vsde_160_dualdc_manual.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.jvl.dk/files/pdf/lb043gb.pdf │ │ │ │ │ http://www.piclist.com/techref/io/stepper/linistep/index.htm │ │ │ │ │ http://www.piclist.com/techref/io/stepper/THB6064/index.htm │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ *Motion │ │ │ │ │ Control │ │ │ │ │ │ │ │ │ │ MSD542 │ │ │ │ │ @@ -857,15 +857,15 @@ │ │ │ │ │ http://www.kelinginc.net/kL6852.pdf │ │ │ │ │ https://www.sherline.com/- │ │ │ │ │ │ │ │ │ │ http://www.lewetz.de/download/ibstep3se.pdf │ │ │ │ │ http://www.compumotor.com │ │ │ │ │ manuals/ZETA/ZETA_Rev_A_Entire.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ www.cncdrive.com │ │ │ │ │ Dugong │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ @@ -1104,15 +1104,15 @@ │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM503d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM705d_P.pdf │ │ │ │ │ http://leadshine.com/UploadFile/Down/EM806d_P.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M415Bm.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M542V2m.pdf │ │ │ │ │ http://leadshineusa.com/UploadFile/Down/M752m.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ Manufacturer │ │ │ │ │ Model │ │ │ │ │ │ │ │ │ │ Step │ │ │ │ │ Time │ │ │ │ │ 1500 │ │ │ │ │ @@ -1291,15 +1291,15 @@ │ │ │ │ │ 5000 │ │ │ │ │ │ │ │ │ │ Rising │ │ │ │ │ Edge │ │ │ │ │ │ │ │ │ │ http://cnc4you.co.uk/resources/CW5045.pdf │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 12 / 18 │ │ │ │ │ │ │ │ │ │ Chapter 3 │ │ │ │ │ │ │ │ │ │ Best Wiring Practices │ │ │ │ │ 3.1 Electrical Noise │ │ │ │ │ @@ -1328,15 +1328,15 @@ │ │ │ │ │ this discussion the terms earth and common must be made distinct from each other to avoid confusion. │ │ │ │ │ │ │ │ │ │ 3.3 Wire Selection and Use │ │ │ │ │ Wire comes in many types, sizes and configurations. Wading through all the wire available is a monumental task of its own, but for the purposes of this article it is only necessary to consider the types of │ │ │ │ │ wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have │ │ │ │ │ some effect on the overall system. What follows are some tips that may prove helpful. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 13 / 18 │ │ │ │ │ │ │ │ │ │ 3.3.1 Single Conductor Wire │ │ │ │ │ Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than │ │ │ │ │ stranded, but more likely to break if used in applications where repeated bending is expected. Fortunately, the prevalence of stranded wire on the market means that its use should be encouraged │ │ │ │ │ wherever possible. │ │ │ │ │ @@ -1377,15 +1377,15 @@ │ │ │ │ │ is more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded │ │ │ │ │ types. Coverage is typically 70% to 95% depending on how tight the braid has been constructed. │ │ │ │ │ Despite the lower coverage of braided shield, the effectiveness is greater than foil shielding due to │ │ │ │ │ the increased bulk of the braid, and copper being a better conductor than aluminum. │ │ │ │ │ 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 │ │ │ │ │ jacket. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 14 / 18 │ │ │ │ │ │ │ │ │ │ 3.4 AC Line Voltage │ │ │ │ │ The incoming mains AC that powers the CNC system can pick up and carry noise into the power │ │ │ │ │ supplies and other equipment. For example, if the incoming supply is also used to feed large motors, │ │ │ │ │ electrical noise may be generated on the line feeding the CNC components. Although most modern │ │ │ │ │ @@ -1423,15 +1423,15 @@ │ │ │ │ │ supply may have optically-isolated signal input lines which provide complete electrical separation of │ │ │ │ │ the driver’s input and output circuitry for safety and noise immunity purposes. Tying the stepper │ │ │ │ │ motor and logic control supply commons together in this case may have a detrimental impact on the │ │ │ │ │ operation of the system. │ │ │ │ │ In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system │ │ │ │ │ separate from each other, and separate from the AC mains earth unless there is a specific requirement │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 15 / 18 │ │ │ │ │ │ │ │ │ │ to tie them together. In most cases the common points of the heavy-duty power sections of the CNC │ │ │ │ │ system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common │ │ │ │ │ points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool │ │ │ │ │ probe circuitry etc) to prevent cross-contamination of the two systems. │ │ │ │ │ @@ -1471,15 +1471,15 @@ │ │ │ │ │ electrically hostile environments. When grounding the shield in the cable, terminate to the mains │ │ │ │ │ earth. │ │ │ │ │ If the controller and interfacing devices can withstand higher control signals, consider altering the │ │ │ │ │ wiring and power supply requirements to use a bigger voltage for signaling (eg, 12V or 24V). The │ │ │ │ │ same 2V EMI noise spike that could corrupt a 3.3V limit switch signal will be far less likely to cause │ │ │ │ │ issues with a limit switch operating with a 24V signal. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 16 / 18 │ │ │ │ │ │ │ │ │ │ 3.8 Stepper or Servo Motor Drivers │ │ │ │ │ The metal housing of the driver should be connected to the local mains earth in the CNC system. │ │ │ │ │ Some driver enclosures will indicate a specific terminal as being the earthing point, in which case this │ │ │ │ │ point must be connected to earth via a dedicated wire. │ │ │ │ │ @@ -1514,15 +1514,15 @@ │ │ │ │ │ each other has the tendency to exacerbate EMI interference. Separate conductors by as much distance as possible. If two conductors must cross over each other make the crossing as close to a 90 │ │ │ │ │ degree angle as possible. │ │ │ │ │ Avoid long loops of excess wire at any peripheral devices - they are great antennas for receiving or │ │ │ │ │ transmitting noise. Where possible, run wires in close proximity to large earthed structures. If the │ │ │ │ │ controller enclosure features a large metallic back plate that is earthed, secure all control wiring │ │ │ │ │ against this surface as much as possible while wiring between two points. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 17 / 18 │ │ │ │ │ │ │ │ │ │ 3.11 Mechanical Noise │ │ │ │ │ Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly │ │ │ │ │ when operated. More often than not the switch contacts will physically bounce against each other │ │ │ │ │ several times within a very short space of time when operated. This may be interpreted by the machine │ │ │ │ │ @@ -1556,15 +1556,15 @@ │ │ │ │ │ │ │ │ │ │ 3.12.1 Hardware Documentation │ │ │ │ │ At a minimum, make sure to save any documentation associated with the installed hardware in a safe │ │ │ │ │ place. Stepper controllers, break out boards, power supplies, VFDs, interfaces and controllers, servo │ │ │ │ │ and stepper drivers and any associated device settings are all critical components of the system and │ │ │ │ │ their documentation should be kept at hand for easy reference. │ │ │ │ │ │ │ │ │ │ - Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 09 Feb 2023 │ │ │ │ │ + Integrator Information V2.9.0~pre1+git20230208.f1270d6ed7, 10 Feb 2023 │ │ │ │ │ │ │ │ │ │ 18 / 18 │ │ │ │ │ │ │ │ │ │ 3.12.2 Wiring Schematics │ │ │ │ │ As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The │ │ │ │ │ schematic does not have to be all that neat, but it should be understandable in such a way that it │ │ │ │ │ could be easily interpreted at a later date, ideally by anyone who may need to service the equipment. ├── linuxcnc-uspace_2.9.0~pre1+git20230208.f1270d6ed7-1_amd64.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2023-02-10 04:33:18.000000 debian-binary │ │ --rw-r--r-- 0 0 0 110932 2023-02-10 04:33:18.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 21477900 2023-02-10 04:33:18.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 110928 2023-02-10 04:33:18.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 21475972 2023-02-10 04:33:18.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: linuxcnc-uspace │ │ │ │ Source: linuxcnc │ │ │ │ Version: 2.9.0~pre1+git20230208.f1270d6ed7-1 │ │ │ │ Architecture: amd64 │ │ │ │ Maintainer: LinuxCNC Developers │ │ │ │ -Installed-Size: 81860 │ │ │ │ +Installed-Size: 81861 │ │ │ │ Depends: python3 (<< 3.12), python3 (>= 3.11~), python3:any, libboost-python1.74.0 (>= 1.74.0+ds1), libboost-python1.74.0-py311, libc6 (>= 2.35), libcairo2 (>= 1.2.4), libedit2 (>= 2.11-20080614-0), libepoxy0 (>= 1.0), libgcc-s1 (>= 4.0), libglib2.0-0 (>= 2.12.0), libgtk-3-0 (>= 3.11.5), libgtk2.0-0 (>= 2.8.0), libmodbus5 (>= 3.1.4), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpython3.11 (>= 3.11.0), libstdc++6 (>= 11), libtirpc3 (>= 1.0.2), libtk8.6 (>= 8.6.0), libudev1 (>= 183), libusb-1.0-0 (>= 2:1.0.22), libx11-6, libxinerama1 (>= 2:1.1.4), libxmu6 (>= 2:1.1.3), libudev-dev, iptables, blt, mesa-utils, python3-tk, python3-numpy, python3-cairo, python3-gi-cairo, python3-opengl, python3-configobj, python3-xlib, libgtksourceview-3.0-dev, tcl8.6, tk8.6, bwidget (>= 1.7), tclreadline, tclx, procps, psmisc, udev │ │ │ │ Recommends: linuxcnc-doc-en | linuxcnc-doc, librsvg2-dev, hostmot2-firmware-all, linux-image-rt-amd64, python3-pil, python3-pil.imagetk, python3-pyqt5, python3-pyqt5.qsci, python3-pyqt5.qtsvg, python3-pyqt5.qtopengl, python3-opencv, python3-dbus, python3-espeak, python3-dbus.mainloop.pyqt5, python3-pyqt5.qtwebkit, espeak-ng, pyqt5-dev-tools, gstreamer1.0-tools, espeak, sound-theme-freedesktop, python3-poppler-qt5 │ │ │ │ Suggests: mesaflash, onboard │ │ │ │ Conflicts: linuxcnc, linuxcnc-sim │ │ │ │ Breaks: linuxcnc-doc-en (<= 2.9.0~pre0+git20220402.2500863908-4), linuxcnc-doc-es (<= 2.9.0~pre0+git20220402.2500863908-4), linuxcnc-doc-fr (<= 2.9.0~pre0+git20220402.2500863908-4) │ │ │ │ Section: misc │ │ │ │ Priority: optional │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -4484,15 +4484,15 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2096 2023-02-10 04:33:18.000000 ./usr/share/man/man1/mitsub_vfd.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1126 2023-02-10 04:33:18.000000 ./usr/share/man/man1/monitor-xhc-hb04.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1047 2023-02-10 04:33:18.000000 ./usr/share/man/man1/motion-logger.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2586 2023-02-10 04:33:18.000000 ./usr/share/man/man1/moveoff_gui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1969 2023-02-10 04:33:18.000000 ./usr/share/man/man1/mqtt-publisher.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1010 2023-02-10 04:33:18.000000 ./usr/share/man/man1/ngcgui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1203 2023-02-10 04:33:18.000000 ./usr/share/man/man1/panelui.1.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 614 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pi500_vfd.1.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 616 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pi500_vfd.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 942 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pmx485-test.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 855 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pmx485.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1023 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pncconf.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1038 2023-02-10 04:33:18.000000 ./usr/share/man/man1/puma560gui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1038 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pumagui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1014 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pyngcgui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1034 2023-02-10 04:33:18.000000 ./usr/share/man/man1/pyui.1.gz │ │ │ │ @@ -4513,187 +4513,187 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1492 2023-02-10 04:33:18.000000 ./usr/share/man/man1/shuttle.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 560 2023-02-10 04:33:18.000000 ./usr/share/man/man1/sim-torch.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1494 2023-02-10 04:33:18.000000 ./usr/share/man/man1/sim_pin.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1032 2023-02-10 04:33:18.000000 ./usr/share/man/man1/simulate_probe.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1044 2023-02-10 04:33:18.000000 ./usr/share/man/man1/stepconf.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2117 2023-02-10 04:33:18.000000 ./usr/share/man/man1/svd-ps_vfd.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1133 2023-02-10 04:33:18.000000 ./usr/share/man/man1/teach-in.1.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 715 2023-02-10 04:33:18.000000 ./usr/share/man/man1/thermistor.1.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 718 2023-02-10 04:33:18.000000 ./usr/share/man/man1/thermistor.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1002 2023-02-10 04:33:18.000000 ./usr/share/man/man1/tooledit.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1226 2023-02-10 04:33:18.000000 ./usr/share/man/man1/touchy.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1125 2023-02-10 04:33:18.000000 ./usr/share/man/man1/update_ini.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3449 2023-02-10 04:33:18.000000 ./usr/share/man/man1/vfdb_vfd.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3121 2023-02-10 04:33:18.000000 ./usr/share/man/man1/vfs11_vfd.1.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 632 2023-02-10 04:33:18.000000 ./usr/share/man/man1/wj200_vfd.1.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 635 2023-02-10 04:33:18.000000 ./usr/share/man/man1/wj200_vfd.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1014 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-hb04-accels.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3946 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-hb04.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 8219 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xhc-whb04b-6.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1069 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xyzac-trt-gui.1.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1069 2023-02-10 04:33:18.000000 ./usr/share/man/man1/xyzbc-trt-gui.1.gz │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 475 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 466 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs_s32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 479 2023-02-10 04:33:18.000000 ./usr/share/man/man9/and2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1369 2023-02-10 04:33:18.000000 ./usr/share/man/man9/anglejog.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 477 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 468 2023-02-10 04:33:18.000000 ./usr/share/man/man9/abs_s32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 482 2023-02-10 04:33:18.000000 ./usr/share/man/man9/and2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/anglejog.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 195 2023-02-10 04:33:18.000000 ./usr/share/man/man9/at_pid.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 761 2023-02-10 04:33:18.000000 ./usr/share/man/man9/axistest.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 390 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bin2gray.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 763 2023-02-10 04:33:18.000000 ./usr/share/man/man9/axistest.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 393 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bin2gray.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 960 2023-02-10 04:33:18.000000 ./usr/share/man/man9/biquad.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 519 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitslice.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 444 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitwise.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 5513 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bldc.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 556 2023-02-10 04:33:18.000000 ./usr/share/man/man9/blend.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3386 2023-02-10 04:33:18.000000 ./usr/share/man/man9/carousel.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 727 2023-02-10 04:33:18.000000 ./usr/share/man/man9/charge_pump.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 767 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 671 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke3.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 612 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarkeinv.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 522 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitslice.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 447 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bitwise.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 5514 2023-02-10 04:33:18.000000 ./usr/share/man/man9/bldc.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 559 2023-02-10 04:33:18.000000 ./usr/share/man/man9/blend.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/carousel.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 729 2023-02-10 04:33:18.000000 ./usr/share/man/man9/charge_pump.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 769 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 673 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarke3.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 614 2023-02-10 04:33:18.000000 ./usr/share/man/man9/clarkeinv.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1231 2023-02-10 04:33:18.000000 ./usr/share/man/man9/classicladder.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 695 2023-02-10 04:33:18.000000 ./usr/share/man/man9/comp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 386 2023-02-10 04:33:18.000000 ./usr/share/man/man9/constant.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 412 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 387 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_s32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 387 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_u32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 511 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 698 2023-02-10 04:33:18.000000 ./usr/share/man/man9/comp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/constant.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 418 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_float.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 388 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_s32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 389 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_bit_u32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_s32.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_float_u32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 480 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 413 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 481 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_bit.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 415 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_float.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1012 2023-02-10 04:33:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 483 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_bit.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 417 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_float.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_s32_u32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 483 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_bit.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 417 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_float.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/conv_u32_s32.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1015 2023-02-10 04:33:18.000000 ./usr/share/man/man9/corexy_by_hal.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1025 2023-02-10 04:33:18.000000 ./usr/share/man/man9/counter.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 437 2023-02-10 04:33:18.000000 ./usr/share/man/man9/dbounce.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ddt.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 488 2023-02-10 04:33:18.000000 ./usr/share/man/man9/deadzone.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 436 2023-02-10 04:33:18.000000 ./usr/share/man/man9/dbounce.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 587 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ddt.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 489 2023-02-10 04:33:18.000000 ./usr/share/man/man9/deadzone.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 821 2023-02-10 04:33:18.000000 ./usr/share/man/man9/debounce.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 782 2023-02-10 04:33:18.000000 ./usr/share/man/man9/demux.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 506 2023-02-10 04:33:18.000000 ./usr/share/man/man9/differential.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 588 2023-02-10 04:33:18.000000 ./usr/share/man/man9/div2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 607 2023-02-10 04:33:18.000000 ./usr/share/man/man9/edge.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 783 2023-02-10 04:33:18.000000 ./usr/share/man/man9/demux.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 509 2023-02-10 04:33:18.000000 ./usr/share/man/man9/differential.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 591 2023-02-10 04:33:18.000000 ./usr/share/man/man9/div2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 610 2023-02-10 04:33:18.000000 ./usr/share/man/man9/edge.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2502 2023-02-10 04:33:18.000000 ./usr/share/man/man9/encoder.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1213 2023-02-10 04:33:18.000000 ./usr/share/man/man9/encoder_ratio.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1753 2023-02-10 04:33:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 943 2023-02-10 04:33:18.000000 ./usr/share/man/man9/estop_latch.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 509 2023-02-10 04:33:18.000000 ./usr/share/man/man9/feedcomp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1261 2023-02-10 04:33:18.000000 ./usr/share/man/man9/filter_kalman.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 438 2023-02-10 04:33:18.000000 ./usr/share/man/man9/flipflop.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1158 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantry.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1755 2023-02-10 04:33:18.000000 ./usr/share/man/man9/eoffset_per_angle.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 946 2023-02-10 04:33:18.000000 ./usr/share/man/man9/estop_latch.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 511 2023-02-10 04:33:18.000000 ./usr/share/man/man9/feedcomp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1263 2023-02-10 04:33:18.000000 ./usr/share/man/man9/filter_kalman.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 440 2023-02-10 04:33:18.000000 ./usr/share/man/man9/flipflop.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1160 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantry.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 281 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gantrykins.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 780 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gearchange.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 782 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gearchange.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 169 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gentrivkins.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 695 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gladevcp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 406 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gray2bin.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 408 2023-02-10 04:33:18.000000 ./usr/share/man/man9/gray2bin.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 845 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hal_bb_gpio.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 987 2023-02-10 04:33:18.000000 ./usr/share/man/man9/histobins.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 989 2023-02-10 04:33:18.000000 ./usr/share/man/man9/histobins.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1619 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_7i43.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_7i90.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3833 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_eth.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 600 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_pci.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3760 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_rpspi.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1625 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hm2_spi.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1155 2023-02-10 04:33:18.000000 ./usr/share/man/man9/homecomp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1158 2023-02-10 04:33:18.000000 ./usr/share/man/man9/homecomp.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 21228 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hostmot2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 420 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hypot.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 986 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ilowpass.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 487 2023-02-10 04:33:18.000000 ./usr/share/man/man9/integ.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 558 2023-02-10 04:33:18.000000 ./usr/share/man/man9/invert.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 946 2023-02-10 04:33:18.000000 ./usr/share/man/man9/joyhandle.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 422 2023-02-10 04:33:18.000000 ./usr/share/man/man9/hypot.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 989 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ilowpass.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 489 2023-02-10 04:33:18.000000 ./usr/share/man/man9/integ.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 560 2023-02-10 04:33:18.000000 ./usr/share/man/man9/invert.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 948 2023-02-10 04:33:18.000000 ./usr/share/man/man9/joyhandle.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4375 2023-02-10 04:33:18.000000 ./usr/share/man/man9/kins.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 570 2023-02-10 04:33:18.000000 ./usr/share/man/man9/knob2float.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 829 2023-02-10 04:33:18.000000 ./usr/share/man/man9/latencybins.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 573 2023-02-10 04:33:18.000000 ./usr/share/man/man9/knob2float.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 832 2023-02-10 04:33:18.000000 ./usr/share/man/man9/latencybins.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3225 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lcd.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 420 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit1.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 541 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 714 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit3.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 994 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lincurve.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 422 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit1.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 544 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 716 2023-02-10 04:33:18.000000 ./usr/share/man/man9/limit3.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 997 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lincurve.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 808 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lineardeltakins.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1183 2023-02-10 04:33:18.000000 ./usr/share/man/man9/logic.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 855 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lowpass.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1692 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lut5.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 370 2023-02-10 04:33:18.000000 ./usr/share/man/man9/maj3.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 504 2023-02-10 04:33:18.000000 ./usr/share/man/man9/match8.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1185 2023-02-10 04:33:18.000000 ./usr/share/man/man9/logic.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 856 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lowpass.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1693 2023-02-10 04:33:18.000000 ./usr/share/man/man9/lut5.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 373 2023-02-10 04:33:18.000000 ./usr/share/man/man9/maj3.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 506 2023-02-10 04:33:18.000000 ./usr/share/man/man9/match8.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1760 2023-02-10 04:33:18.000000 ./usr/share/man/man9/matrix_kb.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1074 2023-02-10 04:33:18.000000 ./usr/share/man/man9/max31855.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 919 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_7i65.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1026 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_pktgyro_test.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1198 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_uart.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 883 2023-02-10 04:33:18.000000 ./usr/share/man/man9/message.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 851 2023-02-10 04:33:18.000000 ./usr/share/man/man9/millturn.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 440 2023-02-10 04:33:18.000000 ./usr/share/man/man9/minmax.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1075 2023-02-10 04:33:18.000000 ./usr/share/man/man9/max31855.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 918 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_7i65.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1029 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_pktgyro_test.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1199 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mesa_uart.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 885 2023-02-10 04:33:18.000000 ./usr/share/man/man9/message.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 853 2023-02-10 04:33:18.000000 ./usr/share/man/man9/millturn.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 444 2023-02-10 04:33:18.000000 ./usr/share/man/man9/minmax.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6650 2023-02-10 04:33:18.000000 ./usr/share/man/man9/motion.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 3093 2023-02-10 04:33:18.000000 ./usr/share/man/man9/moveoff.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 408 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mult2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1147 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiclick.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 677 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiswitch.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1024 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux16.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 431 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 545 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux4.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 596 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux8.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 3094 2023-02-10 04:33:18.000000 ./usr/share/man/man9/moveoff.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 411 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mult2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1149 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiclick.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 679 2023-02-10 04:33:18.000000 ./usr/share/man/man9/multiswitch.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1025 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux16.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 434 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 547 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux4.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 598 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux8.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1751 2023-02-10 04:33:18.000000 ./usr/share/man/man9/mux_generic.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 571 2023-02-10 04:33:18.000000 ./usr/share/man/man9/near.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 366 2023-02-10 04:33:18.000000 ./usr/share/man/man9/not.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 484 2023-02-10 04:33:18.000000 ./usr/share/man/man9/offset.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1569 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ohmic.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 758 2023-02-10 04:33:18.000000 ./usr/share/man/man9/oneshot.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 574 2023-02-10 04:33:18.000000 ./usr/share/man/man9/near.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 368 2023-02-10 04:33:18.000000 ./usr/share/man/man9/not.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 486 2023-02-10 04:33:18.000000 ./usr/share/man/man9/offset.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1570 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ohmic.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 763 2023-02-10 04:33:18.000000 ./usr/share/man/man9/oneshot.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1142 2023-02-10 04:33:18.000000 ./usr/share/man/man9/opto_ac5.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/or2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1236 2023-02-10 04:33:18.000000 ./usr/share/man/man9/orient.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 454 2023-02-10 04:33:18.000000 ./usr/share/man/man9/or2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1237 2023-02-10 04:33:18.000000 ./usr/share/man/man9/orient.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 5662 2023-02-10 04:33:18.000000 ./usr/share/man/man9/pid.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 4331 2023-02-10 04:33:18.000000 ./usr/share/man/man9/plasmac.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2004 2023-02-10 04:33:18.000000 ./usr/share/man/man9/pwmgen.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 673 2023-02-10 04:33:18.000000 ./usr/share/man/man9/rosekins.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 367 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sample_hold.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 369 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sample_hold.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1955 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sampler.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 403 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scale.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 519 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scaled_s32_sums.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 517 2023-02-10 04:33:18.000000 ./usr/share/man/man9/select8.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 913 2023-02-10 04:33:18.000000 ./usr/share/man/man9/serport.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 405 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scale.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 521 2023-02-10 04:33:18.000000 ./usr/share/man/man9/scaled_s32_sums.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 518 2023-02-10 04:33:18.000000 ./usr/share/man/man9/select8.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 915 2023-02-10 04:33:18.000000 ./usr/share/man/man9/serport.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1909 2023-02-10 04:33:18.000000 ./usr/share/man/man9/setsserial.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1312 2023-02-10 04:33:18.000000 ./usr/share/man/man9/siggen.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1249 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1250 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_axis_hardware.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1295 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_encoder.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 683 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 474 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1124 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_parport.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 609 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_spindle.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/simple_tp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 456 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sphereprobe.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1843 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 492 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 686 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_home_switch.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 475 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_matrix_kb.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1127 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_parport.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 610 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sim_spindle.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 586 2023-02-10 04:33:18.000000 ./usr/share/man/man9/simple_tp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 458 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sphereprobe.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1845 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 495 2023-02-10 04:33:18.000000 ./usr/share/man/man9/spindle_monitor.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6159 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sserial.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3748 2023-02-10 04:33:18.000000 ./usr/share/man/man9/stepgen.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 776 2023-02-10 04:33:18.000000 ./usr/share/man/man9/steptest.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 779 2023-02-10 04:33:18.000000 ./usr/share/man/man9/steptest.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1947 2023-02-10 04:33:18.000000 ./usr/share/man/man9/streamer.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 488 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sum2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 490 2023-02-10 04:33:18.000000 ./usr/share/man/man9/sum2.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 831 2023-02-10 04:33:18.000000 ./usr/share/man/man9/supply.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1342 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thc.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1256 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thcud.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1345 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thc.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1257 2023-02-10 04:33:18.000000 ./usr/share/man/man9/thcud.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1035 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threads.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 361 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threadtest.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1178 2023-02-10 04:33:18.000000 ./usr/share/man/man9/time.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 581 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelay.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 776 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelta.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 448 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tof.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 504 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 654 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle2nist.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 447 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ton.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 466 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 883 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tpcomp.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_bit.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 482 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_float.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 641 2023-02-10 04:33:18.000000 ./usr/share/man/man9/updown.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 1276 2023-02-10 04:33:18.000000 ./usr/share/man/man9/userkins.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 363 2023-02-10 04:33:18.000000 ./usr/share/man/man9/threadtest.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1181 2023-02-10 04:33:18.000000 ./usr/share/man/man9/time.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 584 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelay.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 779 2023-02-10 04:33:18.000000 ./usr/share/man/man9/timedelta.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 451 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tof.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 507 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 657 2023-02-10 04:33:18.000000 ./usr/share/man/man9/toggle2nist.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 449 2023-02-10 04:33:18.000000 ./usr/share/man/man9/ton.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 469 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 886 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tpcomp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 453 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_bit.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 485 2023-02-10 04:33:18.000000 ./usr/share/man/man9/tristate_float.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 642 2023-02-10 04:33:18.000000 ./usr/share/man/man9/updown.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 1277 2023-02-10 04:33:18.000000 ./usr/share/man/man9/userkins.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 967 2023-02-10 04:33:18.000000 ./usr/share/man/man9/watchdog.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 512 2023-02-10 04:33:18.000000 ./usr/share/man/man9/wcomp.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 515 2023-02-10 04:33:18.000000 ./usr/share/man/man9/wcomp.9.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 780 2023-02-10 04:33:18.000000 ./usr/share/man/man9/weighted_sum.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 783 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 492 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xor2.9.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 867 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xyzab_tdr_kins.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 785 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xhc_hb04_util.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 494 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xor2.9.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 871 2023-02-10 04:33:18.000000 ./usr/share/man/man9/xyzab_tdr_kins.9.gz │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/metainfo/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 715 2022-10-24 01:10:25.000000 ./usr/share/metainfo/linuxcnc-uspace.metainfo.xml │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/mime/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/mime/packages/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 305 2022-07-01 22:52:59.000000 ./usr/share/mime/packages/linuxcnc-uspace.xml │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/qtvcp/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2023-02-10 04:33:18.000000 ./usr/share/qtvcp/images/ │ │ │ ├── ./etc/linuxcnc/rtapi.conf │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ # DO NOT EDIT THIS FILE ! │ │ │ │ # │ │ │ │ # ../scripts/rtapi.conf. Generated from rtapi.conf.in by configure. │ │ │ │ -# on Fri Feb 2 06:20:29 -12 2024 │ │ │ │ +# on Fri Mar 7 19:14:59 +14 2025 │ │ │ │ # │ │ │ │ │ │ │ │ # A few parameters from emc2/Makefile.inc │ │ │ │ EMC2_HOME=/usr │ │ │ │ KERNELDIR= │ │ │ │ RTLIB_DIR=/usr/lib/linuxcnc/modules │ │ │ │ MODULE_EXT=.so │ │ │ ├── ./usr/lib/linuxcnc/realtime │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ # removed when the job has ended and is used throughout the LinuxCNC │ │ │ │ # infrastructure. The script has no effect for the PREEMPT realtime kernel. │ │ │ │ # The script is not meant to be started a boot time - it could be, though. │ │ │ │ # X-Interactive: false │ │ │ │ ### END INIT INFO │ │ │ │ # │ │ │ │ # ../scripts/realtime. Generated from realtime.in by configure. │ │ │ │ -# on Fri Feb 2 06:20:29 -12 2024 │ │ │ │ +# on Fri Mar 7 19:14:59 +14 2025 │ │ │ │ # │ │ │ │ │ │ │ │ export LANG=C │ │ │ │ │ │ │ │ GREP=/bin/grep │ │ │ │ PS=/bin/ps │ │ │ ├── ./usr/share/man/man1/pi500_vfd.1.gz │ │ │ │ ├── pi500_vfd.1 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/user_comps/pi500_vfd/pi500_vfd.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH PI500_VFD "1" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH PI500_VFD "1" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ pi500_vfd \- Powtran PI500 Modbus driver │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .B pi500_vfd │ │ │ │ │ .SH PINS │ │ │ │ │ .TP │ │ │ ├── ./usr/share/man/man1/thermistor.1.gz │ │ │ │ ├── thermistor.1 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/user_comps/thermistor.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH THERMISTOR "1" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH THERMISTOR "1" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ thermistor \- compute temperature indicated by a thermistor │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .B thermistor │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man1/wj200_vfd.1.gz │ │ │ │ ├── wj200_vfd.1 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/user_comps/wj200_vfd/wj200_vfd.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH WJ200_VFD "1" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH WJ200_VFD "1" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ wj200_vfd \- Hitachi wj200 modbus driver │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .B wj200_vfd │ │ │ │ │ .SH PINS │ │ │ │ │ .TP │ │ │ ├── ./usr/share/man/man9/abs.9.gz │ │ │ │ ├── abs.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/abs.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ABS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ABS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ abs \- Compute the absolute value and sign of the input signal │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt abs [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/abs_s32.9.gz │ │ │ │ ├── abs_s32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/abs_s32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ABS_S32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ABS_S32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ abs_s32 \- Compute the absolute value and sign of the input signal │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt abs_s32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/and2.9.gz │ │ │ │ ├── and2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/and2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH AND2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH AND2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ and2 \- Two-input AND gate │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt and2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/anglejog.9.gz │ │ │ │ ├── anglejog.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/anglejog.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ANGLEJOG "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ANGLEJOG "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ anglejog \- Jog two axes (or joints) at an angle │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ This component accepts a dynamic counts-in input (typically from a │ │ │ │ │ manual pulse generator (MPG)) and static angle and scale factor │ │ │ ├── ./usr/share/man/man9/axistest.9.gz │ │ │ │ ├── axistest.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/axistest.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH AXISTEST "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH AXISTEST "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ axistest \- Used to allow testing of an axis. Used IN PnCconf. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt axistest [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/bin2gray.9.gz │ │ │ │ ├── bin2gray.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/bin2gray.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BIN2GRAY "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BIN2GRAY "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ bin2gray \- convert a number to the gray-code representation │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt bin2gray [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/biquad.9.gz │ │ │ │ ├── biquad.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/biquad.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BIQUAD "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BIQUAD "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ biquad \- Biquad IIR filter │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt biquad [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/bitslice.9.gz │ │ │ │ ├── bitslice.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/bitslice.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BITSLICE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BITSLICE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ bitslice \- Converts an unsigned-32 input into individual bits │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt bitslice [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/bitwise.9.gz │ │ │ │ ├── bitwise.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/bitwise.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BITWISE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BITWISE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ bitwise \- Computes various bitwise operations on the two input values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt bitwise [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/bldc.9.gz │ │ │ │ ├── bldc.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/bldc.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BLDC "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BLDC "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ bldc \- BLDC and AC-servo control component │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .B loadrt bldc cfg=qi6,aH\fB │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/blend.9.gz │ │ │ │ ├── blend.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/blend.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH BLEND "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH BLEND "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ blend \- Perform linear interpolation between two values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt blend [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/carousel.9.gz │ │ │ │ ├── carousel.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/carousel.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CAROUSEL "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CAROUSEL "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ carousel \- Orient a toolchanger carousel using various encoding schemes │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ .B loadrt carousel pockets=\fIN\fR[,\fIN\fR] │ │ │ │ │ .B encoding=\fIssss\fR[,\fIsss\fR]\fB │ │ │ ├── ./usr/share/man/man9/charge_pump.9.gz │ │ │ │ ├── charge_pump.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/charge_pump.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CHARGE_PUMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CHARGE_PUMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ charge_pump \- Create a square-wave for the 'charge pump' input of some controller boards │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt charge_pump │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/clarke2.9.gz │ │ │ │ ├── clarke2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/clarke2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CLARKE2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CLARKE2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ clarke2 \- Two input version of Clarke transform │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt clarke2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/clarke3.9.gz │ │ │ │ ├── clarke3.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/clarke3.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CLARKE3 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CLARKE3 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ clarke3 \- Clarke (3 phase to cartesian) transform │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt clarke3 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/clarkeinv.9.gz │ │ │ │ ├── clarkeinv.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/clarkeinv.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CLARKEINV "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CLARKEINV "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ clarkeinv \- Inverse Clarke transform │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt clarkeinv [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/comp.9.gz │ │ │ │ ├── comp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/comp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH COMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH COMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ comp \- Two input comparator with hysteresis │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt comp [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/constant.9.gz │ │ │ │ ├── constant.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/constant.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONSTANT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONSTANT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ constant \- Use a parameter to set the value of a pin │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt constant [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_bit_float.9.gz │ │ │ │ ├── conv_bit_float.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_bit_float.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_BIT_FLOAT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_BIT_FLOAT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_bit_float \- Convert a value from bit to float │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_bit_float [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_bit_s32.9.gz │ │ │ │ ├── conv_bit_s32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_bit_s32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_BIT_S32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_BIT_S32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_bit_s32 \- Convert a value from bit to s32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_bit_s32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_bit_u32.9.gz │ │ │ │ ├── conv_bit_u32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_bit_u32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_BIT_U32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_BIT_U32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_bit_u32 \- Convert a value from bit to u32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_bit_u32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_float_s32.9.gz │ │ │ │ ├── conv_float_s32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_float_s32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_FLOAT_S32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_FLOAT_S32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_float_s32 \- Convert a value from float to s32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_float_s32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_float_u32.9.gz │ │ │ │ ├── conv_float_u32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_float_u32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_FLOAT_U32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_FLOAT_U32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_float_u32 \- Convert a value from float to u32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_float_u32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_s32_bit.9.gz │ │ │ │ ├── conv_s32_bit.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_s32_bit.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_S32_BIT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_S32_BIT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_s32_bit \- Convert a value from s32 to bit │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_s32_bit [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_s32_float.9.gz │ │ │ │ ├── conv_s32_float.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_s32_float.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_S32_FLOAT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_S32_FLOAT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_s32_float \- Convert a value from s32 to float │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_s32_float [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_s32_u32.9.gz │ │ │ │ ├── conv_s32_u32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_s32_u32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_S32_U32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_S32_U32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_s32_u32 \- Convert a value from s32 to u32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_s32_u32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_u32_bit.9.gz │ │ │ │ ├── conv_u32_bit.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_u32_bit.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_U32_BIT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_U32_BIT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_u32_bit \- Convert a value from u32 to bit │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_u32_bit [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_u32_float.9.gz │ │ │ │ ├── conv_u32_float.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_u32_float.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_U32_FLOAT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_U32_FLOAT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_u32_float \- Convert a value from u32 to float │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_u32_float [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/conv_u32_s32.9.gz │ │ │ │ ├── conv_u32_s32.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/conv_u32_s32.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH CONV_U32_S32 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH CONV_U32_S32 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ conv_u32_s32 \- Convert a value from u32 to s32 │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt conv_u32_s32 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/corexy_by_hal.9.gz │ │ │ │ ├── corexy_by_hal.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/corexy_by_hal.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH COREXY_BY_HAL "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH COREXY_BY_HAL "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ corexy_by_hal \- CoreXY kinematics │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt corexy_by_hal [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/dbounce.9.gz │ │ │ │ ├── dbounce.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/dbounce.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DBOUNCE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DBOUNCE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ dbounce \- alternative debounce component │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ This component is similar to the \fBdebounce\fR component │ │ │ ├── ./usr/share/man/man9/ddt.9.gz │ │ │ │ ├── ddt.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/ddt.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DDT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DDT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ ddt \- Compute the derivative of the input function │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt ddt [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/deadzone.9.gz │ │ │ │ ├── deadzone.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/deadzone.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DEADZONE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DEADZONE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ deadzone \- Return the center if within the threshold │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt deadzone [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/demux.9.gz │ │ │ │ ├── demux.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/demux.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DEMUX "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DEMUX "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ demux \- Select one of several output pins by integer and/or or individual bits. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt demux [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/differential.9.gz │ │ │ │ ├── differential.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/differential.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DIFFERENTIAL "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DIFFERENTIAL "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ differential \- kinematics for a differential transmission │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt differential [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/div2.9.gz │ │ │ │ ├── div2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/div2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH DIV2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH DIV2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ div2 \- Quotient of two floating point inputs │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt div2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/edge.9.gz │ │ │ │ ├── edge.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/edge.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH EDGE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH EDGE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ edge \- Edge detector │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt edge [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/eoffset_per_angle.9.gz │ │ │ │ ├── eoffset_per_angle.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/eoffset_per_angle.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH EOFFSET_PER_ANGLE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH EOFFSET_PER_ANGLE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ eoffset_per_angle \- Compute External Offset Per Angle │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt eoffset_per_angle [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/estop_latch.9.gz │ │ │ │ ├── estop_latch.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/estop_latch.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ESTOP_LATCH "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ESTOP_LATCH "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ estop_latch \- Software ESTOP latch │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt estop_latch [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/feedcomp.9.gz │ │ │ │ ├── feedcomp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/feedcomp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH FEEDCOMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH FEEDCOMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ feedcomp \- Multiply the input by the ratio of current velocity to the feed rate. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt feedcomp [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/filter_kalman.9.gz │ │ │ │ ├── filter_kalman.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/filter_kalman.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH FILTER_KALMAN "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH FILTER_KALMAN "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ filter_kalman \- Unidimensional Kalman filter, also known as linear quadratic estimation (LQE) │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt filter_kalman [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/flipflop.9.gz │ │ │ │ ├── flipflop.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/flipflop.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH FLIPFLOP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH FLIPFLOP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ flipflop \- D type flip-flop │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt flipflop [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/gantry.9.gz │ │ │ │ ├── gantry.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/gantry.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH GANTRY "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH GANTRY "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ gantry \- LinuxCNC HAL component for driving multiple joints from a single axis. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt gantry [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/gearchange.9.gz │ │ │ │ ├── gearchange.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/gearchange.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH GEARCHANGE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH GEARCHANGE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ gearchange \- Select from one two speed ranges │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ The output will be a value scaled for the selected gear, and clamped to │ │ │ │ │ the min/max values for that gear. │ │ │ │ │ The scale of gear 1 is assumed to be 1, so the output device scale │ │ │ ├── ./usr/share/man/man9/gray2bin.9.gz │ │ │ │ ├── gray2bin.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/gray2bin.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH GRAY2BIN "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH GRAY2BIN "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ gray2bin \- convert a gray-code input to binary │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt gray2bin [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/histobins.9.gz │ │ │ │ ├── histobins.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/histobins.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH HISTOBINS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH HISTOBINS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ histobins \- histogram bins utility for scripts/hal-histogram │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ Usage: │ │ │ │ │ Read availablebins pin for the number of bins available. │ │ │ ├── ./usr/share/man/man9/homecomp.9.gz │ │ │ │ ├── homecomp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/homecomp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH HOMECOMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH HOMECOMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ homecomp \- homing module template │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ Custom Homing module loaded with \fB[EMCMOT]HOMEMOD=homecomp\fR │ │ │ ├── ./usr/share/man/man9/hypot.9.gz │ │ │ │ ├── hypot.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/hypot.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH HYPOT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH HYPOT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ hypot \- Three-input hypotenuse (Euclidean distance) calculator │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt hypot [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/ilowpass.9.gz │ │ │ │ ├── ilowpass.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/ilowpass.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ILOWPASS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ILOWPASS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ ilowpass \- Low-pass filter with integer inputs and outputs │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt ilowpass [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/integ.9.gz │ │ │ │ ├── integ.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/integ.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH INTEG "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH INTEG "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ integ \- Integrator with gain pin and windup limits │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt integ [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/invert.9.gz │ │ │ │ ├── invert.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/invert.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH INVERT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH INVERT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ invert \- Compute the inverse of the input signal │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ The output will be the mathematical inverse of the input, ie \fBout\fR = 1/\fBin\fR. │ │ │ │ │ The parameter \fBdeadband\fR can be used to control how close to 0 the denominator can be │ │ │ │ │ before the output is clamped to 0. \fBdeadband\fR must be at least 1e-8, and must be positive. │ │ │ ├── ./usr/share/man/man9/joyhandle.9.gz │ │ │ │ ├── joyhandle.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/joyhandle.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH JOYHANDLE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH JOYHANDLE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ joyhandle \- sets nonlinear joypad movements, deadbands and scales │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt joyhandle [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/knob2float.9.gz │ │ │ │ ├── knob2float.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/knob2float.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH KNOB2FLOAT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH KNOB2FLOAT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ knob2float \- Convert counts (probably from an encoder) to a float value │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt knob2float [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/latencybins.9.gz │ │ │ │ ├── latencybins.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/latencybins.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LATENCYBINS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LATENCYBINS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ latencybins \- comp utility for scripts/latency-histogram │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ Usage: │ │ │ │ │ Read availablebins pin for the number of bins available. │ │ │ ├── ./usr/share/man/man9/limit1.9.gz │ │ │ │ ├── limit1.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/limit1.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LIMIT1 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LIMIT1 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ limit1 \- Limit the output signal to fall between min and max │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt limit1 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/limit2.9.gz │ │ │ │ ├── limit2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/limit2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LIMIT2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LIMIT2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ 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. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt limit2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/limit3.9.gz │ │ │ │ ├── limit3.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/limit3.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LIMIT3 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LIMIT3 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ limit3 \- Follow input signal while obeying limits │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ Limit the output signal to fall between min and max, limit its slew │ │ │ │ │ rate to less than maxv per second, and limit its second derivative to │ │ │ │ │ less than maxa per second squared. When the signal is a position, │ │ │ ├── ./usr/share/man/man9/lincurve.9.gz │ │ │ │ ├── lincurve.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/lincurve.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LINCURVE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LINCURVE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ lincurve \- one-dimensional lookup table │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt lincurve [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/logic.9.gz │ │ │ │ ├── logic.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/logic.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LOGIC "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LOGIC "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ logic \- LinuxCNC HAL component providing configurable logic functions │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ .B loadrt logic │ │ │ │ │ .B [count=N|names=name1[,name2...]] │ │ │ ├── ./usr/share/man/man9/lowpass.9.gz │ │ │ │ ├── lowpass.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/lowpass.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LOWPASS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LOWPASS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ lowpass \- Low-pass filter │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt lowpass [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/lut5.9.gz │ │ │ │ ├── lut5.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/lut5.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH LUT5 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH LUT5 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ lut5 \- Arbitrary 5-input logic function based on a look-up table │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt lut5 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ │ │ ├── html2text {} │ │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ │ .\"******************************************************************* .\" .\" │ │ │ │ │ │ This file was extracted from hal/components/lut5.comp using halcompile.g. .\" │ │ │ │ │ │ Modify the source file. .\" │ │ │ │ │ │ .\"******************************************************************* .TH LUT5 │ │ │ │ │ │ -"9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" .SH NAME lut5 \- │ │ │ │ │ │ +"9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" .SH NAME lut5 \- │ │ │ │ │ │ Arbitrary 5-input logic function based on a look-up table .SH SYNOPSIS .HP .B │ │ │ │ │ │ loadrt lut5 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] .SH DESCRIPTION │ │ │ │ │ │ .B lut5 constructs a logic function with up to 5 inputs using a \fBl\fRook- │ │ │ │ │ │ \fBu\fRp \fBt\fRable. The value for \fBfunction\fR can be determined by writing │ │ │ │ │ │ the truth table, and computing the sum of \fBall\fR the \fBweights\fR for which │ │ │ │ │ │ the output value would be \fRTRUE\fR. The weights are hexadecimal not decimal │ │ │ │ │ │ so hexadecimal math must be used to sum the weights. A wiki page has a │ │ │ ├── ./usr/share/man/man9/maj3.9.gz │ │ │ │ ├── maj3.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/maj3.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MAJ3 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MAJ3 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ maj3 \- Compute the majority of 3 inputs │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt maj3 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/match8.9.gz │ │ │ │ ├── match8.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/match8.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MATCH8 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MATCH8 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ match8 \- 8-bit binary match detector │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt match8 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/max31855.9.gz │ │ │ │ ├── max31855.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/max31855.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MAX31855 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MAX31855 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ max31855 \- Support for the MAX31855 Thermocouple-to-Digital converter using bitbanged spi │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt max31855 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/mesa_7i65.9.gz │ │ │ │ ├── mesa_7i65.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/drivers/mesa_7i65.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MESA_7I65 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MESA_7I65 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mesa_7i65 \- Support for the Mesa 7i65 Octuple Servo Card │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mesa_7i65 │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/mesa_pktgyro_test.9.gz │ │ │ │ ├── mesa_pktgyro_test.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mesa_pktgyro_test.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MESA_PKTGYRO_TEST "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MESA_PKTGYRO_TEST "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mesa_pktgyro_test \- PktUART simple test with Microstrain 3DM-GX3-15 gyro │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mesa_pktgyro_test [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/mesa_uart.9.gz │ │ │ │ ├── mesa_uart.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/drivers/mesa_uart.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MESA_UART "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MESA_UART "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mesa_uart \- An example component demonstrating how to access the Hostmot2 UART │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mesa_uart [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/message.9.gz │ │ │ │ ├── message.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/message.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MESSAGE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MESSAGE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ message \- Display a message │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt message [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [messages=\fIN\fB] │ │ │ │ │ .RS 4 │ │ │ ├── ./usr/share/man/man9/millturn.9.gz │ │ │ │ ├── millturn.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/millturn.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MILLTURN "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MILLTURN "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ millturn \- Switchable kinematics for a mill-turn machine │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt millturn [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/minmax.9.gz │ │ │ │ ├── minmax.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/minmax.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MINMAX "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MINMAX "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ minmax \- Track the minimum and maximum values of the input to the outputs │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt minmax [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/moveoff.9.gz │ │ │ │ ├── moveoff.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/moveoff.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MOVEOFF "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MOVEOFF "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ moveoff \- Component for HAL-only offsets │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt moveoff [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] [personality=\fIP,P,...\fB] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/mult2.9.gz │ │ │ │ ├── mult2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mult2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MULT2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MULT2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mult2 \- Product of two inputs │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mult2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/multiclick.9.gz │ │ │ │ ├── multiclick.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/multiclick.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MULTICLICK "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MULTICLICK "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ multiclick \- Single-, double-, triple-, and quadruple-click detector │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt multiclick [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/multiswitch.9.gz │ │ │ │ ├── multiswitch.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/multiswitch.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MULTISWITCH "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MULTISWITCH "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ multiswitch \- This component toggles between a specified number of output bits. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt multiswitch personality=\fIP\fB [cfg=\fIN\fB] │ │ │ │ │ .RS 4 │ │ │ ├── ./usr/share/man/man9/mux16.9.gz │ │ │ │ ├── mux16.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mux16.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MUX16 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MUX16 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mux16 \- Select from one of sixteen input values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mux16 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/mux2.9.gz │ │ │ │ ├── mux2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mux2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MUX2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MUX2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mux2 \- Select from one of two input values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mux2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/mux4.9.gz │ │ │ │ ├── mux4.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mux4.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MUX4 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MUX4 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mux4 \- Select from one of four input values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mux4 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/mux8.9.gz │ │ │ │ ├── mux8.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/mux8.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH MUX8 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH MUX8 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ mux8 \- Select from one of eight input values │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt mux8 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/near.9.gz │ │ │ │ ├── near.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/near.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH NEAR "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH NEAR "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ near \- Determine whether two values are roughly equal. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt near [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/not.9.gz │ │ │ │ ├── not.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/not.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH NOT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH NOT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ not \- Inverter │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt not [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/offset.9.gz │ │ │ │ ├── offset.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/offset.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH OFFSET "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH OFFSET "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ offset \- Adds an offset to an input, and subtracts it from the feedback value. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt offset [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/ohmic.9.gz │ │ │ │ ├── ohmic.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/ohmic.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH OHMIC "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH OHMIC "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ ohmic \- LinuxCNC HAL component that uses a Mesa THCAD for Ohmic sensing │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt ohmic [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/oneshot.9.gz │ │ │ │ ├── oneshot.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/oneshot.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ONESHOT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ONESHOT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ oneshot \- one-shot pulse generator │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt oneshot [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/or2.9.gz │ │ │ │ ├── or2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/or2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH OR2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH OR2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ or2 \- Two-input OR gate │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt or2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/orient.9.gz │ │ │ │ ├── orient.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/orient.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH ORIENT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH ORIENT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ orient \- Provide a PID command input for orientation mode based on current spindle position, target angle and orient mode │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt orient [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/plasmac.9.gz │ │ │ │ ├── plasmac.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/plasmac.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH PLASMAC "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH PLASMAC "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ plasmac \- A plasma cutter controller │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt plasmac │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/sample_hold.9.gz │ │ │ │ ├── sample_hold.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sample_hold.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SAMPLE_HOLD "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SAMPLE_HOLD "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sample_hold \- Sample and Hold │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sample_hold [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/scale.9.gz │ │ │ │ ├── scale.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/scale.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SCALE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SCALE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ scale \- LinuxCNC HAL component that applies a scale and offset to its input │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt scale [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/scaled_s32_sums.9.gz │ │ │ │ ├── scaled_s32_sums.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/scaled_s32_sums.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SCALED_S32_SUMS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SCALED_S32_SUMS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ scaled_s32_sums \- Sum of four inputs (each with a scale) │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt scaled_s32_sums [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/select8.9.gz │ │ │ │ ├── select8.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/select8.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SELECT8 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SELECT8 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ select8 \- 8-bit binary match detector │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt select8 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/serport.9.gz │ │ │ │ ├── serport.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/drivers/serport.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SERPORT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SERPORT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ serport \- Hardware driver for the digital I/O bits of the 8250 and 16550 serial port. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ │ │ │ │ │ .B loadrt serport io=\fIaddr[,addr...]\fR │ │ │ │ │ .PP │ │ │ ├── ./usr/share/man/man9/sim_axis_hardware.9.gz │ │ │ │ ├── sim_axis_hardware.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sim_axis_hardware.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIM_AXIS_HARDWARE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIM_AXIS_HARDWARE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sim_axis_hardware \- A component to simulate home and limit switches │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sim_axis_hardware [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/sim_home_switch.9.gz │ │ │ │ ├── sim_home_switch.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sim_home_switch.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIM_HOME_SWITCH "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIM_HOME_SWITCH "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sim_home_switch \- Home switch simulator │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sim_home_switch [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/sim_matrix_kb.9.gz │ │ │ │ ├── sim_matrix_kb.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sim_matrix_kb.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIM_MATRIX_KB "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIM_MATRIX_KB "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sim_matrix_kb \- convert HAL pin inputs to keycodes │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sim_matrix_kb [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/sim_parport.9.gz │ │ │ │ ├── sim_parport.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sim_parport.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIM_PARPORT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIM_PARPORT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sim_parport \- A component to simulate the pins of the hal_parport component │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sim_parport [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/sim_spindle.9.gz │ │ │ │ ├── sim_spindle.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sim_spindle.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIM_SPINDLE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIM_SPINDLE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sim_spindle \- Simulated spindle with index pulse │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sim_spindle [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/simple_tp.9.gz │ │ │ │ ├── simple_tp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/simple_tp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SIMPLE_TP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SIMPLE_TP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ simple_tp \- This component is a single axis simple trajectory planner, same as used for jogging in LinuxCNC. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ Used by PNCconf to allow testing of acceleration and velocity values for an axis. │ │ │ │ │ .SH FUNCTIONS │ │ │ │ │ .TP │ │ │ ├── ./usr/share/man/man9/sphereprobe.9.gz │ │ │ │ ├── sphereprobe.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sphereprobe.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SPHEREPROBE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SPHEREPROBE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sphereprobe \- Probe a pretend hemisphere │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sphereprobe [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/spindle.9.gz │ │ │ │ ├── spindle.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/spindle.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SPINDLE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SPINDLE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ spindle \- Control a spindle with different acceleration and deceleration and optional gear change scaling │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt spindle [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/spindle_monitor.9.gz │ │ │ │ ├── spindle_monitor.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/spindle_monitor.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SPINDLE_MONITOR "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SPINDLE_MONITOR "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ spindle_monitor \- spindle at-speed and underspeed detection │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt spindle_monitor [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/steptest.9.gz │ │ │ │ ├── steptest.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/steptest.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH STEPTEST "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH STEPTEST "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ steptest \- Used by Stepconf to allow testing of acceleration and velocity values for an axis. │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt steptest [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/sum2.9.gz │ │ │ │ ├── sum2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/sum2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH SUM2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH SUM2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ sum2 \- Sum of two inputs (each with a gain) and an offset │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt sum2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/thc.9.gz │ │ │ │ ├── thc.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/thc.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH THC "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH THC "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ thc \- Torch Height Control │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt thc │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/thcud.9.gz │ │ │ │ ├── thcud.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/thcud.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH THCUD "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH THCUD "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ thcud \- Torch Height Control Up/Down Input │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt thcud │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/threadtest.9.gz │ │ │ │ ├── threadtest.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/threadtest.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH THREADTEST "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH THREADTEST "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ threadtest \- LinuxCNC HAL component for testing thread behavior │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt threadtest [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/time.9.gz │ │ │ │ ├── time.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/time.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TIME "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TIME "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ time \- Time on in Hours, Minutes, Seconds │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt time [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/timedelay.9.gz │ │ │ │ ├── timedelay.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/timedelay.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TIMEDELAY "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TIMEDELAY "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ timedelay \- The equivalent of a time-delay relay │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt timedelay [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/timedelta.9.gz │ │ │ │ ├── timedelta.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/timedelta.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TIMEDELTA "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TIMEDELTA "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ timedelta \- LinuxCNC HAL component that measures thread scheduling timing behavior │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt timedelta [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/tof.9.gz │ │ │ │ ├── tof.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/tof.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TOF "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TOF "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ tof \- IEC TOF timer - delay falling edge on a signal │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt tof [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/toggle.9.gz │ │ │ │ ├── toggle.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/toggle.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TOGGLE "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TOGGLE "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ toggle \- 'push-on, push-off' from momentary pushbuttons │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt toggle [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/toggle2nist.9.gz │ │ │ │ ├── toggle2nist.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/toggle2nist.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TOGGLE2NIST "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TOGGLE2NIST "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ toggle2nist \- toggle button to nist logic │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt toggle2nist [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/ton.9.gz │ │ │ │ ├── ton.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/ton.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TON "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TON "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ ton \- IEC TON timer - delay rising edge on a signal │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt ton [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/tp.9.gz │ │ │ │ ├── tp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/tp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ tp \- IEC TP timer - generate a high pulse of defined duration on rising edge │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt tp [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/tpcomp.9.gz │ │ │ │ ├── tpcomp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/tpcomp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TPCOMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TPCOMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ tpcomp \- Trajectory Planning (tp) module skeleton │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ Custom Trajectory Planning module loaded with \fB[TRAJ]TPMOD=tpcomp\fR │ │ │ ├── ./usr/share/man/man9/tristate_bit.9.gz │ │ │ │ ├── tristate_bit.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/tristate_bit.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TRISTATE_BIT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TRISTATE_BIT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ tristate_bit \- Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt tristate_bit [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/tristate_float.9.gz │ │ │ │ ├── tristate_float.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/tristate_float.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH TRISTATE_FLOAT "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH TRISTATE_FLOAT "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ tristate_float \- Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt tristate_float [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/updown.9.gz │ │ │ │ ├── updown.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/updown.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH UPDOWN "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH UPDOWN "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ updown \- Counts up or down, with optional limits and wraparound behavior │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt updown [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/userkins.9.gz │ │ │ │ ├── userkins.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/userkins.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH USERKINS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH USERKINS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ userkins \- Template for user-built kinematics │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt userkins [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/wcomp.9.gz │ │ │ │ ├── wcomp.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/wcomp.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH WCOMP "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH WCOMP "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ wcomp \- Window comparator │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt wcomp [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/xhc_hb04_util.9.gz │ │ │ │ ├── xhc_hb04_util.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/xhc_hb04_util.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH XHC_HB04_UTIL "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH XHC_HB04_UTIL "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ xhc_hb04_util \- xhc-hb04 convenience utility │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt xhc_hb04_util [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION │ │ │ ├── ./usr/share/man/man9/xor2.9.gz │ │ │ │ ├── xor2.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/xor2.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH XOR2 "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH XOR2 "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ xor2 \- Two-input XOR (exclusive OR) gate │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt xor2 [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH FUNCTIONS │ │ │ ├── ./usr/share/man/man9/xyzab_tdr_kins.9.gz │ │ │ │ ├── xyzab_tdr_kins.9 │ │ │ │ │ @@ -2,15 +2,15 @@ │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ .\" │ │ │ │ │ .\" This file was extracted from hal/components/xyzab_tdr_kins.comp using halcompile.g. │ │ │ │ │ .\" Modify the source file. │ │ │ │ │ .\" │ │ │ │ │ .\"******************************************************************* │ │ │ │ │ │ │ │ │ │ -.TH XYZAB_TDR_KINS "9" "2024-02-02" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ +.TH XYZAB_TDR_KINS "9" "2025-03-07" "LinuxCNC Documentation" "HAL Component" │ │ │ │ │ .SH NAME │ │ │ │ │ │ │ │ │ │ xyzab_tdr_kins \- Switchable kinematics for 5 axis machine with rotary table A and B │ │ │ │ │ .SH SYNOPSIS │ │ │ │ │ .HP │ │ │ │ │ .B loadrt xyzab_tdr_kins [count=\fIN\fB|names=\fIname1\fB[,\fIname2...\fB]] │ │ │ │ │ .SH DESCRIPTION