Die Aktualisierung von LinuxCNC auf eine neue Nebenversion (d.h. auf eine neue Version in der gleichen stabilen Serie, z.B. von 2.7.0 auf 2.7.1) ist ein automatischer Prozess, wenn Ihr PC mit dem Internet verbunden ist. Nach einem Minor-Release wird eine Update-Aufforderung zusammen mit anderen Software-Updates angezeigt. Wenn Ihr PC nicht mit dem Internet verbunden ist, lesen Sie bitte Updating without Network.

1. Upgrade auf die neue Version

Dieser Abschnitt beschreibt, wie Sie LinuxCNC von Version 2.8 auf die neue Version 2.9.0 aktualisieren. Es wird davon ausgegangen, dass Sie eine bestehende 2.9 Installation haben, die Sie aktualisieren möchten.

Um LinuxCNC von einer Version älter als 2.8 zu aktualisieren, müssen Sie zuerst upgrade your old install to 2.8, dann folgen Sie diesen Anweisungen, um auf die neue Version zu aktualisieren.

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.

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 mehr von LinuxCNC unterstützt wird (es war EOL im Jahr 2013).

Um größere Versionen wie 2.8 auf 2.9 zu aktualisieren, wenn Sie eine Netzwerkverbindung an der Maschine haben, müssen Sie die alten linuxcnc.org Quellen des Paketmanagers apt in der Datei /etc/apt/sources.list deaktivieren und fügen Sie eine neue linuxcnc.org apt Quelle für 2.9 hinzu, um dann mit apt die LinuxCNC-Installation zu aktualisieren.

Die Details hängen von der Plattform ab, auf der Sie arbeiten. Öffnen Sie ein terminal und geben Sie lsb_release -ic ein, um diese Informationen herauszufinden:

lsb_release -ic
Distributor ID: Debian
Codename:       wheezy

Sie sollten Debian Stretch oder Wheezy (wie oben) oder Ubuntu Precise verwenden. Es sind auch Pakete für Debian Jessie oder Debian Buster verfügbar, falls Sie bereits eines davon verwenden.

Sie müssen auch prüfen, welcher Echtzeit-Kernel verwendet wird:

uname -r
4.19.0-9-rt-amd64

Wenn Sie (wie oben) -rt- im Kernel-Namen sehen, dann laufen Sie mit dem preempt-rt Kernel und sollten die "uspace" Version von LinuxCNC installieren. Sie sollten auch uspace für "sim"-Konfigurationen auf Nicht-Echtzeit-Kerneln installieren

Wenn Sie -rtai- im Kernel-Namen sehen, dann laufen Sie mit RTAI-Echtzeit. Siehe unten für die LinuxCNC Version zu installieren.

1.1. Apt Sources Konfiguration

  • Öffnen Sie das Fenster Software-Quellen. Die Vorgehensweise ist auf den drei unterstützten Plattformen leicht unterschiedlich:

    • Debian:

      • Klicken Sie auf Anwendungsmenü, dann System, dann Synaptic Paketmanager.

      • Klicken Sie in Synaptic auf das Menü Einstellungen und dann auf Repositories, um das Fenster Softwarequellen zu öffnen.

    • Ubuntu Precise:

      • Klicken Sie auf das Symbol "Dash Home" oben links.

      • Geben Sie in das Feld "Suche" den Begriff "Software" ein und klicken Sie dann auf das Symbol "Ubuntu Software Center".

      • Klicken Sie im Ubuntu Software Center-Fenster auf das Menü "Bearbeiten" und dann auf "Softwarequellen…", um das Fenster "Softwarequellen" zu öffnen.

    • Ubuntu Lucid:

      • 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.org-Zeilen unverändert).

  • 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 apt Quellzeile

Debian Stretch

deb https://linuxcnc.org stretch base 2.8-rtpreempt

Debian Wheezy

deb https://linuxcnc.org wheezy base 2.8-rt

Ubuntu Precise

deb https://linuxcnc.org precise base 2.8-rt

Debian Jessie - preempt

deb https://linuxcnc.org jessie base 2.8-rtpreempt

Debian Jessie - RTAI

deb https://linuxcnc.org jessie base 2.8-rt

Debian Buster - preempt

deb https://linuxcnc.org buster base 2.8-rtpreempt

Debian-Knacker - RTAI

deb https://linuxcnc.org buster base 2.8-rt

Festlegen von apt-Quellen
  • Klicken Sie im Fenster "Softwarequellen" auf "Quelle hinzufügen" und dann auf "Schließen". Wenn ein Fenster angezeigt wird, das Sie darüber informiert, dass die Informationen über die verfügbare Software veraltet sind, klicken Sie auf die Schaltfläche "Neu laden".

1.2. Upgrade auf die neue Version

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.

1.2.1. Debian Wheezy & Stretch und Ubuntu Lucid

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.

  • 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.3. Ubuntu Precise

  • Klicken Sie auf das Symbol "Dash Home" oben links.

  • Geben Sie in das Feld "Suche" den Begriff "Update" ein und klicken Sie dann auf das Symbol "Update Manager".

  • Klicken Sie auf die Schaltfläche "Prüfen", um die Liste der verfügbaren Pakete aufzurufen.

  • Klicken Sie auf die Schaltfläche "Updates installieren", um die neuen Versionen aller Pakete zu installieren.

2. Aktualisieren ohne Netzwerk

Um ohne Netzwerkverbindung zu aktualisieren, müssen Sie die .deb-Datei herunterladen und mit dpkg installieren. Die .debs können unter https://linuxcnc.org/dists/ gefunden werden.

Sie müssen im obigen Link nach unten gehen, um das richtige Debian Paket (.deb Datei) für Ihre Installation zu finden. Öffnen Sie ein Terminal und geben Sie "lsb_release -ic" ein, um den Versions-Bezeichner Ihres Betriebssystems zu finden.

> lsb_release -ic
Distributor ID: Debian
Codename:       buster

Wählen Sie das Betriebssystem aus der Liste und dann die gewünschte Hauptversion wie 2.8-rt für RTAI oder 2.8-rtpreempt für preempt-rt.

Wählen Sie als Nächstes den Computertyp aus, den Sie haben: binary-amd64 für jeden 64-Bit-x86, binary-i386 für 32-Bit, binary-armhf (32-Bit) oder binary-arm64 (64-Bit) für Raspberry Pi.

Wählen Sie dann die gewünschte Version am Ende der Liste aus, z.B. linuxcnc-uspace_2.8.0_amd64.deb (wählen Sie die neueste Version nach Datum). Laden Sie die deb-Datei herunter und kopieren Sie sie in Ihr Home-Verzeichnis. Sie können die Datei mit dem Dateimanager in etwas kürzeres umbenennen, wie z.B. linuxcnc_2.8.0.deb, dann öffnen Sie ein Terminal und installieren es mit dem Paketmanager mit diesem Befehl:

sudo dpkg -i linuxcnc_2.8.0.deb

3. Aktualisieren von Konfigurationsdateien für 2.9

3.1. Strikterer Umgang mit austauschbaren Interpretern

Wenn Sie nur normalen G-Code ausführen und nicht wissen, was ein austauschbarer Interpreter ist, wirkt sich dieser Abschnitt nicht auf Sie aus.

Ein selten genutztes Merkmal von LinuxCNC ist die Unterstützung für steckbare Interpreter, die durch die undokumentierte [TASK]INTERPRETER INI-Einstellung gesteuert werden.

Versionen von LinuxCNC vor 2.9.0 behandelten eine falsche [TASK]INTERPRETER-Einstellung, indem sie automatisch auf die Verwendung des Standard-G-Code-Interpreters zurückgriffen.

Ab 2.9.0 führt ein falscher [TASK]INTERPRETER-Wert dazu, dass LinuxCNC den Start verweigert. Beheben Sie diese Bedingung, indem Sie die Einstellung [TASK]INTERPRETER aus Ihrer INI-Datei löschen, so dass LinuxCNC den Standard-G-Code-Interpreter verwendet.

3.2. Canterp

Wenn Sie nur normalen G-Code ausführen und den austauschbaren Interpreter "canterp" nicht verwenden, hat dieser Abschnitt keine Auswirkungen auf Sie.

Für den extrem unwahrscheinlichen Fall, dass Sie canterp verwenden, sollten Sie wissen, dass das Modul von /usr/lib/libcanterp.so nach /usr/lib/linuxcnc/canterp.so verschoben wurde und die Einstellung [TASK]INTERPRETER entsprechend von libcanterp.so nach canterp.so geändert werden muss.

4. Aktualisieren von Konfigurationsdateien (für 2.8.x)

Die neue Version von LinuxCNC unterscheidet sich von der Version 2.7 in einigen Punkten, die möglicherweise Änderungen an Ihrer Maschinenkonfiguration erfordern.

Der Hauptunterschied ist, dass LinuxCNC keine Annahmen mehr darüber macht, welches Gelenk welche Achse steuert. Diese Änderung wird "joint-axes" genannt nach dem Namen des Entwicklungszweigs, in dem die Änderungen ihren Anfang nahmen. Diese Änderung hat in der Entwicklung seit mindestens 2010 gewesen, und wurde nun letztlich in der 2.8er Release integriert.

4.1. Verteilungskonfigurationen (Aktualisierungen für joints_axes)

Die LinuxCNC-Distribution enthält viele Beispielkonfigurationen, die in Verzeichnishierarchien organisiert sind: by_machine, by_interface, und sim (simulierte Maschinen). Diese Konfigurationen werden oft als Ausgangspunkt für die Erstellung einer neuen Konfiguration, als Beispiele für die Studie, oder als komplette simulierte Maschinen, die ohne spezielle Hardware oder Echtzeit-Kernel ausgeführt werden können.

Die Konfigurationsdateien in diesen Verzeichnisbäumen wurden für die für die joints_axes Updates erforderlichen Änderungen aktualisiert.

4.2. Automatische Aktualisierungen (update_ini-Skript für joints_axes)

Da die joints_axes-Updates eine Reihe von Änderungen an den Benutzer-INI-Dateien und den zugehörigen HAL-Dateien erfordern, wird ein Skript namens update_ini bereitgestellt, das die Benutzerkonfigurationen automatisch konvertiert.

Dieses Skript wird aufgerufen, wenn ein Benutzer eine bestehende Konfiguration zum ersten Mal nach der Aktualisierung von LinuxCNC startet. Das Skript sucht in der Benutzer-INI-Datei nach einem [EMC]VERSION-Element. Wenn dieses Element 1) nicht existiert, oder 2) existiert und auf den historischen CVS-Wert "$Revision$" gesetzt ist, oder ein numerischer Wert kleiner als 1.1 ist, dann wird das update_ini Skript einen Dialog öffnen, um anzubieten, die Benutzerdateien zu bearbeiten, um eine aktualisierte Konfiguration zu erstellen. Wenn der Benutzer zustimmt, wird die Konfiguration aktualisiert.

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).

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

  • Maschinen mit Handsteuerung (engl. jogwheels)

  • Roboter mit nicht-identischer Kinematik

  • Konfigurationen mit haltcl-Dateien

In den folgenden Unterabschnitten und im Abschnitt "HAL-Änderungen" werden die Punkte aufgeführt, die zusätzliche Benutzeränderungen an INI- oder HAL-Dateien erfordern können.

4.3. Unterstützung mehrerer Spindeln

LinuxCNC unterstützt nun bis zu 8 Spindeln (und kann für mehr neu kompiliert werden). Bestehender G-Code wird ohne Änderung laufen und die meisten Konfigurationen werden standardmäßig auf einzelne Spindeln. Um mehr als eine Spindel zu spezifizieren, setzen Sie den [TRAJ]SPINDLES= Eintrag in der INI-Datei und fügen Sie den num_spindles= Parameter für das Bewegungsmodul ein (gesetzt entweder mit [EMCMOT]EMCMOT = motmod num_spindles= oder in einem HAL-Datei loadrt Eintrag für motmod).

Der Parameter num_spindles= des Bewegungsmoduls und die Einstellungen für [TRAJ]SPINDLES= müssen übereinstimmen.

Die Namen der Spindelsteuerungspins wurden geändert, damit die Spindeln mehr wie Achsen und Gelenke aussehen. motion.spindle-speed-out heißt zum Beispiel jetzt spindle.0.speed-out. Das automatische Update-Skript wird diese Änderungen übernehmen. Um zusätzliche Spindeln zu steuern, akzeptieren die G- und M-Codes, welche die Spindeldrehzahl steuern, jetzt ein zusätzliches "$"-Argument, zum Beispiel M3 $2, um die dritte Spindel zu starten. Es sollte möglich sein, benutzerdefinierte G-Codes zu erstellen, die zu jeder anderen Mehrspindelsteuerung passen. Siehe die G-Code- und M-Code-Handbücher für Code-Änderungen und man motion für die HAL-Pin-Änderungen.

4.4. TRAJ Geschwindigkeiten, Beschleunigungen Namen

Mit der Aufnahme der Funktionalität joints_axes wurden einige Namen geändert, um die verfügbare Funktionalität zu verdeutlichen.

war: [TRAJ]MAX_VELOCITY ist: [TRAJ]MAX_LINEAR_VELOCITY
war: [TRAJ]DEFAULT_VELOCITY ist: [TRAJ]DEFAULT_LINEAR_VELOCITY

war: [TRAJ]MAX_ACCELERATION ist: [TRAJ]MAX_LINEAR_ACCELERATION
war: [TRAJ]DEFAULT_ACCELERATION ist: [TRAJ]DEFAULT_LINEAR_ACCELERATION

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:

war: loadrt gentrivkins
 ist: loadrt trivkins

war: loadrt gentrivkins koordinaten=xyyz
 ist: loadrt trivkins koordinaten=xyyz

Konfigurationen, die gantrykins verwenden, sollten aktualisiert werden, um trivkins zu verwenden, wobei der Parameter kinstype= auf BOTH (für KINEMATICS_BOTH) gesetzt wird.

Beispiel einer HAL-Datei:

war: loadrt gantrykins Koordinaten=xyyz
 ist: loadrt trivkins Koordinaten=xyyz kinstype=BOTH

Weitere Informationen finden Sie in der Manpage von trivkins ($ man trivkins)

Note: Die am meisten unterstützte Verwendung für die Angabe von Kinematik in joints_axes ist die Festlegung von Werten im Abschnitt [KINS] der Konfigurations-INI-Datei und die anschließende Bezugnahme auf diese Werte innerhalb der angegebenen [HAL]HALFILES ( .hal .tcl-Dateien). Zum Beispiel:

INI-Datei:    [KINS]
            KINEMATICS = trivkins
            JOINTS = 3
            ...

HAL-Datei:    loadrt [KINS]KINEMATICS

haltcl Datei: loadrt $::KINS(KINEMATICS)

4.6. Drehmaschinen-Konfigurationen

Vor der Einführung von joints_axes wurden Drehmaschinen oft so konfiguriert, als wären sie dreiachsige (XYZ) Maschinen mit einer unbenutzten Achse (Y). Dies war praktisch für die gemeinsame Nutzung von HAL-Dateien (insbesondere für Simulationskonfigurationen), erforderte jedoch die Angabe von [TRAJ]AXES =3, einen "Dummy"-Abschnitt AXIS_Y und Vorkehrungen für die Referenzierung der unbenutzten Y-Koordinate. Diese Vorkehrungen sind nicht mehr erforderlich oder empfehlenswert.

Historische Drehmaschinenkonfigurationen verwendeten die Standardoptionen für das trivkins Kinematikmodul. Diese Standardoptionen konfigurieren alle Achsenbuchstaben (XYZABCUVW). Mit der Einbindung von joints_axes setzt eine geeignetere Kinematik-Spezifikation die Koordinaten auf genau die verwendeten (XZ) und setzt die Anzahl der Gelenke entsprechend auf 2. Es besteht keine Notwendigkeit für einen [AXIS_Y]-Abschnitt in der INI-Datei und es müssen nur zwei [JOINT_N]-Abschnitte definiert werden.

Beispiel für INI-Dateien für eine Drehmaschine (es werden nur die für die Kinematik relevanten Abschnitte gezeigt):

[KINS]
KINEMATICS = trivkins coordinates=xz
JOINTS = 2

[TRAJ]
COORDINATES = XZ
...

[AXIS_X]
...

[AXIS_Z]
...

[JOINT_0]
...

[JOINT_1]
...

Beachten Sie, dass einige Simulationskonfigurationen möglicherweise noch immer die historischen Drehbankkonfigurationen verwenden.

4.7. Konsistente Gelenke/Achsen-Spezifikationen

INI-Datei-Elemente für die Verwendung von Gelenken und Achsen müssen konsistent sein.

Das Bewegungskinematikmodul, das normalerweise mit [KINS]KINEMATICS= geladen wird, muss eine Anzahl von Gelenken verwenden, die der mit [KINS]JOINTS= angegebenen Anzahl entspricht.

Das Kinematikmodul muss Achsenbuchstaben implementieren, die mit der vom Aufgabenmodul verwendeten Spezifikation [TRAJ]COORDINATES= übereinstimmen.

Beispiele:

Dreiachsige kartesische Maschine mit trivkins (KINEMATICS_IDENTITY):

[KINS]KINEMATICS  = trivkins
[KINS]JOINTS      = 3
[TRAJ]COORDINATES = XYZ

Zweiachsige Drehmaschine mit trivkins (KINEMATICS_IDENTITY) mit nicht aufeinanderfolgenden Achsenbuchstaben:

[KINS]KINEMATICS  = trivkins coordinates=XZ
[KINS]JOINTS      = 2
[TRAJ]COORDINATES = XZ

Gantry unter Verwendung von trivkins mit doppelten Achsenbuchstaben und KINEMATICS_BOTH, um eine individuelle Gelenkpositionierung (für die Referenzfahrt) zu ermöglichen:

[KINS]KINEMATICS  = trivkins coordinates=XYYZ kinstype=BOTH
[KINS]JOINTS      = 4
[TRAJ]COORDINATES = XYYZ

Gantry mit Trivkins (KINEMATICS_BOTH) mit doppelten Achsenbuchstaben und einer Drehachse mit übersprungenen Achsenbuchstaben (A,B übersprungen):

[KINS]KINEMATICS  = trivkins coordinates=XYYZC kinstype=BOTH
[KINS]JOINTS      = 5
[TRAJ]COORDINATES = XYYZC

Linearer Delta-Roboter mit nicht-identischen Kins (KINEMATICS_BOTH), der im kartesischen Rahmen mit einer zusätzlichen Drehkoordinate arbeitet:

[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 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:     [KINS]KINEMATICS = trivkins coordinates=XZ
NOT This: [KINS]KINEMATICS = trivkins coordinates = X Z

Note: Benutzerdefinierte Kinematikmodule, die Nicht-Identitätskinematiken implementieren (wie lineardeltakins), definieren maschinenspezifische Beziehungen zwischen einem Satz von Koordinaten und einem Satz von Gelenken. Normalerweise berechnen benutzerdefinierte Kinematikmodule die Beziehungen zwischen Gelenken und Achsen innerhalb des benutzerdefinierten Moduls, aber es ist wichtig, konsistente Einstellungen für die zugehörigen INI-Elemente zu verwenden: [KINS]JOINTS und [TRAJ]COORDINATES. Die Details werden in der Regel in der Manpage des Moduls erklärt (z.B. $ man lineardeltakins).

4.8. Referenzierfahrt-Sequenzen

Negative Werte können für die INI-Datei-Elemente verwendet werden mit der Bezeichnung [JOINT_n]HOME_SEQUENCE. Vor der Aufnahme von joints_axes bedeutete ein Wert von -1 oder das Weglassen des Elements an, dass keine Sequenz anwendbar war. Jetzt wird nur noch das Weglassen des Eintrags für diesen Zweck verwendet. Siehe das Kapitel: Referenzierfahrt Konfiguration für weitere Informationen.

4.9. Sperrender (engl. locking) rotierender Indexers (Updates für joints_axes)

Bei joints_axes ist ein Indexer ein Gelenk, das referenziert werden kann (Gelenkmodus), aber auch aus dem G-Code heraus entriegelt werden muss. Dies erfordert eine Eins-zu-eins-Entsprechung zwischen einem einzelnen Gelenk und einer Achse.

Geben Sie die Gelenknummer an, die einer Drehachse (L = A, B oder C) mit einer INI-Datei-Einstellung für die Achse entspricht:

[AXIS_L]LOCKING_INDEXER_JOINT = Gelenknummer_für_Indexer

Geben Sie an, dass es sich bei der Verbindung um einen sperrenden (engl. locking) Indexer handelt, indem Sie in der INI-Datei eine Einstellung für die Verbindung vornehmen (N steht für joint_number_for_indexer):

[JOINT_N]LOCKING_INDEXER = 1

Es können HAL Pins erstellt werden, um die Verwendung eines sperrenden (engl. locking) Indikator-Gelenks zu koordinieren:

joint.N.unlock (BIT-Ausgang vom HAL)
joint.N.is-unlocked (BIT-Eingang zum HAL)

Um diese HAL-Pins für sperrende Gelenke zu erzeugen, müssen alle Gelenke, die als sperrende Indexer verwendet werden, mit dem Parameter unlock_joints_mask für das motmod-Modul angegeben werden. (bit0(LSB)==>Gelenk0, bit1==>Gelenk1, usw.)

[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:

[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYZB
...

[TRAJ]
COORDINATES = XYZB
...

[EMCMOT]
EMCMOT = motmod unlock_joints_mask=0x08
...

[AXIS_B]
LOCKING_INDEXER_JOINT = 3
...

[JOINT_3]
LOCKING_INDEXER = 1
...

Für komplexere Kinematiken wählen Sie die Gelenknummer nach Bedarf aus - es muss eine Eins-zu-Eins-Entsprechung zwischen der Drehachse und der Gelenknummer bestehen.

(Weitere Informationen zu motmod finden Sie in der motion man-Seite ($ man motion))

4.10. Strengere INI-Datei Syntax

Zeilen mit numerischen INI-Variablen sind nicht mehr erlaubt, um Text am Ende zu haben. In früheren Versionen von LinuxCNC wurde jeglicher Text nach der Zahl stillschweigend ignoriert, aber ab dieser Version ist ein solcher Text völlig unzulässig. Dies schließt Rautezeichen ("#") ein, die in dieser Position ein Teil des Wertes sind, nicht ein Kommentarzeichen.

Beispielsweise werden Zeilen wie diese nicht mehr akzeptiert:

MAX_VELOCITY = 7.5 # Dies ist die maximale Geschwindigkeit der Achse.

Sie könnten wie folgt in zwei Zeilen ausgedrückt werden:

# Dies ist die maximale Geschwindigkeit der Achse.
MAX_VELOCITY = 7.5

4.11. [TRAJ] Einstellungen

In den Versionen 2.7.x sind die Einstellungen für die Trajektorien-Planung ([TRAJ]) enthalten:

[TRAJ]
DEFAULT_ACCELERATION
MAX_ACCELERATION

Zwischenzeitlich wurden Arbeiten für unterschiedliche lineare und winklige Elemente vorbereitet, indem diese Elemente umbenannt wurden:

[TRAJ]
DEFAULT_LINEAR_ACCEL
MAX_LINEAR_ACCEL

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
MAX_LINEAR_ACCELERATION
Anmerkung
Eine Unterstützung für die Angabe von Winkelvorgaben und Maximalbeschleunigungen bei der Flugbahnplanung wurde nicht implementiert.

5. HAL Änderungen (Aktualisierungen für joints_axes 2.8.x)

5.1. Joggen mit dem Handrad oder MPG (manueller Impulsgeber)

Vor der Einbindung der joints_axes-Updates wurde das Joggen der Räder nur im Gelenkmodus unterstützt und mit HAL-Pins gesteuert:

bit   IN  axis.M.jog-enable
float IN  axis.M.jog-scale
s32   IN  axis.M.jog-counts
bit   IN  axis.M.jog-vel-mode

wobei "M" eine Zahl ist, die einem Achsenbuchstaben entspricht (0==>X, 1==>Y, usw.)

Durch die Einbindung von joints_axes-Updates ist das Joggen der Räder für Gelenke im Joint-Modus und für jede Achsenkoordinate im Teleop-Modus verfügbar. Die zur Verfügung stehenden HAL-Pins sind:

bit   IN  joint.N.jog-enable
float IN  joint.N.jog-scale
s32   IN  joint.N.jog-counts
bit   IN  joint.N.jog-vel-mode

bit   IN  axis.L.jog-enable
float IN  axis.L.jog-scale
s32   IN  axis.L.jog-counts
bit   IN  axis.L.jog-vel-mode

wobei N eine Gelenknummer und L ein Achsenbuchstabe ist.

Um ein Handrad in Identitäts-Kins-Konfigurationen zu verwenden, bei denen es eine Eins-zu-Eins-Entsprechung zwischen einer Gelenknummer und einem Achsenbuchstaben gibt, kann es sinnvoll sein, die entsprechenden HAL-Pins zu verbinden. Zum Beispiel, wenn Gelenk 1 genau dem Achsenbuchstaben y entspricht:

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
net jora_1_y_counts   => joint.1.jog-counts => axis.y.jog-counts
net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode

(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.

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):

INI file item              HAL pin name
[JOINT_N]BACKLASH          ini.N.backlash
[JOINT_N]FERROR            ini.N.ferror
[JOINT_N]MIN_FERROR        ini.N.min_ferror
[JOINT_N]MIN_LIMIT         ini.N.min_limit
[JOINT_N]MAX_LIMIT         ini.N.max_limit
[JOINT_N]MAX_VELOCITY      ini.N.max_velocity
[JOINT_N]MAX_ACCELERATION  ini.N.max_acceleration
[JOINT_N]HOME              ini.N.home
[JOINT_N]HOME_OFFSET       ini.N.home_offset

Für L = x y z a b c u v w:

INI file item              HAL pin name
[AXIS_L]MIN_LIMIT          ini.L.min_limit
[AXIS_L]MAX_LIMIT          ini.L.max_limit
[AXIS_L]MAX_VELOCITY       ini.L.max_velocity
[AXIS_L]MAX_ACCELERATION   ini.L.max_acceleration
Anmerkung
In früheren Versionen von LinuxCNC (vor joints_axes Updates), bezogen sich die HAL-Pin-Namen ini._N_.* sich Achsen mit 0==>x, 1==>y, usw. (Pins wurden für alle 9 Achsen erstellt). Weitere Informationen finden Sie in der Manpage von milltask.

6. HAL Änderungen (Aktualisierungen für joints_axes 2.8.x)

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 non-realtime (loadusr) components.

Für Komponenten, die "personality" verwenden, kann die maximale Anzahl nun durch eine Kommandozeilenoption -P|--personalities eingestellt werden.

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)

7. Schnittstellenänderungen für joint_axes 2.8.x

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])

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)

8. GUIs (Aktualisierungen für joints_axes 2.8.x)

8.1. Hinweise zu Gelenk/Achsen-Jogging, Referenzfahrt und Kinematik

Mit der Aufnahme von joints_axes Updates, erzwingt LinuxCNC die Unterscheidungen von Gelenken und Achsen (Koordinaten Buchstaben) - aber einige GUIs (wie die AXIS GUI) verstecken diese Unterscheidungen für einfache Maschinen.

In den meisten Fällen kann man sich die Gelenke als Motoren vorstellen.

Die Beziehungen zwischen Gelenken und Achsenkoordinaten werden durch die mathematischen Kinematikfunktionen bestimmt, welche die Bewegung einer Maschine beschreiben.

Die Weltkoordinaten (X,Y,Z,A,B,C,U,V,W) werden durch die Anwendung von FORWARD Kinematikoperationen auf die Gelenkpositionen (Motor) bestimmt.

Bei Bewegungen im Weltraum (z. B. G-Code-Bewegungen) werden die erforderlichen Gelenk- (Motor-) Positionen durch Anwendung von INVERSE Kinematikoperationen auf die für die Bewegung im Weltraum angeforderten Koordinaten bestimmt.

Eine Bewegung im Weltraum ist nur nach der Referenzfahrt möglich.

Bei einfachen Maschinen (wie Fräsmaschinen und Drehmaschinen) gibt es eine Eins-zu-Eins-Entsprechung von Gelenken und Achsenkoordinatenbuchstaben. Bei einer XYZ-Fräse beispielsweise lauten die Beziehungen typischerweise: AchseX==Gelenk0, AchseY==Gelenk1, AchseZ=Gelenk2. Diese Korrespondenz wird als "IDENTITY"-Kinematik bezeichnet und das verwendete Kinematikmodul ist in der Regel trivkins (trivial kinematics). (Siehe die Manpage von trivkins $ man trivkins)

Gelenk-Jogging (mit Gelenknummer 0,1,…) wird im Gelenkmodus verwendet (normalerweise nur VOR der Referenzfahrt). Wenn die Referenzfahrt abgeschlossen ist, wird der Jogging-Modus AUTOMATISCH vom Joint-Modus in den World-Modus umgeschaltet und das Achsen-Jogging (Koordinatenbuchstabe X,Y,…) wird verwendet. Dies ist für alle G-Code-Bewegungen geeignet, die durch MDI-Befehle oder G-Code-Programme angefordert werden.

Obwohl das Joggen im Gelenkmodus nach der Referenzfahrt oft nicht erforderlich ist, bieten einige GUIs (wie z. B. AXIS) eine Tastenkombination ("$"), mit der bei Maschinen, die eine 'nicht-Idenitäts"-Kinematik verwenden, zwischen Gelenk- und Weltmodus (Teleop) umgeschaltet werden kann.

In vielen häufigen Situationen ist gleichzeitiges Jogging nicht erforderlich, da die Referenzfahrt mit Referenzpunkt-Schalter durchgeführt wird und/oder die verschiedenen Referenzfahrt-Methoden von LinuxCNC zur Verfügung gestellt werden. Man schaltet einfach die Maschine ein, gibt den Befehl Referenzfahrt-Alle, die Maschine referenziert und wechselt automatisch in den Weltmodus. Siehe 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.

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, die eine Unterscheidung von Gelenken und Achsenbuchstaben verbergen, nicht verwendet werden sollten. Geben Sie zum Beispiel für eine xyz-Konfiguration an:

[KINS]
KINEMATICS = trivkins coordinates=xyz kinstype=both

Bei dieser Einstellung wird Identitätskinematik verwendet, aber die AXIS-GUI wird:

  1. Gelenknummern vor Referenzfahrt anzeigen

  2. Achsenbuchstaben nach erfolgreicher Referenzfahrt anzeigen

  3. Unterstützung des Umschaltens zwischen Gelenk- und Teleop-Modus mit der $-Taste

8.2. Halui

Halui unterstützt nun Teleop-Jogging, was zu einigen geänderten Pin-Namen und zahlreichen neuen Namen für Jogging-bezogene Pins führt.

In der Manpage ($ man halui) finden Sie alle Pin-Namen.

8.2.1. TELEOP-Jogging (auch Achsen- oder Welt-Jogging genannt)

Neue Pins für Teleop-Jogging sind:

new: halui.axis.jog-speed
new: halui.axis.jog-deadband

neu: halui.axis.L.plus
neu: halui.axis.L.minus
      ... usw.

wobei L ein Buchstabe ist, der einem der durch [TRAJ]COORDINATES angegebenen Achsenbuchstaben entspricht, oder selected für die durch die halui.axis.L.select-Pins ausgewählte Achse.

8.2.2. Gemeinsames Joggen

Alle Pins für gemeinsames Joggen wurden aus Gründen der Spezifität umbenannt:

war: halui.jog-speed ist: halui.joint.jog-speed
war: halui.jog-deadband ist: halui.joint.jog-deadband

was: halui.jog.N.plus         ist: halui.joint.N.plus
was: halui.jog.N.minus        ist: halui.joint.N.minus
      ...  usw.                    ... usw.

wobei N eine Gelenknummer (0 … num_noints-1) oder selected für das durch die halui.joint.N.select Pins ausgewählte Gelenk ist.

8.2.3. Zusätzliche Pin-Umbenennungen

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

8.3. AXIS GUI

8.3.1. Identitäts-Kinematik

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.

8.3.2. Sonderfall-Kinematiken

Einige Maschinen, typischerweise Gantrys, können eine Konfiguration verwenden, bei der einem Achsenbuchstaben mehr als ein Gelenk zugeordnet ist. Dies kann mit dem trivkins Kinematikmodul unter Verwendung wiederholter Koordinatenbuchstaben erfolgen. Beispiel: Eine Maschine, die mit INI-Einstellungen wie folgt konfiguriert ist:

[KINS]
KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH
...
[TRAJ]
COORDINATES = XYYZ
...

Diese Maschine hat nach der Referenzfahrt eine Eins-zu-Eins-Entsprechung zwischen einem einzelnen Achsenbuchstaben (Y) und einem Gelenkpaar (1,2). Die Verwendung von kinematics=BOTH ermöglicht die Steuerung einzelner Gelenke im Gelenkmodus falls erforderlich.

8.3.3. Nicht-Identitäts-Kinematik

Die AXIS GUI unterstützt Konfigurationen mit Nicht-Identitäts-Kinematiken:

  1. Tastenbindung ($) zum Umschalten des Gelenk- oder Teleop-Modus

  2. Vorschau Tab-Anzeige von Gelenken oder Achsen je nach Gelenk- oder Teleop-Modus

  3. Vorschau Registerkarte mit Anzeige der Symbole "Referenzfahrt" und "Limit" im Gelenk-Modus

  4. Vorschau Registerkarte Anzeige der Symbole Alle Referenziert (engl. all homed) und Beliebiges Limit (engl. any limit) im Teleop-Modus

  5. DRO Tab-Anzeige des Gelenks oder der Achsen je nach Gelenk- oder Teleop-Modus

  6. Jogging wird sowohl im Gelenk- als auch im Teleop-Bewegungsmodus unterstützt.

  7. Externe Änderungen des Bewegungsmodus "Joint/Teleop" werden erkannt.

8.3.4. Referenzpunkt-Symbole

Bei Identitätskinematiken werden "Referenzpunkt" (engl. home)-Symbole für den entsprechenden (eins-zu-eins) Achsenbuchstaben angezeigt, wenn ein Gelenk referenziert ist.

Bei Nicht-Identitätskinematiken werden "Referenzpunkt"-Symbole für einzelne Gelenke angezeigt, wenn ein Gelenk im Gelenkanzeigemodus referenziert ist. Das Symbol "Alle referenziert" wird für alle Achsenbuchstaben angezeigt, wenn ALLE Gelenke im Weltanzeigemodus referenziert sind.

8.3.5. Grenzwert (engl. limit)-Icons

Bei Identitätskinematiken werden "Limit"-Symbole für den entsprechenden (eineindeutigen) Achsenbuchstaben angezeigt, wenn ein Gelenklimit aktiv ist.

Bei Nicht-Identitätskinematiken werden "Limit"-Symbole für einzelne Gelenke angezeigt, wenn das Gelenklimit im Gelenkanzeigemodus aktiv ist. Ein "Any-Limit"-Symbol wird angezeigt, wenn sich ein beliebiges Gelenk im Teleop-Anzeigemodus an einem Limit befindet.

8.3.6. Tastenbelegung für eine vierte Achse

In der AXIS-Bedienoberfläche werden die Jogging-Tasten den Achsen auf eine konfigurierbare Weise zugewiesen. Für 3-Achsen-Maschinen, XYZA-Maschinen und Drehmaschinen ist die Voreinstellung die gleiche wie in 2.7. Bei anderen Maschinen werden die 4 Tipptastenpaare den ersten 4 Achsen zugewiesen, die in der Reihenfolge XYZ ABC UVW existieren. Diese Zuweisungen können durch neue INI-Datei-Direktiven im Abschnitt [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.

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 im Gelenk- als auch im Teleop-Bewegungsmodus unterstützt. Beachten Sie, dass die für das Jogging verwendeten Parameter bei Maschinen mit nicht identischer Kinematik möglicherweise nicht für beide Modi geeignet sind.

OpenGL wird von TkLinuxCNC nicht verwendet, so dass es verwendet werden kann, um Probleme und Systemabhängigkeiten zu isolieren, die mit moderneren GUIs wie AXIS offengelegt werden.

Die rudimentäre Backplot-GUI ist für die Verwendung mit identischen kinematischen (xyz) Maschinenkonfigurationen verfügbar.

8.4.1. emcsh-Befehle

Der Code von emcsh.cc stellt die von TkLinuxCNC verwendeten Tcl-Befehle bereit. Die Befehle sind für Tcl-Anwendungen als Tcl-Paket mit dem Namen Linuxcnc verfügbar. Eine Reihe von Befehlen erforderte bisher die Verwendung eines numerischen Arguments zur Angabe einer Achsenkoordinate (0-->X, 1-->Y, …, 8-->W). Diese Befehle wurden vereinfacht, so dass nur noch der Koordinatenbuchstabe als Argument verwendet wird.

Befehle, die jetzt ein Koordinaten-Buchstaben-Argument verwenden, sind:

  1. emc_pos_offset

  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

8.5. Touchy

Die Touchy-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat. Joggen wird im Teleop-Modus ausgeführt.

8.6. Gscreen

Die Gscreen-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat. Jogging wird im Teleop-Modus durchgeführt.

8.7. GMOCCAPY

Die GMOCCAPY-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat. Joggen wird im Teleop-Modus ausgeführt.

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.

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.

war: set jog      joint_number             speed
ist: set jog      joint_number|axis_letter speed

war: set jog_incr joint_number             speed increment
ist: set jog_incr joint_number|axis_letter speed increment

war: set jog_stop
ist: set jog_stop joint_number|axis_letter
Anmerkung

Test auf Teleop-Modus mit dem Befehl: get teleop_enable
Wenn TELEOP_ENABLE=YES, benutze axis_letter;
Andernfalls joint_number verwenden

Anmerkung
Früher hat der Befehl set jog 0 1.234 die nullte Achse (X) mit der geforderten Geschwindigkeit=1.234 in jedem Modus (frei oder teleop) verfahren. Dieser Befehl versucht nun, das nullte Gelenk (Joint0) zu verfahren, vorausgesetzt der Modus ist frei (nicht teleop). Um die X-Achse zu verfahren, muss der Modus teleop sein und der entsprechende Befehl lautet: set jog x 1.234.

9. Werkzeuge (engl. tools)

9.1. Kalibrierung (emccalib.tcl)

Das Kalibrierungs-/Tuning-Tool unterstützt jetzt Zeilengruppen (engl. stanzas):

[JOINT_N], [AXIS_L], [SPINDLE_S], [TUNE]

wobei N eine Gelenknummer (0 … ([KINS]JOINTS-1) ), L ein Achsenkoordinatenbuchstabe (X,Y,Z,A,B,C,U,V,W) und S eine Spindelnummer (0 … 9) ist.

Anmerkung
Die Anzahl der zulässigen Spindeln beträgt 8, aber ältere Konfigurationen können eine Stanza [SPINDLE_9] enthalten, die nicht mit einer tatsächlichen Spindelanzahl in Verbindung steht.
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.

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.

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.

12. Simulator-Konfigurationen (Aktualisierungen für Gelenke Achsen 2.8.x)

12.1. Vor joints_axes

Vor der Integration von joints_axes unterstützten die in den Sim-Konfigurationen verwendeten HAL-Dateien typischerweise eine gewöhnliche Fräsmaschine - ein kartesisches System mit trivialer Kinematik und drei Achsen mit der Bezeichnung X Y Z. Typische HAL-Datei-Einträge:

[HAL]
HALFILE = core_sim.hal
HALFILE = sim_spindle_encoder.hal
HALFILE = axis_manualtoolchange.hal
HALFILE = simulated_home.hal

Drehbankkonfigurationen hatten oft dieselben HAL-Dateien und verwendeten die zweckmäßige Methode, 3 Achsen mit unbenutztem "Y" anzugeben. Komplexere Sim-Konfigurationen boten je nach Konfigurationszweck spezifische Sätze von HAL-Dateien.

12.2. Nach joints_axes

Mit der Einbindung der joints_axes-Funktionalität nutzen viele der in der Distribution enthaltenen Simulationen nun die Vorteile einer Allzweck-HAL-Datei, die automatisch zahlreiche Konfigurationen unterstützt. Eine typische sim config HALFILE-Spezifikation ist:

[HAL]
HALFILE = LIB:basic_sim.tcl

Die HALFILE basic_sim.tcl unterstützt eine Reihe von häufig benötigten Funktionen für eine beliebige Anzahl von Gelenken, die angegeben werden durch:

[KINS]
...
JOINTS = anzahl_an_gelenken
...

Zu den unterstützten Funktionen gehören:

  1. ddts — die HAL-Komponenten des Differenzierers werden für jedes Gelenk geladen und verbunden (und xy, xyz für Trivkins-Maschinen)

  2. simulated_home — eine sim_home_switch HAL-Komponente wird geladen und für jedes Gelenk verbunden. Die Homing-Bedingungen werden durch die üblichen [JOINT_n]HOME_* INI-Dateielemente spezifiziert.

  3. use_hal_manualtoolchange — the non-realtime hal_manualtoolchange component is loaded and connected.

  4. sim_spindle — die sim_spindle-Komponente wird geladen und mit zusätzlich geladenen HAL-Komponenten verbunden, um die Trägheit einer rotierenden Spindelmasse zu simulieren.

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

Das Weglassen einer oder mehrerer Kernfunktionen ermöglicht das Testen ohne diese Funktion oder das Hinzufügen neuer HALFILEs zur Implementierung oder Erweiterung der Funktionalität.

12.2.1. Äquivalente HAL-Befehlsdatei

Wenn LIB:basic_sim.tcl verwendet wird, so wird eine entsprechende HAL-Datei erstellt (im Konfigurationsverzeichnis) erstellt, um die ausgegebenen halcmd-Befehle anzuzeigen. Der Name der Datei Name basiert auf dem Namen der INI-Datei mit angehängtem _cmds, dem Basisnamen und einer konventionellen .hal-Dateierweiterung. Beispiel:

inifilename:            example.ini
equivalent_halfilename: example_cmds.hal

Die entsprechende HAL-Datei ersetzt frühere Instanzen von Dateien mit demselben Dateinamen. Es werden INI-Datei-Variablen, die in der INI-Datei angegeben und von halcmd interpretiert werden, automatisch in der erstellten HAL-Datei ersetzt. Wenn es [HAL]HALFILEs gibt, die vor LIB:basic_sim.tcl angegeben sind, so werden deren halcmd Befehle ebenfalls einbezogen.

Die entsprechende HAL-Datei kann verwendet werden, um eine neue Konfiguration zu erstellen, die auf der mit LIB:basic_sim.tcl erstellten ursprünglichen Konfiguration basiert:

  1. Führen Sie die Simulatorkonfiguration aus, um eine neue äquivalente HAL-Datei zu erstellen, z. B.: "example_cmds.hal".

  2. Um diese neue äquivalente HAL-Datei in der ursprünglichen INI-Datei der Simulatorkonfiguration (oder einer Kopie davon) zu verwenden, bearbeiten Sie sie, um sie zu ändern:

    [HAL]
    HALFILE = LIB:basic_sim.tcl other_parameters

    zu:

    [HAL]
    HALFILE = ./example_cmds.hal

12.2.2. Anmerkungen

All components and connections made by LIB:basic_sim.tcl can be viewed using halcmd. The entire HAL configuration (except for non-realtime components loaded with loadusr) can be saved to a file using:

$ halcmd save > hal.save

Die Verwendung von LIB:basic_sim.tcl reduziert den Aufwand für die Erstellung einer Simulationskonfiguration, da sie die meisten der erforderlichen Komponentenladungen und HAL-Verbindungen übernimmt.

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.

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).

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 ---

13.2. HAL-Pins

Namensänderungen:

war: axis.L.vel-cmd
ist: axis.l.teleop-vel-cmd

Neue Pins:

motion.homing-inhibit (siehe motion manpage)

13.3. HAL-Komponenten

  1. siggen: neuer Pin reset zum Setzen von Ausgangssignalwerten auf vordefinierten Zustand

  2. biquad: Pins’type,f0,Q,s1,s2' waren zuvor Parameter

  3. userkins: Vorlage für benutzerdefinierte Kinematikmodule mit halcompile

13.4. XHC-HB04 vorbereitete Unterstützung

13.4.1. xhc_hb04_util.comp (Hilfskomponente)

Entfernen Sie den ungenutzten Pin jogenable-off.

Fügen Sie den Pin amux-enable hinzu, so dass die gemultiplexten Beschleunigungsreduktionen nun durch die UND-Verknüpfung der Pins is-manual und amux-enable aktiviert werden. Diese beiden Pins sind normalerweise mit halui.mode.is-manual bzw. halui.mode.is-teleop verbunden.

13.4.2. xhc_hb04.tcl (optionale HAL-Datei für die LIB-Konfiguration)

Signal pendant:jogenable-off für entfernten Pin pendant_util.jogenable-off entfernen.

Unterstützung neuer Bewegungspins für reduzierte Beschleunigungen (axis.L.jog-accel-fraction, joint.N.jog-accel-fraction) für das Joggen der Räder. Die Verwendung von [APPLICATIONS]APP=xhc-hb04-accels wird nicht mehr unterstützt. Reduzierte Beschleunigungen werden nur noch für das Rad-Jogging angewendet (nicht für nml-Befehle, die von GUIs ausgegeben werden).

13.5. XHC-WHB04B-6 pendant Unterstützung

Siehe die Dokumentation für die Komponente xhc-whb04b-6.

13.6. bldc3_hall

Die Komponente bldc_hall3 wurde entfernt. Die Komponente bldc ist flexibler und besser getestet.

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".

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 Weltmodus-Jogging referenziert werden.

13.9. TWOPASS-Unterstützung für komplexe loadrt config= items

Twopass-Unterstützung für loadrt config modparams mit mehreren durch Leerzeichen getrennten und in Anführungszeichen eingeschlossenen Einstellungen hinzugefügt. Beispiel:

loadrt hm2_eth board_ip=10.10.10.10 config="num_encoders=2 num_pwmgens=2 num_stepgens=3"

14. Änderungen nach 2.8.x (Master-Zweig Entwicklung)

Der Master-Zweig ist mit einer Vorabversion gekennzeichnet, normalerweise 2.9~pre*

14.1. Python3 und GTK3

2.9 wurde auf Python3 und GTK3 umgestellt. Dies betrifft Sie nur, wenn Sie benutzerdefinierte Glade- oder Python-Handler in Ihrer Konfiguration haben.

  1. Führen Sie py3clean in Ihrem Konfigurationsverzeichnis aus, um alle temporären Dateien zu entfernen.

  2. Führen Sie py3clean in Ihrem LinuxCNC-Quellverzeichnis aus, wenn Sie aus den Quellen kompilieren.

  3. Führen Sie 2to3 -w für alle .py-Dateien aus, die Sie geschrieben haben.

  4. Stellen Sie sicher, dass der Interpreter in der ersten Zeile des Skripts Python 3 und nicht Python 2 ist.

  5. Öffnen Sie die UI-Datei in Glade, und speichern Sie sie. Es sollte alles, was konvertiert werden kann, automatisch konvertieren und Ihnen Warnungen geben.

14.2. LinuxCNC-Startup

Das Hauptskript linuxcnc unterstützt eine neue Option (-H dirname) zur Angabe eines zusätzlichen benutzerdefinierten Verzeichnisses für HAL-Dateien. Dieses Verzeichnis wird vor der üblichen Suche nach 1) dem INI-Verzeichnis und 2) dem System-HAL-Dateibibliotheksverzeichnis durchsucht.

14.3. G-Code Änderungen

G43.2 (zusätzliche Offsets) akzeptiert nun transiente Offsets, die sowohl durch Achsenwörter als auch aus der Werkzeugtabelle hinzugefügt werden sollen.

14.4. Konfigurations-Updates

14.4.1. INI-Datei Einstellungen

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"

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.

Codeverweise auf die sequenziellen Indizes für interne Werkzeugdaten wurden geklärt, aber die alten Variablennamen für selected_pocket und current_pocket bleiben bestehen. Variablen mit diesen Namen beziehen sich auf den sequenziellen Index für interne Werkzeugdaten und nicht auf eine tatsächliche Taschennummer. Diese Variablennamen können in Zukunft umbenannt werden und erfordern Änderungen an benutzerdefinierten Python-Remap-Anwendungen, welche die Handhabung der Werkzeuge ändern.

Eine neue optionale Schnittstelle unterstützt die Verwaltung von Werkzeugdaten durch eine externe Datenbankanwendung.

The ioControl_v2.cc file providing the non-realtime program iov2 has no maintainter and its use is deprecated — it may be removed before the next release.

14.5.1. Rückwärtslauf

Unterstützung für Rückwärtslauf im Trajektorienplaner, den Aufgaben- und Bewegungsmodulen, der Python-Schnittstelle, der AXIS-GUI und der Test-Suite hinzugefügt.

14.5.2. Anzahl der Gelenke

Die maximale Anzahl der Gelenke (EMCMOT_MAX_JOINTS) wurde von 9 auf 16 erhöht. Die AXIS GUI unterstützt nun die Anzeige von bis zu 16 Gelenken.

14.5.3. Extra Gelenke

Ein neuer motmod-Parameter (num_extrajoints) spezifiziert Gelenke, die mit konventionellen Referenzfahrtmethoden angefahren werden, aber nach der Referenzfahrt über neue HAL-Pins (joint.N.posthome-cmd) gesteuert werden. Solche Gelenke können von unabhängigen Bewegungsplanern/-controllern in HAL verwaltet und von G-Code aus mit Hilfe von benutzerdefinierten M-Codes manipuliert werden. Weitere Informationen finden Sie in der Manpage motion.

14.5.4. Referenzfahrt (engl. homing)

Eine Referenzfahrt (engl. homing)-API wird von src/emc/motion/homing.h bereitgestellt, um benutzerdefinierten Homing-Code zu unterstützen, der src/emc/motion/homing.c durch eine benutzerdefinierte homing.c-Datei ersetzt.

14.5.5. Bewegung (engl. motion)

Das Bewegungsmodul unterstützt Kinematikmodule, die neue Funktionen kinematicsSwitchable() und kinematicsSwitch() definieren, um ihren Kinematik-Typ zu wechseln. Ein HAL-Pin, motion.switchkins-type, ist für die Verwendung solcher Kinematikmodule vorgesehen.

Kinematikmodule, die Kinematikumschaltung implementieren, verwenden das Objekt switchkins.o, um die erforderlichen rtapi_main() und zugehörige Funktionen bereitzustellen. Kinematikmodule, die Kinematikumschaltung nicht unterstützen, verwenden das Makro "KINS_NOT_SWITCHABLE", das von kinematics.h bereitgestellt wird.

14.5.6. Switchkins Kinematik-Module

Mehrere Kinematikmodule sind nun zwischen ihrer gleichnamigen Kinematik und einem alternativen Identitätskinematikmodus umschaltbar.

Kinematische Module, die Switchkins unterstützen:

  1. xyzac-trt-kins table-rotary-tilting (ersetzt xyzac-trt-kins)

  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)

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)

The non-realtime test program bin/genserkins has been isolated to a single file (ugenserkins.c) since its original source file (genserkins.c) has been refactored for switchkins support. The non-realtime test program has not been actively maintained and its use is deprecated. The ugenserkins.c file may be removed in the future.

14.5.7. Trajektorienplaner

Der Trajektorienplaner ist jetzt als ladbares Modul implementiert (Standard:tpmod). Ein alternativer (vom Benutzer erstellter) Planer kann mit der INI-Einstellung [TRAJ]TPMOD= modulename oder der Option linuxcnc -t modulename geladen werden. Die Beispieldatei src/hal/components/tpcomp.com illustriert eine Methode zur Erstellung eines Moduls mit halcompile.

14.5.8. Referenzfahrt (engl. homing)

Die Referenzfahrt (engl. homing)-Funktionen werden jetzt durch ein ladbares Modul implementiert (Standard:homemod). Ein alternativer (vom Benutzer erstellter) Planer kann mit der INI-Einstellung [EMCMOT]HOMEMOD=modulename oder der Option linuxcnc -m modulename geladen werden. Die Beispieldatei src/hal/components/homecomp.comp ist ein Minimalbeispiel für ein Homing-Modul, das mit halcompile erstellt werden kann.

14.5.9. Sonstiges

lib/hallib/sim_lib.tcl: Simulation des Encoder-Index, wenn [JOINT_n]HOME_USE_INDEX angegeben ist.

lib/python/vismach.py: neuer HAL-Pin vismach.plotclear

14.6. HAL

14.6.1. Komponenten

sim_home_switch: I/O-Pin für Index-Aktivierung hinzugefügt

14.6.2. Pins für Bewegungsmodule

motion.feed-upm — aktueller Vorschub in Einheiten pro Minute

14.7. Konfigurationen

14.7.1. INI-Datei

[DISPLAY]GEOMETRY Einstellungen, die das ! Zeichen geben an, dass die angezeigten Drehungen G5x-, G92-Offsets berücksichtigen.

14.7.2. Simulationskonfigurationen

sim/configs/axis/axis_9axis: Demonstriert den simulierten Encoder-Index

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.