1. Die INI-Datei Komponenten

Eine typische INI-Datei hat ein recht einfaches Layout, das Folgendes umfasst;

  • Kommentare

  • Abschnitte

  • Variablen

Jedes dieser Elemente wird in einzelnen Zeilen getrennt. Jedes Zeilenende oder Zeilenumbruchzeichen erzeugt ein neues Element.

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.

; 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, zwischen verschiedenen Variablen zu wählen.

DISPLAY = axis
# DISPLAY = touchy

In dieser Liste wird die Variable DISPLAY auf axis gesetzt, weil die andere auskommentiert ist. Wenn jemand unvorsichtigerweise eine Liste wie diese bearbeitet und zwei der Zeilen unkommentiert lässt, wird die zuerst gefundene Zeile verwendet.

Beachten Sie, dass die Zeichen "#" und ";" innerhalb einer Variablen nicht für Kommentare stehen:

FALSCH = Wert # und ein Kommentar

# Korrekter Kommentar
CORRECT = Wert

1.2. Abschnitte

Zusammenhängende Teile einer INI-Datei sind in Abschnitte unterteilt. Der Name eines Abschnitts ist in Klammern eingeschlossen, etwa so: [DIESER ABSCHNITT]. Die Reihenfolge der Abschnitte ist unerheblich. Die Abschnitte beginnen mit dem Abschnittsnamen und enden mit dem nächsten Abschnittsnamen.

Die folgenden Abschnitte werden von LinuxCNC verwendet:

  • [EMC] allgemeine Informationen

  • [DISPLAY] Einstellungen im Zusammenhang mit der grafischen Benutzeroberfläche

  • [FILTER] Einstellungen für Eingaben-Filterprogramme

  • [RS274NGC] vom G-Code-Interpreter verwendete Einstellungen

  • [EMCMOT] Einstellungen, die von der Echtzeit-Bewegungssteuerung verwendet werden

  • [TASK] vom Task-Controller verwendete Einstellungen

  • [HAL] gibt HAL-Dateien an

  • [HALUI] Von HALUI verwendete MDI-Befehle

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

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.

Beispiel für eine Variable
MACHINE = My Machine

Eine variable Zeile kann mit einem terminalen Backslash (\) auf mehrere Zeilen erweitert werden. Es sind maximal MAX_EXTEND_LINES (==20) zulässig. Nach dem abschließenden Backslash-Zeichen darf kein Leerzeichen stehen.

Abschnittsbezeichnungen dürfen nicht auf mehrere Zeilen ausgedehnt werden.

Beispiel für Variable mit Zeilenerweiterung
APP = sim_pin \
ini.0.max_acceleration \
ini.1.max_acceleration \
ini.2.max_acceleration \
ini.0.max_velocity \
ini.1.max_velocity \
ini.2.max_velocity
boolsche Variablen

Boolesche Werte können eines von TRUE, YES oder 1 für wahr/aktiviert und eines von FALSE, NO oder 0 für falsch/deaktiviert sein. Der Fall wird ignoriert.

In den folgenden Abschnitten wird jeder Abschnitt der Konfigurationsdatei anhand von Beispielwerten für die Konfigurationszeilen erläutert.

Variablen, die von LinuxCNC verwendet werden, müssen immer die Sektionsnamen und Variablennamen wie gezeigt verwenden.

1.4. Benutzerdefinierte Abschnitte und Variablen

Die meisten Beispielkonfigurationen verwenden benutzerdefinierte Abschnitte und Variablen, um alle Einstellungen an einem Ort zu bündeln.

Um eine benutzerdefinierte Variable zu einem bestehenden LinuxCNC-Abschnitt hinzuzufügen, fügen Sie die Variable einfach in diesen Abschnitt ein.

Beispiel für eine benutzerdefinierte Variable, die der Variablen "TYPE" den Wert "LINEAR" und der Variablen "SCALE" den Wert "16000" zuweist.
[JOINT_0]
TYPE = LINEAR
...
SCALE = 16000

Um einen benutzerdefinierten Abschnitt mit eigenen Variablen einzuführen, fügen Sie den Abschnitt 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

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
setp stepgen.0.position-scale [JOINT_0]SCALE
Anmerkung
Der in der Variablen gespeicherte Wert muss mit dem vom Komponentenpin angegebenen Typ übereinstimmen.

Für benutzerdefinierten Variablen im G-Code verwenden Sie die globale Variablensyntax #<_ini[section]variable>. Das folgende Beispiel zeigt eine einfache Z-Achsen-Antastroutine für eine Oberfräse oder ein Fräswerk unter Verwendung einer Tastplatte.

G-Code Beispiel
G91
G38.2 Z#<_ini[probe]z_safe_distance> F#<_ini[probe]z_feedrate>
G90
G1 Z#5063
G10 L20 P0 Z#<_ini[probe]z_offset>

1.5. Include-Dateien

Durch die Angabe einer #INCLUDE-Anweisung in einer INI-Datei kann der Computer dazu angehalten werden, an dieser Stelle zunächst den Inhalt der angegebenen Datei zu berücksichtigen.

#INCLUDE Format
#INCLUDE filename

Der Dateiname kann wie folgt angegeben werden:

  • eine Datei in demselben Verzeichnis wie die INI-Datei

  • eine Datei, die sich relativ zum Arbeitsverzeichnis befindet

  • ein absoluter Dateiname (beginnt mit einem /)

  • einen Dateinamen, der sich auf den Wohnort des Benutzers bezieht (beginnt mit ~)

Mehrere #INCLUDE-Direktiven werden unterstützt.

#INCLUDE Beispiele
#INCLUDE joint_0.inc
#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 hinzugeladene (engl. included) Dateien.

2. INI-Datei Abschnitte

2.1. [EMC] Abschnitt

  • VERSION = 1.1 - Die Versionsnummer des Formats für diese Konfiguration. Ein anderer Wert als 1.1 führt dazu, dass die Konfigurationsprüfung ausgeführt wird und versucht wird, die Konfiguration auf den neuen Typ der Gelenkachsen-Konfiguration zu aktualisieren.

  • MACHINE = My Controller - Dies ist der Name des Controllers, der in den meisten grafischen Oberflächen oben angezeigt wird. Sie können hier einfügen was Sie wollen, solange es nur eine Zeile lang ist.

  • DEBUG = 0 - Debug-Level 0 bedeutet, dass keine Meldungen ausgegeben werden, wenn LinuxCNC von einem Terminal ausgeführt wird. Debug-Flags sind normalerweise nur für Entwickler nützlich. Siehe src/emc/nml_intf/debugflags.h für andere Einstellungen.

  • RCS_DEBUG = 1 RCS Debug-Nachrichten anzeigen. Gibt standardmäßig nur Fehler (1) aus, wenn EMC_DEBUG_RCS und EMC_DEBUG_RCS-Bits in DEBUG nicht vorhanden sind, ansonsten werden alle ausgegeben (-1). Verwenden Sie dies, um RCS Debug-Nachrichten auszuwählen. Siehe src/libnml/rcs/rcs_print.hh für alle MODE-Flags.

  • RCS_DEBUG_DEST = STDOUT - bestimmt wohin RCS_DEBUG Nachrichten ausgegeben werden (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX).

  • RCS_MAX_ERR = -1 - Anzahl Fehler, nach der weitere RCS-Fehler nicht mehr gemeldet werden (-1 = unendlich).

  • NML_FILE = /usr/share/linuxcnc/linuxcnc.nml - Setzen Sie diese, wenn Sie eine nicht-Standard-NML-Konfigurationsdatei verwenden möchten.

2.2. [DISPLAY] Abschnitt

Verschiedene Benutzeroberflächen-Programme verwenden unterschiedliche Optionen, und nicht jede Option wird von jeder Benutzeroberfläche unterstützt. Es gibt verschiedene Schnittstellen, wie AXIS, GMOCCAPY, Touchy, QtVCP’s QtDragon und Gscreen. AXIS ist eine Schnittstelle für die Verwendung mit normalen Computern und Monitoren, Touchy ist für die Verwendung mit Touchscreens. GMOCCAPY kann in beide Arten verwendet werden und bietet auch viele Anschlüsse für Hardware-Steuerungen. Beschreibungen der Schnittstellen finden Sie im Abschnitt Schnittstellen (engl. Interfaces) des Benutzerhandbuchs.

  • DISPLAY = axis - Der Dateiname der ausführbaren Datei, welche die zu verwendende Benutzeroberfläche bereitstellt. Bekannte gültige Optionen sind (alle in Kleinbuchstaben): axis, touchy, gmoccapy, gscreen, tklinuxcnc, qtvcp, qtvcp-qtdragon oder qtvcp-qtplasmac.

  • POSITION_OFFSET = RELATIVE - Das Koordinatensystem (RELATIVE oder MACHINE), das beim Start der Benutzeroberfläche auf dem DRO angezeigt wird. Das RELATIVE Koordinatensystem spiegelt die derzeit gültigen G92- und G5x-Koordinatenoffsets wider.

  • POSITION_FEEDBACK = COMMANDED - Der Koordinatenwert (COMMANDED oder ACTUAL), der auf der externen Digitalanzeige (DRO) angezeigt werden soll, wenn die Benutzeroberfläche startet. In AXIS kann dies über das Menü View geändert werden. Die COMMANDED (engl. für befohlen)-Position ist die von LinuxCNC angeforderte Position. Die ACTUAL (engl. für IST)-Position ist die von den Motoren zurückgemeldete Position (engl. feedback position), wenn sie wie die meisten Servosysteme solche Funktion haben. Normalerweise wird der COMMANDED-Wert verwendet.

  • DRO_FORMAT_MM = %+08.6f - Setzt die Standard-DRO-Formatierung im metrischen Modus außer Kraft (normalerweise 3 Dezimalstellen, aufgefüllt mit Leerzeichen auf 6 Ziffern nach links). Das obige Beispiel füllt mit Nullen auf, zeigt 6 Dezimalstellen an und erzwingt die Anzeige eines +-Zeichens für positive Zahlen. Die Formatierung folgt der Python-Praxis. https://docs.python.org/2/library/string.html#format-specification-mini-language gibt einen Fehler aus, wenn das Format keine Fließkommazahlen akzeptieren kann.

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

  • 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 kann. 0.5 (immer mit Dezimalpunkt, nicht Komma) bedeutet 50% der programmierten Spindeldrehzahl. (Dies wird verwendet, um die minimale Spindeldrehzahl einzustellen.)

  • MIN_SPINDLE_0_OVERRIDE = 0.5 - Der minimale Spindel-Override, den der Benutzer auswählen kann. 0,5 bedeutet 50% der programmierten Spindeldrehzahl. (Dies wird verwendet, um die minimale Spindeldrehzahl einzustellen). Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

  • MAX_SPINDLE_OVERRIDE = 1.0 - Der maximale Spindel-Override, den der Benutzer auswählen kann. 1.0 bedeutet 100% der programmierten Spindeldrehzahl.

  • MAX_SPINDLE_0_OVERRIDE = 1.0 - Der maximale Vorschub-Override, den der Benutzer wählen kann. 1.2 bedeutet 120% der programmierten Vorschubgeschwindigkeit. Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

  • DEFAULT_SPINDLE_SPEED = 100 - Die Standardspindeldrehzahl, wenn die Spindel im manuellen Modus gestartet wird. Wenn diese Einstellung nicht vorhanden ist, wird sie standardmäßig auf 1 U/min für AXIS und 300 U/min für GMOCCAPY gesetzt.

    • veraltet - stattdessen den Abschnitt [SPINDLE_n] verwenden

  • DEFAULT_SPINDLE_0_SPEED = 100 - Die Standardspindeldrehzahl, wenn die Spindel im manuellen Modus gestartet wird. Auf der Mehrspindelmaschine gibt es für jede Spindelnummer Einträge. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

    • deprecated - stattdessen den Abschnitt [SPINDLE_n] verwenden.

  • SPINDLE_INCREMENT = 200 - Die Schrittweite, die verwendet wird, wenn man auf die Buttons zum Erhöhen/Verringern klickt. Nur genutzt von QtVCP-basierten GUIs.

    • deprecated - stattdessen den Abschnitt [SPINDLE_n] verwenden.

  • MIN_SPINDLE_0_SPEED = 1000 - Die Mindestdrehzahl, die manuell ausgewählt werden kann. Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Nur genutzt von den QtVCP-basierten GUIs.

    • deprecated - stattdessen den Abschnitt [SPINDLE_n] verwenden.

  • MAX_SPINDLE_0_SPEED = 20000 - Die maximale Drehzahl, die manuell ausgewählt werden kann. Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Nur genutzt von QtVCP-basierten GUIs.

    • deprecated - stattdessen den Abschnitt [SPINDLE_n] verwenden.

  • PROGRAM_PREFIX = ~/linuxcnc/nc_files - Das Standardverzeichnis für G-Code-Dateien, benannte Unterprogramme und benutzerdefinierte M-Codes. Das Verzeichnis PROGRAM_PREFIX wird vor den Verzeichnissen durchsucht, die in [RS274]SUBROUTINE_PATH und [RS274]USER_M_PATH aufgeführt sind.

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

  • CYCLE_TIME = 100 - Zykluszeit der Anzeige-GUI. Je nach Bildschirm kann dies in Sekunden oder ms (bevorzugt ms) angegeben werden. Dies ist oft die Aktualisierungsrate und nicht die Ruhezeit zwischen den Aktualisierungen. Wenn die Aktualisierungszeit nicht richtig eingestellt ist, kann der Bildschirm nicht mehr reagieren oder sehr ruckartig werden. Ein Wert von 100 ms (0,1 Sekunden) ist eine übliche Einstellung, obwohl auch ein Bereich von 50 bis 200 ms (0,05 bis 0,2 Sekunden) sinnvoll sein kann. Bei einer leistungsschwachen CPU kann eine längere Einstellung eine Verbesserung bewirken. Normalerweise ist die Standardeinstellung in Ordnung.

  • PREVIEW_TIMEOUT = 5 - Timeout (in Sekunden) für das Laden der grafischen Vorschau des G-Codes. Derzeit nur AXIS.

  • HOMING_PROMPT = TRUE - Schnellnachricht mit Homing-Anfrage anzeigen, wenn die Einschalt (engl. power on)-Buton in der AXIS GUI gedrückt wird. Das Drücken des Button "Ok" in der Eingabeaufforderung entspricht dem Drücken des Button "Home All" (oder der Ctrl-HOME-Tastenkombination).

Anmerkung
Die folgenden [DISPLAY]-Elemente werden von GladeVCP und PyVCP verwendet, siehe den embedding a tab Abschnitt des GladeVCP Kapitels oder das PyVCP Kapitel für weitere Informationen.
  • 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

    Anmerkung

    Verschiedene Benutzerschnittstellenprogramme verwenden unterschiedliche Optionen, und nicht jede Option wird von jeder Benutzerschnittstelle unterstützt. Siehe AXIS GUI Dokument für AXIS Details. Siehe GMOCCAPY Dokument für Einzelheiten zu GMOCCAPY.

  • DEFAULT_LINEAR_VELOCITY = .25 - Die Standardgeschwindigkeit für lineares Joggen, in <sub:ini:sec:traj,Maschineneinheiten>> pro Sekunde.

  • MIN_VELOCITY = .01 - Der ungefähre niedrigste Wert des Jog-Sliders.

  • MAX_LINEAR_VELOCITY = 1.0 - Die maximale Geschwindigkeit für lineare Jogs, in Maschineneinheiten pro Sekunde.

  • MIN_LINEAR_VELOCITY = .01 - Der annähernd niedrigste Wert des Jog-Sliders.

  • DEFAULT_ANGULAR_VELOCITY = .25 - Die Standard-Geschwindigkeit für Winkelbewegungen, in Maschineneinheiten pro Sekunde.

  • MIN_ANGULAR_VELOCITY = .01 - Der ungefähre niedrigste Wert des Winkelschiebereglers.

  • MAX_ANGULAR_VELOCITY = 1.0 - Die maximale Geschwindigkeit für Winkelbewegungen, in Maschineneinheiten pro Sekunde.

  • INCREMENTS = 1 mm, .5 in, ... - Definiert die verfügbaren Inkremente für inkrementelles Joggen. Die INCREMENTS können verwendet werden, um die Standardeinstellung zu überschreiben. Die Werte können Dezimalzahlen (z. B. 0.1000 - mit Dezimalpunkt) oder Bruchzahlen (z. B. 1/16) sein, optional gefolgt von einer Einheit (cm, mm, um, inch, in oder mil). Ohne Angabe einer Einheit wird die Maschineneinheit angenommen. Metrische und imperiale Abstände können gemischt werden: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um ist eine gültige Eingabe.

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

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

  • TOOL_EDITOR = tooledit - Der Editor, der bei der Bearbeitung der Werkzeugtabelle verwendet wird (zum Beispiel durch Auswahl von "Datei > Werkzeugtabelle bearbeiten…" in AXIS). Andere gültige Einträge sind gedit, gnome-terminal -e vim, und gvim. Dieser Eintrag gilt nicht für GMOCCAPY, da GMOCCAPY einen integrierten Editor hat.

  • PYVCP = /filename.xml - Die PyVCP-Panel-Beschreibungsdatei. Siehe das PyVCP-Kapitel für weitere Informationen.

  • PYVCP_POSITION = BOTTOM - Die Position des PyVCP-Panels in der AXIS-Benutzeroberfläche. Wird diese Variable weggelassen, dann wird das Panel standardmäßig auf der rechten Seite platziert. Die einzige gültige Alternative ist BOTTOM (engl. für unten). Weitere Informationen finden Sie im PyVCP-Kapitel.

  • LATHE = 1 - Jeder nicht leere Wert (einschließlich "0") bewirkt, dass die Achse den Drehmaschinenmodus mit Draufsicht und mit Radius und Durchmesser auf dem DRO anzeigt.

  • BACK_TOOL_LATHE = 1 - Jeder nicht leere Wert (einschließlich "0") bewirkt, dass die Achse den "Back Tool Lathe Modus" mit invertierter X-Achse verwendet.

  • FOAM = 1 - Jeder nicht leere Wert (einschließlich "0") veranlasst die Achse, die Anzeige für den Schaumstoffschneidermodus zu ändern.

  • GEOMETRIE = XYZABCUVW - Steuert die Vorschau und Hintergrunddarstellung der Bewegung. Dieses Element besteht aus einer Folge von Achsenbuchstaben und Steuerzeichen, denen optional ein "-" Zeichen vorangestellt ist:

    1. Die Buchstaben X, Y, Z geben die Verschiebung entlang der genannten Koordinate an.

    2. Die Buchstaben A, B, C bezeichnen die Drehung um die entsprechenden Achsen X, Y, Z.

    3. Die Buchstaben U, V, W geben die Verschiebung entlang der entsprechenden Achsen X, Y, Z an.

    4. Jeder angegebene Buchstabe muss in [TRAJ]COORDINATES vorkommen, um eine Wirkung zu haben.

    5. Ein "-" Zeichen vor einem beliebigen Buchstaben kehrt die Richtung der Operation um.

    6. Die Translations- und Rotationsoperationen werden von rechts nach links ausgewertet. Die Verwendung von GEOMETRY=XYZBC gibt also eine C-Drehung gefolgt von einer B-Drehung gefolgt von einem Versatz von Z, Y, X an. Die Reihenfolge der aufeinanderfolgenden Versatz-Buchstaben hat keine Auswirkung.

    7. Die richtige GEOMETRY-Zeichenkette hängt von der Maschinenkonfiguration und der zur Steuerung verwendeten Kinematik ab. Die Reihenfolge der Buchstaben ist wichtig. Zum Beispiel ist eine Drehung um C und dann B etwas anderes als eine Drehung um B gefolgt von einer um C.

    8. Drehungen werden standardmäßig in Bezug auf den Maschinenursprung angewendet. Beispiel: GEOMETRIE=CXYZ verschiebt den Kontrollpunkt zunächst nach X, Y, Z und führt dann eine C-Drehung um die Z-Achse aus, die auf den Maschinenursprung zentriert ist.

    9. Beispiel für UVW-Verschiebung: GEOMETRY=XYZUVW bewirkt, dass UVW im Koordinatensystem des Werkzeugs und XYZ im Koordinatensystem des Materials verschoben wird.

    10. Schaumstoff-(engl. foam-)schneidemaschinen (FOAM = 1) sollten "XY;UV" angeben oder den Wert leer lassen, auch wenn dieser Wert derzeit im Schaumstoffschneidemodus ignoriert wird. In einer zukünftigen Version kann definiert werden, was ";" bedeutet, aber wenn dies der Fall ist, wird "XY;UV" dasselbe bedeuten wie die aktuelle Voreinstellung.

    11. Experimentell: Wenn das Ausrufezeichen (!) in der Zeichenkette GEOMETRY enthalten ist, werden die Anzeigepunkte für A-, B- und C-Drehungen unter Berücksichtigung der durch die Codes G5x und G92 festgelegten X-, Y- und Z-Offsets angezeigt. Beispiel: Verwendung von GEOMETRY = !CXZ für eine Maschine mit [TRAJ]COORDINATES=XZC. Diese Bestimmung gilt nur für Liveplots - G-Code-Vorschauen sollten mit Null G5x, G92 Offsets durchgeführt werden. Dies kann dadurch erleichtert werden, dass die Offsets in den Programmen nur dann gesetzt werden, wenn die Aufgabe läuft (#<_task> == 1). Wenn beim Start aufgrund von Persistenz Offsets ungleich Null vorhanden sind, sollten die Offsets auf Null gesetzt und die Vorschau neu geladen werden.

    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 in eine Anzahl von geraden Linien unterteilt; ein Halbkreis wird in ARCDIVISION-viele Teile unterteilt. Größere Werte führen zu einer genaueren Vorschau, aber auch zu längeren Ladezeiten und einer trägeren Darstellung. Kleinere Werte ergeben eine weniger genaue Vorschau, benötigen aber weniger Zeit zum Laden und können zu einer schnelleren Darstellung führen. Der Standardwert von 64 bedeutet, dass ein Kreis von bis zu 3 Zoll mit einer Genauigkeit von 1 mil (.03%) angezeigt wird.

  • MDI_HISTORY_FILE = - Der Name einer lokalen MDI-Verlauf-Datei. Wenn dies nicht angegeben wird, speichert AXIS den MDI-Verlauf in .axis_mdi_history im Home-Verzeichnis des Benutzers. Dies ist nützlich, wenn Sie mehrere Konfigurationen auf einem Computer haben.

  • JOG_AXES = - Die Reihenfolge, in der die JOG-Tasten den Achsenbuchstaben zugewiesen werden. Der linke und der rechte Pfeil werden dem ersten Achsenbuchstaben zugewiesen, Auf und Ab dem zweiten, Seite auf/Seite ab dem dritten und linke und rechte Klammer dem vierten. Wenn keine Angaben gemacht werden, wird die Vorgabe von den Angaben zu [TRAJ]COORDINATES, [DISPLAY]LATHE und [DISPLAY]FOAM bestimmt.

  • JOG_INVERT = - Für jeden Achsenbuchstaben wird die Schrittrichtung invertiert. Die Voreinstellung ist "X" für Drehmaschinen und sonst leer.

    Anmerkung
    Die Einstellungen für JOG_AXES und JOG_INVERT gelten für das Joggen im Weltmodus nach Achsenkoordinatenbuchstaben und sind nach erfolgreicher Referenzfahrt im Weltmodus wirksam. Beim Betrieb im Gelenkmodus vor der Referenzfahrt sind die Tastatur-Jog-Tasten in einer festen Reihenfolge zugewiesen: links/rechts: Gelenk0, auf/ab: Gelenk1, Seite auf/Seite ab: Gelenk2, linke/rechte Klammer: Gelenk3
  • USER_COMMAND_FILE = mycommands.py - Der Name einer optionalen, konfigurationsspezifischen Python-Datei, die von der AXIS GUI anstelle der benutzerspezifischen Datei ~/.axisrc bezogen wird.

Anmerkung
Der folgende Abschnitt [DISPLAY] (engl. für Anzeige) wird nur von der TKLinuxCNC-Schnittstelle verwendet.
  • HELP_FILE = tklinucnc.txt - Pfad zur Hilfedatei.

2.3. [FILTER] Abschnitt

AXIS und GMOCCAPY haben die Möglichkeit, geladene Dateien durch ein Filterprogramm zu schicken. Dieser Filter kann jede gewünschte Aufgabe erfüllen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit M2 endet, oder etwas so Kompliziertes wie die Erkennung, ob es sich bei der Eingabe um ein Tiefenbild handelt, und die Erzeugung von G-Code zum Fräsen der definierten Form. Der Abschnitt [FILTER] der INI-Datei steuert, wie die Filter funktionieren. Schreiben Sie zunächst für jeden Dateityp eine PROGRAM_EXTENSION-Zeile. Dann geben Sie das Programm an, das für jeden Dateityp ausgeführt werden soll. Dieses Programm erhält den Namen der Eingabedatei als erstes Argument und muss RS274NGC-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und dann auch von LinuxCNC ausgeführt wird.

  • 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

Die folgenden Zeilen fügen Unterstützung hinzu für die Bild-zu-G-Code-Konverterung mit LinuxCNC.

PROGRAM_EXTENSION = .png,.gif,.jpg # Greyscale Depth Image
  png = image-to-gcode
  gif = image-to-gcode
  jpg = image-to-gcode

Ein Beispiel für einen benutzerdefinierten G-Code-Konverter, der sich im Verzeichnis linuxcnc befindet.

PROGRAM_EXTENSION = .gcode 3D Printer
  gcode = /home/mill/linuxcnc/convert.py
Anmerkung
Die Programmdatei, die mit einer Erweiterung verknüpft ist, muss entweder den vollständigen Pfad zum Programm enthalten oder sich in einem Verzeichnis befinden, das sich im Systempfad befindet.

Es ist auch möglich, einen Interpreter anzugeben:

PROGRAM_EXTENSION = .py Python Script
  py = python

Auf diese Weise kann jedes Python-Skript geöffnet werden, und seine Ausgabe wird als G-Code behandelt. Ein solches Beispielskript ist unter nc_files/holecircle.py verfügbar. Dieses Skript erzeugt G-Code für das Bohren einer Reihe von Löchern entlang des Umfangs eines Kreises. Viele weitere G-Code Generatoren sind auf der LinuxCNC Wiki Seite https://wiki.linuxcnc.org/.

Python-Filter sollten die Funktion print verwenden, um das Ergebnis an AXIS auszugeben.

Dieses Beispielprogramm filtert eine Datei und fügt eine W-Achse hinzu, die der Z-Achse entspricht. Damit es funktioniert, muss zwischen jedem Achsenwort ein Leerzeichen stehen.

#!/usr/bin/env python3

import sys

def main(argv):

  openfile = open(argv[0], 'r')
  file_in = openfile.readlines()
  openfile.close()

  file_out = []
  for line in file_in:
    # print(line)
    if line.find('Z') != -1:
      words = line.rstrip('\n')
      words = words.split(' ')
      newword = ''
      for i in words:
        if i[0] == 'Z':
          newword = 'W'+ i[1:]
      if len(newword) > 0:
        words.append(newword)
        newline = ' '.join(words)
        file_out.append(newline)
    else:
      file_out.append(line)
  for item in file_out:
    print("%s" % item)

if __name__ == "__main__":
  main(sys.argv[1:])
  • FILTER_PROGRESS=%d +
    If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form above sets the AXIS progress bar to the given percentage. This feature should be used by any filter that runs for a long time.

2.4. [RS274NGC] Abschnitt

  • PARAMETER_FILE = myfile.var - Die Datei, die sich im gleichen Verzeichnis wie die INI-Datei befindet und die vom Interpreter verwendeten Parameter enthält (zwischen den Läufen gespeichert).

  • ORIENT_OFFSET = 0 - Eine Gleitkommazahl, die zum R-Wort-Parameter einer M19 Orient Spindle Operation hinzugefügt wird. Wird verwendet, um eine beliebige Nullposition zu definieren, unabhängig von der Ausrichtung der Encoder.

  • RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 G94 G97 G98 - Eine Folge von NC-Codes, mit denen der Interpreter initialisiert wird. Dies ist kein Ersatz für die Angabe von modalen G-Codes am Anfang jeder NGC-Datei, da die modalen Codes der Maschinen unterschiedlich sind und durch einen früher in der Sitzung interpretierten G-Code geändert werden können.

  • SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs - Gibt eine durch Doppelpunkt (:) getrennte Liste von bis zu 10 Verzeichnissen an, die durchsucht werden sollen, wenn Unterprogramme in einer einzigen Datei im G-Code angegeben werden. Diese Verzeichnisse werden nach der Suche in [DISPLAY]PROGRAM_PREFIX (falls angegeben) und vor der Suche in [WIZARD]WIZARD_ROOT (falls angegeben) durchsucht. Die Pfade werden in der Reihenfolge durchsucht, in der sie aufgelistet sind. Die als erste bei der Suche gefundene passende Unterprogrammdatei wird verwendet. Die Verzeichnisse werden relativ zum aktuellen Verzeichnis für die INI-Datei oder als absolute Pfade angegeben. Die Liste darf keine Leerzeichen dazwischen enthalten.

  • CENTER_ARC_RADIUS_TOLERANCE_INCH = n (Voreinstellung: 0.00005)

  • CENTER_ARC_RADIUS_TOLERANCE_MM = n (Voreinstellung: 0.00127)

  • USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes - Gibt eine Liste von durch Doppelpunkt (:) getrennten Verzeichnissen für benutzerdefinierte Funktionen an. Die Verzeichnisse werden relativ zum aktuellen Verzeichnis für die INI-Datei oder als absolute Pfade angegeben. Die Liste darf keine Leerzeichen dazwischen enthalten.

    Es wird nach jeder möglichen benutzerdefinierten Funktion gesucht, typischerweise (M100-M199). Die Reihenfolge der Suche ist:

    1. [DISPLAY]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.

    Anmerkung
    Die maximale Anzahl der USER_M_PATH-Verzeichnisse wird zur Kompilierzeit festgelegt (Typ: USER_DEFINED_FUNCTION_MAX_DIRS == 5).
  • INI_VARS = 1 (Standardwert: 1)
    Erlaubt G-Code-Programmen, Werte aus der INI-Datei im Format #<_ini[section]name> zu lesen. Siehe G-Code Parameter.

  • HAL_PIN_VARS = 1 (Voreinstellung: 1)
    Erlaubt G-Code-Programmen das Lesen der Werte von HAL-Pins unter Verwendung des Formats #<_hal[HAL item]>. Der Zugriff auf die Variablen ist schreibgeschützt. Siehe G-Code Parameter für weitere Details und eine wichtige Warnung.

  • RETAIN_G43 = 0 (Voreinstellung: 0)
    Wenn diese Option eingestellt ist, können Sie G43 nach dem Laden des ersten Werkzeugs einschalten und müssen sich dann nicht mehr um das Programm kümmern. Wenn Sie schließlich das letzte Werkzeug entladen, wird der G43-Modus deaktiviert.

  • OWORD_NARGS = 0 (Voreinstellung: 0)
    Wenn diese Funktion aktiviert ist, kann ein aufgerufenes Unterprogramm die Anzahl der tatsächlich übergebenen Positionsparameter ermitteln, indem es den #<n_args> Parameter untersucht.

  • NO_DOWNCASE_OWORD = 0 (Voreinstellung: 0)
    Groß- und Kleinschreibung in O-Wort-Namen innerhalb von Kommentaren beibehalten, falls gesetzt, ermöglicht das Lesen von HAL-Elementen mit gemischter Groß- und Kleinschreibung in strukturierten Kommentaren wie (debug, #<_hal[MixedCaseItem]).

  • OWORD_WARNONLY = 0 (Voreinstellung: 0)
    Warnung statt Fehler bei Fehlern in O-Wort-Unterprogrammen.

  • DISABLE_G92_PERSISTENCE = 0 (Voreinstellung: 0) Erlaubt das automatische Löschen des G92-Offsets beim Start der Konfiguration.

  • DISABLE_FANUC_STYLE_SUB = 0 (Standardwert: 0) Wenn es einen Grund gibt, Fanuc-Unterprogramme zu deaktivieren, setzen Sie diesen Wert auf 1.

  • PARAMETER_G73_PECK_CLEARANCE = .020 (Standard: Metrische Maschine: 1 mm, imperiale Maschine: .05 Zoll) Splitter/Span (chip)-Back-off-Abstand in Maschineneinheiten

  • PARAMETER_G83_PECK_CLEARANCE = .020 (Standard: Metrische Maschine: 1mm, imperiale Maschine: .050 Zoll) Freiraumabstand (engl. clearance distance) von der letzten Eintauchtiefe (engl. feed depth), wenn die Maschine schnell zum Boden des Lochs zurückfährt, in Maschineneinheiten.

Anmerkung

Die oben genannten sechs Optionen wurden durch die FEATURES Bitmaske in Versionen von LinuxCNC vor 2.8 gesteuert. Dieser INI-Tag wird nicht mehr funktionieren.
Als Referenz:

FEATURES & 0x1  -> RETAIN_G43
FEATURES & 0x2  -> OWORD_NARGS
FEATURES & 0x4  -> INI_VARS
FEATURES & 0x8  -> HAL_PIN_VARS
FEATURES & 0x10 -> NO_DOWNCASE_OWORD
FEATURES & 0x20 -> OWORD_WARNONLY
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 Bestimmt den log_level (Voreinstellung: 0)

  • LOG_FILE = file-name.log
    Zur Angabe der Datei, die für die Protokollierung der Daten verwendet wird.

  • REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure Siehe das Remap Erweiterung von G-Code Kapitel für Details.

  • ON_ABORT_COMMAND=O <on_abort> call Siehe das Remap Erweiterung von G-Code Kapitel für Details.

2.5. [EMCMOT] Abschnitt

Dieser Abschnitt ist ein benutzerdefinierter Abschnitt und wird nicht von LinuxCNC direkt verwendet. Die meisten Konfigurationen verwenden Werte aus diesem Abschnitt, um den Motion-Controller zu laden. Für weitere Informationen über die Motion-Controller siehe den Abschnitt zu Motion.

  • EMCMOT = motmod - hier wird in der Regel der Name des Motion Controllers verwendet.

  • BASE_PERIOD = 50000 - die Basis (engl. base) Taskdauer in Nanosekunden.

  • SERVO_PERIOD = 1000000 - Dies ist die "Servo" Task Periode in Nanosekunden.

  • TRAJ_PERIOD = 100000 - Dies ist die Aufgabenperiode (engl. task period) des Trajektorienplaners (engl. trajectory planner) in Nanosekunden.

  • COMM_TIMEOUT = 1.0 - Anzahl der Sekunden, die gewartet wird, bis Motion (der Echtzeitteil des Bewegungssteuerungssystems) den Empfang von Nachrichten von Task (dem Nicht-Echtzeitteil des Bewegungssteuerungssystems) bestätigt.

  • `HOMEMOD = ` alternate_homing_module [home_parms=value] Die Variable HOMEMOD ist optional. Wenn sie angegeben ist, wird ein bestimmtes (vom Benutzer erstelltes) Modul anstelle des Standardmoduls (homemod) verwendet. Modulparameter (home_parms) können einbezogen werden, wenn sie von dem angegebenen Modul unterstützt werden. Die Einstellung kann von der Befehlszeile aus mit der Option -m überschrieben werden ($ linuxcnc -h).

2.6. [TASK] Abschnitt

  • TASK = milltask - Gibt den Namen der ausführbaren Datei task an. Die ausführbare Datei "task" führt verschiedene Dinge aus, wie beispielsweise

    • Kommunikation mit den Benutzeroberflächen über NML,

    • mit dem Echtzeit-Bewegungsplaner über einen nicht-HAL-geteilten Speicher kommunizieren und

    • G-Code interpretieren. Derzeit gibt es nur eine ausführbare Aufgabe, die für 99,9 % der Benutzer sinnvoll ist: milltask.

  • CYCLE_TIME = 0.010 - Der Zeitraum in Sekunden, in dem TASK ausgeführt wird. Dieser Parameter wirkt sich auf das Abfrageintervall aus, wenn auf den Abschluss einer Bewegung gewartet wird, wenn ein Pausenbefehl ausgeführt wird und wenn ein Befehl von einer Benutzeroberfläche angenommen wird. In der Regel ist es nicht erforderlich, diese Zahl zu ändern.

2.7. [HAL] Abschnitt

  • HALFILE = beispiel.hal - Führt die Datei beispiel.hal beim Start aus.

    Wenn HALFILE mehrfach angegeben wird, werden die Dateien in der Reihenfolge interpretiert, in der sie in der INI-Datei erscheinen. HAL-Dateien sind beschreibend, die Ausführung dessen, was in HAL-Dateien beschrieben ist, wird durch die Threads ausgelöst, in die Funktionen eingebettet sind, nicht durch das Lesen der HAL-Datei. Fast alle Konfigurationen haben mindestens eine HALFILE, und Steppersysteme haben typischerweise zwei solcher Dateien, d.h. eine zur Spezifikation der allgemeinen Stepperkonfiguration (core_stepper.hal) und eine zur Spezifikation der Pinbelegung der Maschine (xxx_pinout.hal).

    HAL-Dateien, die in der Variablen HALFILES angegeben sind, 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 genannte Datei nicht in diesem INI-Verzeichnis gefunden, wird eine Systembibliothek mit HAL-Dateien durchsucht.

    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.

    Eine HALFILE kann auch als absoluter Pfad angegeben werden (wenn der Name mit einem / Zeichen beginnt). Absolute Pfade werden nicht empfohlen, da ihre Verwendung das Verschieben von Konfigurationen einschränken kann.

  • HALFILE = texample.tcl [arg1 [arg2] …] - Führt die tcl Datei texample.tcl beim Start mit arg1, arg2, etc als ::argv Liste aus. Dateien mit dem Suffix .tcl werden wie oben beschrieben verarbeitet, verwenden aber haltcl zur Verarbeitung. Weitere Informationen finden Sie im Kapitel <cha:haltcl,HALTCL>>.

  • HALFILE = LIB:sys_example.hal - Führt die Systembibliotheksdatei sys_example.hal beim Starten aus. Die explizite Verwendung des Präfixes LIB: bewirkt, dass die Systembibliothek HALFILE verwendet wird, ohne das Verzeichnis der INI-Datei zu durchsuchen.

  • ‚HALFILE = LIB:sys_texample.tcl` [arg1 [arg2 …]]‘ - Führt die Systembibliotheksdatei sys_texample.tcl beim Starten aus. Die explizite Verwendung des Präfixes LIB: bewirkt, dass die Systembibliothek HALFILE verwendet wird, ohne dass das Verzeichnis der INI-Datei durchsucht wird.

HALFILE-Elemente spezifizieren Dateien, die HAL-Komponenten laden und Signalverbindungen zwischen Komponentenpins herstellen. Häufige Fehler sind

  1. Wegfall der addf-Anweisung, die erforderlich ist, um die Funktion(en) einer Komponente zu einem Thread hinzuzufügen,

  2. unvollständige Signal(netz)bezeichner.

Das Weglassen der erforderlichen addf-Anweisungen ist fast immer ein Fehler. Signale umfassen in der Regel eine oder mehrere Eingangsverbindungen und einen einzelnen Ausgang (beides ist jedoch nicht unbedingt erforderlich). Eine Systembibliotheksdatei wird bereitgestellt, um diese Bedingungen zu prüfen und auf stdout und in einer Pop-up-GUI zu melden:

HALFILE = LIB:halcheck.tcl [nopopup]
Anmerkung
Die Zeile LIB:halcheck.tcl sollte die letzte [HAL]HALFILE sein. Geben Sie die Option nopopup an, um die Popup-Meldung zu unterdrücken und einen sofortigen Start zu ermöglichen. Die über eine POSTGUI_HALFILE hergestellen Verbindungen werden nicht geprüft.
  • TWOPASS = ON" - Verwenden Sie die Verarbeitung in zwei Durchgängen zum Laden von HAL-Komponenten. Bei der TWOPASS-Verarbeitung werden die Zeilen der in [HAL]HALFILE angegebenen Dateien in zwei Durchgängen verarbeitet. Im ersten Durchgang (pass0) werden alle HALFILES gelesen und mehrere Auftritte von loadrt- und loadusr-Befehlen kumuliert. Diese kumulierten Ladebefehle werden am Ende von pass0 ausgeführt. Durch diese Akkumulation können Ladezeilen für ein bestimmtes Bauteil mehr als einmal angegeben werden (vorausgesetzt, die verwendeten names= Namen sind bei jeder Verwendung eindeutig). Im zweiten Durchlauf (pass1) werden die HALFILES erneut eingelesen und alle Befehle außer den zuvor ausgeführten Ladebefehlen ausgeführt.

  • TWOPASS = nodelete verbose - Das TWOPASS kann mit jeder Zeichenkette, die nicht Null ist, aktiviert werden, einschließlich der Schlüsselwörter verbose und nodelete. Das Schlüsselwort verbose bewirkt die Ausgabe von Details auf stdout. Das Schlüsselwort nodelete bewahrt temporäre Dateien in /tmp.

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 stehen. Die HALCMD-Zeilen werden nach allen HALFILE-Zeilen ausgeführt.

  • SHUTDOWN = shutdown.hal - Führt die Datei shutdown.hal aus, wenn LinuxCNC beendet wird. Abhängig von den verwendeten Hardware-Treibern, kann dies es möglich machen, Ausgänge auf definierte Werte zu setzen, wenn LinuxCNC normal beendet wird. Da es jedoch keine Garantie dafür gibt, dass diese Datei ausgeführt wird (z.B. im Falle eines Computerabsturzes), ist sie kein Ersatz für eine korrekte physische E-Stop-Kette oder andere Schutzmaßnahmen gegen Softwarefehler.

  • POSTGUI_HALFILE = example2.hal - Führen Sie example2.hal aus, nachdem die GUI ihre HAL-Pins erstellt hat. Einige GUIs erzeugen HAL-Pins und unterstützen die Verwendung einer Postgui-HAL-Datei, um sie zu nutzen. Zu den GUIs, die postgui halffiles unterstützen, gehören Touchy, AXIS, Gscreen und GMOCCAPY.
    Siehe Abschnitt PyVCP with AXIS für weitere Informationen.

  • HALUI = halui - fügt die HAL-Benutzerschnittstellen-Pins hinzu.
    Für weitere Informationen siehe das Kapitel HAL Benutzerschnittstelle (engl. HAL user interface).

2.8. [HALUI] Abschnitt

  • MDI_COMMAND = G53 G0 X0 Y0 Z0 - Ein MDI-Befehl kann mit halui.mdi-command-00 ausgeführt werden. Erhöhen Sie die Zahl für jeden im Abschnitt [HALUI] aufgeführten Befehl. Es ist auch möglich, Unterroutinen (engl. subroutines) zu starten. MDI_COMMAND = o<deineunterroutine> CALL [#<deinevariable>]

2.9. [APPLICATIONS] Abschnitt

LinuxCNC kann andere Anwendungen starten, bevor die angegebene Benutzeroberfläche gestartet wird. Die Anwendungen können nach einer bestimmten Verzögerung gestartet werden, um GUI-abhängige Aktionen zu ermöglichen (wie das Erstellen von GUI-spezifischen HAL-Pins).

  • DELAY = wert - Dauer in Sekunden, die vor dem Start anderer Anwendungen gewartet wird. Eine Verzögerung kann erforderlich sein, wenn eine Anwendung Abhängigkeiten von [HAL]POSTGUI_HALFILE-Aktionen oder von durch das GUI erstellten HAL Pins hat (Standard: DELAY=0).

  • ‚APP =` appname [arg1 [arg2 …]]‘ - Zu startende Anwendung. Diese Angabe kann mehrfach enthalten sein. Der Anwendungsname kann explizit als absoluter oder mit Tilde angegebener Dateiname (erstes Zeichen ist / oder ~), als relativer Dateiname (erste Zeichen des Dateinamens sind ./) oder als Datei im INI-Verzeichnis angegeben werden. Wird keine ausführbare Datei mit diesen Namen gefunden, wird die Anwendung über die Benutzersuche PATH gefunden.
    Beispiele:

    • Simulation von Eingängen an HAL-Pins zum Testen (unter Verwendung von sim_pin — einer einfachen Benutzeroberfläche zum Setzen von Eingängen an Parameter, nicht angeschlossene Pins oder Signale ohne Schreiber):

      APP = sim_pin motion.probe-input halui.abort motion.analog-in-00
    • Rufen Sie halshow mit einer zuvor gespeicherten Beobachtungsliste auf. Da LinuxCNC das Arbeitsverzeichnis auf das Verzeichnis für die INI-Datei setzt, können Sie auf Dateien in diesem Verzeichnis verweisen (Beispiel: my.halshow):

      APP = halshow my.halshow
    • 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

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:
ARC_BLEND_ENABLE = 1
ARC_BLEND_FALLBACK_ENABLE = 0
ARC_BLEND_OPTIMIZATION_DEPTH = 50
ARC_BLEND_GAP_CYCLES = 4
ARC_BLEND_RAMP_FREQ = 100

Der Abschnitt [TRAJ] enthält allgemeine Parameter für das Trajektorienplanungsmodul in motion.

  • ARC_BLEND_ENABLE = 1 - Neuen TP einschalten. Wenn auf 0 gesetzt, verwendet TP parabolisches Blending (1 Segment vorausschauend) (Standardwert: 1).

  • ARC_BLEND_FALLBACK_ENABLE = 0 - Optionaler Rückgriff auf parabolische Blends, wenn die geschätzte Geschwindigkeit höher ist. Diese Schätzung ist jedoch grob, und es scheint, dass die Deaktivierung eine bessere Leistung erzielt (Standardwert: 0).

  • ARC_BLEND_OPTIMIZATION_DEPTH = 50 - Vorausschauende Tiefe in Anzahl der Segmente.

    Um dies ein wenig zu erweitern, können Sie diesen Wert einigermaßen willkürlich wählen. Hier’s eine Formel, um zu schätzen, wie viel Tiefe Sie für eine bestimmte Konfiguration benötigen:

    # n = v_max / (2.0 * a_max * t_c)
    # wobei:
    # n = Optimierungstiefe
    # v_max = maximale Achsengeschwindigkeit (UU / sec)
    # a_max = maximale Achsenbeschleunigung (UU / sec)
    # t_c = Servo-Periode (Sekunden)

    So würde eine Maschine mit einer maximalen Achsengeschwindigkeit von 10 IPS, einer maximalen Beschleunigung von 100 IPS2 und einer Servoperiode von 0,001 s benötigen:

    10 / (2,0 * 100 * 0,001) = 50 Segmente, um immer die maximale Geschwindigkeit entlang der schnellsten Achse zu erreichen.

    In der Praxis ist die Einstellung dieser Zahl nicht so wichtig, da die Vorausschau selten die volle Tiefe benötigt, es sei denn, Sie haben viele sehr kurze Segmente. Wenn Sie beim Testen merkwürdige Verlangsamungen bemerken und nicht herausfinden können, woher sie kommen, versuchen Sie zunächst, diese Tiefe mit Hilfe der obigen Formel zu erhöhen.

    Wenn Sie immer noch seltsame Verlangsamungen feststellen, kann das daran liegen, dass Sie kurze Segmente im Programm haben. Wenn dies der Fall ist, versuchen Sie, eine kleine Toleranz für die naive CAM-Erkennung hinzuzufügen. Eine gute Faustregel ist diese:

    # min_length ~= v_req * t_c
    # wobei:
    # v_req = gewünschte Geschwindigkeit in UU / sec
    # t_c = Servoperiode (Sekunden)

    Wenn Sie eine Bahn mit 1 IPS = 60 IPM fahren wollen und Ihre Servoperiode 0,001 s 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.

    Bei einer Kreisbogenüberblendung bleiben oft kurze Liniensegmente zwischen den Überblendungen übrig. Da die Geometrie kreisförmig sein muss, können wir nicht eine ganze Linie überblenden, wenn die nächste etwas kürzer ist. Da der Trajektorienplaner jedes Segment mindestens einmal berühren muss, bedeutet dies, dass sehr kleine Segmente die Dinge erheblich verlangsamen. Meine Lösung für dieses Problem besteht darin, das kurze Segment zu "verbrauchen", indem ich es zu einem Teil des Überblendungsbogens mache. Da die Linie und die Überblendung ein einziges Segment sind, müssen wir nicht langsamer werden, um das sehr kurze Segment zu treffen. Wahrscheinlich brauchen Sie diese Einstellung nicht zu ändern. * ARC_BLEND_RAMP_FREQ = 20 - Dies ist eine cutoff Frequenz für die Verwendung von rampenförmigen Geschwindigkeiten.

    Ramped velocity bedeutet in diesem Fall eine konstante Beschleunigung über das gesamte Segment. Dies ist weniger optimal als ein trapezförmiges Geschwindigkeitsprofil, da die Beschleunigung nicht maximiert wird. Wenn das Segment jedoch kurz genug ist, bleibt nicht genug Zeit, um viel zu beschleunigen, bevor wir das nächste Segment erreichen. Erinnern Sie sich an die kurzen Streckenabschnitte aus dem vorherigen Beispiel. Da es sich um Linien handelt, gibt es keine Kurvenbeschleunigung, wir können also bis zur gewünschten Geschwindigkeit beschleunigen. Wenn sich diese Linie jedoch zwischen zwei Bögen befindet, muss sie schnell wieder abbremsen, um innerhalb der Höchstgeschwindigkeit des nächsten Segments zu liegen. Das bedeutet, dass wir eine Beschleunigungsspitze und dann eine Abbremsspitze haben, was zu einem großen Ruck führt und nur einen geringen Leistungsgewinn bringt. Mit dieser Einstellung lässt sich dieses Ruckeln bei kurzen Segmenten vermeiden.

    Grundsätzlich gilt: Wird ein Segment in weniger als 1 / ARC_BLEND_RAMP_FREQ abgeschlossen, dann wird kein trapezförmiges Geschwindigkeitsprofil für dieses Segment verwendet, sondern eine konstante Beschleunigung. (Die Einstellung ARC_BLEND_RAMP_FREQ = 1000 ist gleichbedeutend mit der Verwendung einer trapezförmigen Beschleunigung, wenn die Servoschleife 1 kHz hat).

    Sie können den schlimmsten Leistungsverlust charakterisieren, indem Sie die maximale Geschwindigkeit eines trapezförmiges Profils vergleichen mit der durch eine Rampe zu erreichenden:

    # v_ripple = a_max / (4.0 * f)
    # wobei:
    # v_ripple = durchschnittliche Geschwindigkeit "Verlust" aufgrund von Rampen
    # a_max = maximale Achsenbeschleunigung
    # f = Grenzfrequenz aus INI

    Für die oben genannte Maschine beträgt die Restwelligkeit bei einer Grenzfrequenz von 20 Hz 100 / (4 * 20) = 1,25 IPS. Dies erscheint hoch, aber bedenken Sie, dass es sich nur um eine Worst-Case-Schätzung handelt. In Wirklichkeit wird das trapezförmige Bewegungsprofil durch andere Faktoren wie die normale Beschleunigung oder die gewünschte Geschwindigkeit begrenzt, so dass der tatsächliche Leistungsverlust viel geringer sein dürfte. Eine Erhöhung der Grenzfrequenz kann mehr Leistung herausholen, macht aber die Bewegung aufgrund von Beschleunigungssprüngen unruhiger. Ein Wert im Bereich von 20 Hz bis 200 Hz sollte für den Anfang angemessen sein.

Und schließlich können Sie einen Werkzeugweg mit vielen kleinen, engen Kurven nicht beschleunigen, da Sie durch die Kurvenbeschleunigung eingeschränkt sind.

  • SPINDLES = 3 - Die Anzahl der zu unterstützenden Spindeln. Diese Zahl muss unbedingt mit dem Parameter "num_spindles" übereinstimmen, der an das Bewegungsmodul übergeben wird.

  • COORDINATES = X Y Z - Die Namen der gesteuerten Achsen. Nur X, Y, Z, A, B, C, U, V, W sind gültig. Nur die in COORDINATES genannten Achsen werden im G-Code akzeptiert. Es ist erlaubt, einen Achsennamen mehr als einmal zu schreiben (z.B. X Y Y Z für eine Gantry-Maschine). Bei der üblichen trivkins-Kinematik werden die Gelenknummern der Reihe nach gemäß dem trivkins-Parameter coordinates= vergeben. Für trivkins coordinates=xz entspricht joint0 also X und joint1 entspricht Z. Informationen zu trivkins und anderen Kinematikmodulen finden Sie in der Manpage Kinematics ($ man kins).

  • LINEAR_UNITS = <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).

  • ANGULAR_UNITS = <units> - Gibt die Maschineneinheiten für Rotationsachsen an. Mögliche Auswahlen sind deg, degree (360 pro Kreis), rad, radian (2*π pro Kreis), grad, oder gon (400 pro Kreis). Dies hat keinen Einfluss auf die Winkeleinheiten des NC-Codes. In RS274NGC werden die A-, B- und C-Wörter immer in Grad ausgedrückt.

  • DEFAULT_LINEAR_VELOCITY = 0.0167 - Die anfängliche Geschwindigkeit für Jogs von Linearachsen, in Maschineneinheiten pro Sekunde. Der in Axis angezeigte Wert entspricht den Maschineneinheiten pro Minute.

  • DEFAULT_LINEAR_ACCELERATION = 2.0 - In Maschinen mit nicht trivialer Kinematik, die Beschleunigung für "teleop" (kartesischer Raum) Jogging, in Maschineneinheiten pro Sekunde pro Sekunde.

  • MAX_LINEAR_VELOCITY = 5.0 - Die maximale Geschwindigkeit für eine beliebige Achse oder koordinierte Bewegung, in Maschineneinheiten pro Sekunde. Der angezeigte Wert entspricht 300 Einheiten pro Minute.

  • MAX_LINEAR_ACCELERATION = 20.0 - Die maximale Beschleunigung für jede Achse oder koordinierte Achsenbewegung, in Maschineneinheiten pro Sekunde.

  • POSITION_FILE = position.txt - Wenn auf einen nicht leeren Wert gesetzt, werden die Gelenkpositionen zwischen den Läufen in dieser Datei gespeichert. Dadurch kann die Maschine mit denselben Koordinaten starten, die sie beim Herunterfahren hatte. Dabei wird davon ausgegangen, dass die Maschine im ausgeschalteten Zustand nicht bewegt wurde. Wenn nicht gesetzt, sind gemeinsame Positionen nicht gespeichert und wird bei 0 beginnen jedes Mal, wenn LinuxCNC gestartet wird. Dies kann auf kleineren Maschinen ohne Home-Schalter helfen. Bei Verwendung der Mesa Resolver-Schnittstelle kann diese Datei verwendet werden, um absolute Encoder zu emulieren und die Notwendigkeit für die Referenzfahrt (ohne Verlust der Genauigkeit) zu beseitigen. Siehe die hostmot2 Manpage für weitere Details.

  • NO_FORCE_HOMING = 1 - Das Standardverhalten ist für LinuxCNC, um den Benutzer zu zwingen, eine Referenzfahrt durchzuführen, bevor ein MDI-Befehl oder ein Programm ausgeführt wird. Normalerweise ist nur Jogging vor der Referenzfahrt erlaubt. Bei Konfigurationen, die Identitätskinematiken verwenden, erlaubt die Einstellung NO_FORCE_HOMING = 1 dem Benutzer, MDI-Bewegungen auszuführen und Programme zu starten, ohne die Maschine zuerst zu referenzieren. Bei Schnittstellen, die Identitätskinematiken ohne Referenzfahrtmöglichkeit verwenden, muss diese Option auf 1 gesetzt werden.

Warnung

LinuxCNC kennt die Grenzen (engl. limits) der Gelenke nicht, wenn NO_FORCE_HOMING = 1 gesetzt.

  • HOME = 0 0 0 0 0 0 0 0 - Welt-Referenzpunkt-(engl. home)-Position, die für Kinematik-Module benötigt wird, um die Weltkoordinaten mit kinematicsForward() berechnen, wenn sie vom Joint- in den Teleop-Modus wechseln. Es können bis zu neun Koordinatenwerte (X, Y, Z, A, B, C, U, V, W) angegeben werden, unbenutzte Nachkommastellen können weggelassen werden. Dieser Wert wird nur für Maschinen mit nicht trivialer Kinematik verwendet. Bei Maschinen mit trivialer Kinematik (Fräsmaschinen, Drehmaschinen, Gantry-Typen) wird dieser Wert ignoriert. Note: Die Hexapod-Konfiguration von sim erfordert einen Wert ungleich Null für die Z-Koordinate.

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

  • NO_PROBE_HOME_ERROR = 0 - Erlaubt die Umgehung der Prüfung, ob die Sonde ausgelöst wurde, während die Referenzfahrt läuft.

2.11. [KINS] Abschnitt

  • JOINTS = 3 - Gibt die Anzahl der Gelenke (Motoren) im System an. Eine Trivkins XYZ-Maschine mit einem Motor pro Achse hat beispielsweise 3 Gelenke. Eine Gantry-Maschine mit je einem Motor auf zwei Achsen und zwei Motoren auf der dritten Achse hat 4 Gelenke. (Diese Konfigurationsvariable kann von einer Benutzeroberfläche verwendet werden, um die Anzahl der Gelenke (num_joints) zu setzen, die dem Bewegungsmodul (motmod) angegeben wurde.)

  • KINEMATICS = trivkins - Geben Sie ein Kinematikmodul für das Bewegungsmodul an. GUIs können diese Variable verwenden, um die loadrt-Zeile in HAL-Dateien für das motmod-Modul anzugeben. Weitere Informationen zu Kinematikmodulen finden Sie in der Manpage: $ man kins.

2.12. [AXIS_<letter>] Abschnitt

Der <letter> (engl. Buchstabe) gibt einen der folgenden Buchstaben an: X Y Z A B C U V W

  • TYPE = LINEAR - The type of this axis, either LINEAR or ANGULAR. Required if this axis is not a default axis type. The default axis types are X,Y,Z,U,V,W = LINEAR and A,B,C = ANGULAR. This setting is effective with the AXIS GUI but note that other GUI’s may handle things differently.

  • MAX_VELOCITY = 1.2 - Maximale Geschwindigkeit für diese Achse in <sub:ini:sec:traj,Maschineneinheiten>> pro Sekunde.

  • MAX_ACCELERATION = 20.0 - Maximale Beschleunigung für diese Achse in Maschineneinheiten pro Sekunde zum Quadrat.

  • MIN_LIMIT = -1000 - Der minimale Grenzwert (Softlimit) für die Achsenbewegung, in Maschineneinheiten. Wenn dieser Grenzwert überschritten wird, bricht die Steuerung die Achsenbewegung ab. Die Achse muss referenziert werden, bevor MIN_LIMIT in Kraft tritt. Für eine Rundachse (Typ A,B,C) mit unbegrenzter Drehung, für die im Abschnitt [AXIS_<letter>] kein MIN_LIMIT angegeben ist, wird ein Wert von -1e99 verwendet.

  • MAX_LIMIT = 1000 - Der maximale Grenzwert (Softlimit) für die Achsenbewegung in Maschineneinheiten. Wenn dieser Grenzwert überschritten wird, bricht die Steuerung die Achsenbewegung ab. Die Achse muss referenziert werden, bevor MAX_LIMIT in Kraft tritt. Für eine Rundachse (Typ A,B,C) mit unbegrenzter Drehung, für die im Abschnitt [AXIS_<letter>] kein MAX_LIMIT angegeben ist, wird ein Wert von 1e99 verwendet.

  • WRAPPED_ROTARY = 1 - Wenn dies für eine ANGULAR-Achse auf 1 gesetzt wird, bewegt sich die Achse um 0-359,999 Grad. Positive Zahlen bewegen die Achse in eine positive Richtung und negative Zahlen bewegen die Achse in eine negative Richtung.

  • LOCKING_INDEXER_JOINT = 4 - Dieser Wert wählt ein Gelenk aus, das für einen verriegelnden Indexer für die angegebene Achse <Buchstabe> verwendet wird. In diesem Beispiel ist das Gelenk 4, was der B-Achse für ein XYZAB-System mit Trivkins-Kinematik (Identität) entsprechen würde. Bei einer G0-Bewegung für diese Achse wird eine Entriegelung mit dem joint.4.unlock-Pin eingeleitet, dann wird auf den joint.4.is-unlocked-Pin gewartet und dann das Gelenk mit der für dieses Gelenk vorgesehenen Eilgeschwindigkeit bewegt. Nach der Bewegung wird der joint.4.unlock auf false gesetzt und die Bewegung wartet, bis joint.4.is-unlocked auf false gesetzt wird. Die Bewegung mit anderen Gelenken ist nicht erlaubt, wenn ein gesperrtes Drehgelenk bewegt wird. Um die Entriegelungsstifte zu erstellen, verwenden Sie den Parameter motmod:

    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 HAL-Eingangsstiften für externe Achsen-Offsets:

    axis.<letter>.eoffset-enable
    axis.<letter>.eoffset-count
    axis.<letter>.eoffset-scale

Siehe das Kapitel: cha:external-offsets,'External Axis Offsets>> für Informationen zur Verwendung.

2.13. [JOINT_<num>] Abschnitte

Die <num> gibt die Gelenknummer 0 … (num_joints-1) an. Der Wert von num_joints wird festgelegt durch [KINS]JOINTS=.

Die Abschnitte [JOINT_0], [JOINT_1], usw. enthalten allgemeine Parameter für die einzelnen Komponenten im Gelenksteuerungsmodul. Die Namen der Gelenkabschnitte beginnen bei 0 und reichen bis zur Anzahl der im Eintrag [KINS]JOINTS angegebenen Gelenke minus 1.

Typischerweise (bei Systemen, die trivkins kinematics verwenden, besteht eine 1:1-Entsprechung zwischen einem Gelenk und einem Achsenkoordinatenbuchstaben):

  • JOINT_0 = X

  • JOINT_1 = Y

  • JOINT_2 = Z

  • JOINT_3 = A

  • JOINT_4 = B

  • JOINT_5 = C

  • JOINT_6 = U

  • JOINT_7 = V

  • JOINT_8 = W

Andere Kinematikmodule mit Identitätskinematik sind verfügbar, um Konfigurationen mit partiellen Achsensätzen zu unterstützen. Bei der Verwendung von trivkins mit coordinates=XZ sind die Beziehungen zwischen den Gelenkachsen beispielsweise wie folgt:

  • JOINT_0 = X

  • JOINT_1 = Z

Weitere Informationen über Kinematikmodule finden Sie in der Manpage kins (auf dem UNIX-Terminal geben Sie man kins ein).

  • TYPE = LINEAR - Die Art der Verbindung, entweder LINEAR oder ANGULAR (engl. für Winkel-bestimmt).

  • UNITS = INCH - Falls angegeben, hat diese Einstellung Vorrang vor der zugehörigen [TRAJ] UNITS(engl. Einheiten)-Einstellung, z.B. [TRAJ]LINEAR_UNITS wenn der TYPE (engl. Typ) dieses Gelenks LINEAR ist, [TRAJ]ANGULAR_UNITS wenn der TYPE 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.

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

  • COMP_FILE = file.extension - Die Kompensationsdatei besteht aus einer Abbildung der Positionsinformationen für das Gelenk. Die Werte der Kompensationsdatei sind in Maschineneinheiten angegeben. Jeder Satz von Werten steht in einer Zeile, getrennt durch ein Leerzeichen. Der erste Wert ist der Nennwert (die befohlene Position). Der zweite und dritte Wert hängt von der Einstellung von COMP_FILE_TYPE ab. Punkte, die zwischen den Nennwerten liegen, werden zwischen den beiden Nennwerten interpoliert. Die Kompensationsdateien müssen mit dem kleinsten Sollwert beginnen und in aufsteigender Reihenfolge bis zum größten Wert der Sollwerte geführt werden. Dateinamen sind Groß-und Kleinschreibung und können Buchstaben und / oder Zahlen enthalten. Derzeit ist die Grenze innerhalb LinuxCNC für 256 Triplets pro Gelenk.

    Wenn COMP_FILE für ein Gelenk angegeben ist, wird BACKLASH nicht verwendet.

  • COMP_FILE_TYPE = 0 oder 1 - Bestimmt den Typ der Kompensationsdatei. Der erste Wert ist die nominale (befohlene) Position für beide Typen.
    Ein COMP_FILE_TYPE muss für jede COMP_FILE angegeben werden.

    • Typ 0: Der zweite Wert gibt die Ist-Position bei Bewegung des Gelenks in positiver Richtung an (steigender Wert). Der dritte Wert gibt die Ist-Position bei Bewegung des Gelenks in negativer Richtung an (fallender Wert).

      Typ 0 Beispiel
      -1.000 -1.005 -0.995
      0.000 0.002 -0.003
      1.000 1.003 0.998
    • Typ 1: Der zweite Wert gibt die positive Abweichung vom Sollwert bei Fahrt in positiver Richtung an. Der dritte Wert gibt die negative Abweichung vom Sollwert an, während die Fahrt in negativer Richtung erfolgt.

      Typ 1 Beispiel
      -1.000 0.005 -0.005
      0.000 0.002 -0.003
      1.000 0.003 -0.004
  • MIN_LIMIT = -1000 - Die Mindestgrenze für die Gelenkbewegung in Maschineneinheiten. Wenn diese Grenze erreicht ist, bricht die Steuerung die Gelenkbewegung ab. Für ein Drehgelenk mit unbegrenzter Drehung, für das kein MIN_LIMIT im Abschnitt [JOINT_N] angegeben ist, wird der Wert -1e99 verwendet.

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

Anmerkung

Die Einstellungen [JOINT_N]MIN_LIMIT/MAX_LIMIT werden beim Joggen im Gelenkmodus vor der Referenzfahrt erzwungen. Nach der Referenzfahrt werden die Koordinatengrenzen [AXIS_L]MIN_LIMIT/MAX_LIMIT als Beschränkungen für die Achsenbewegung (Koordinatenbuchstaben) und für die Bahnplanung bei G-Code-Bewegungen (Programme und MDI-Befehle) verwendet. Der Trajektorienplaner arbeitet im kartesischen Raum (XYZABCUVW) und hat keine Informationen über die Bewegung von Gelenken, die von jedem Kinematikmodul implementiert werden. Es ist möglich, dass bei G-Code, der die Positionsgrenzen der Trajektorienplanung einhält, Verletzungen der Gelenkgrenzen auftreten, wenn nicht identische Kinematiken verwendet werden. Das Bewegungsmodul erkennt immer Verletzungen der Gelenkpositionsgrenzen und Fehler, wenn sie während der Ausführung von G-Code-Befehlen auftreten. Siehe dazu auch GitHub issue #97.

  • MIN_FERROR = 0.010 - Dies ist der Wert in Maschineneinheiten, um den das Gelenk bei sehr niedrigen Geschwindigkeiten von der befohlenen Position abweichen darf. Wenn MIN_FERROR kleiner als FERROR ist, erzeugen die beiden eine Rampe von Fehlerauslösepunkten. Man kann sich dies wie ein Diagramm vorstellen, bei dem eine Dimension die Geschwindigkeit und die andere die zulässige Schleppabweichung ist. Mit zunehmender Geschwindigkeit steigt auch der Betrag des Schleppfehlers in Richtung des FERROR-Wertes.

  • FERROR = 1.0 - FERROR ist der maximal zulässige Schleppfehler in Maschineneinheiten. Übersteigt die Differenz zwischen Soll- und Ist-Position diesen Wert, deaktiviert der Regler die Servoberechnungen, setzt alle Ausgänge auf 0.0 und schaltet die Verstärker ab. Wenn MIN_FERROR in der INI-Datei vorhanden ist, werden geschwindigkeitsproportionale Schleppfehler verwendet. In diesem Fall ist der maximal zulässige Schleppfehler proportional zur Geschwindigkeit, wobei FERROR für die mit [TRAJ]MAX_VELOCITY eingestellte Geschwindigkeit gilt und die Schleppfehler für langsamere Geschwindigkeiten proportional kleiner sind. Der maximal zulässige Schleppfehler wird immer größer sein als MIN_FERROR. Dadurch wird verhindert, dass kleine Schleppfehler bei stillstehenden Achsen die Bewegung ungewollt abbrechen. Kleine Schleppfehler werden aufgrund von Vibrationen usw. immer vorhanden sein.

  • LOCKING_INDEXER = 1 - Gibt an, dass das Gelenk als verriegelnder Indexer verwendet wird.

2.13.1. Referenzfahrt (engl. homing)

Diese Parameter beziehen sich auf die Ausführung der Referenzfahrt (engl. homing), für eine bessere Erklärung lesen Sie das Referenzfahrt-Konfiguration Kapitel.

  • HOME = 0.0 - Die Position, die das Gelenk nach Abschluss der Referenzfahrt anfahren wird.

  • HOME_OFFSET = 0.0 - Die gemeinsame Position des Referenzschalters oder Indeximpulses, in <sub:ini:sec:traj,Maschineneinheiten>>. Wenn der Referenzpunkt während der Referenzfahrt gefunden wird, ist dies die Position, die diesem Punkt zugewiesen wird. Bei gemeinsamer Nutzung von Referenzfahrt- und Endschaltern und bei Verwendung einer Referenzfahrt-Sequenz, die den Referenzfahrt-/Endschalter im umgeschalteten Zustand belässt, kann der Referenzfahrt-Offset verwendet werden, um die Position des Referenzfahrtschalters auf einen anderen Wert als 0 festzulegen, wenn die Referenzfahrtposition 0 sein soll.

  • HOME_SEARCH_VEL = 0.0 - Anfängliche Referenzfahrtgeschwindigkeit in Maschineneinheiten pro Sekunde. Das Vorzeichen gibt die Fahrtrichtung an. Ein Wert von Null bedeutet, dass die aktuelle Position als Ausgangsposition für die Maschine angenommen wird. Wenn Ihre Maschine keine Home-Schalter hat, sollten Sie diesen Wert auf Null belassen.

  • 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 Home-Latch-Position zur Home-Position. Wird der Wert 0 belassen oder ist er nicht im Gelenk enthalten, wird die Eilgeschwindigkeit verwendet. Muss eine positive Zahl sein.

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

  • HOME_INDEX_NO_ENCODER_RESET = NO - Verwenden Sie YES, wenn der Encoder, der für dieses Gelenk verwendet wird, seinen Zähler nicht zurücksetzt, wenn ein Indeximpuls nach der Aktivierung des Gelenk index_enable HAL-Pins erkannt wird. Gilt nur für HOME_USE_INDEX = YES.

  • HOME_IGNORE_LIMITS = NO - Wenn Sie den Endschalter als Referenzfahrtschalter und den Endschalter verwenden, sollte dies auf YES gesetzt werden. Wenn diese Einstellung auf YES gesetzt ist, wird der Endschalter für dieses Gelenk bei der Referenzfahrt ignoriert. Sie müssen Ihre Referenzfahrt so konfigurieren, dass sich der Referenzfahrt-/Endschalter am Ende der Referenzfahrt nicht im umgeschalteten Zustand befindet, da Sie sonst nach der Referenzfahrt einen Endschalterfehler erhalten.

  • HOME_IS_SHARED = <n> - Wenn der Home-Eingang von mehr als einem Gelenk geteilt wird, setzen Sie <n> auf 1, um zu verhindern, dass die Referenzfahrt gestartet wird, wenn einer der geteilten Schalter bereits geschlossen ist. Setzen Sie <n> auf 0, um eine Referenzfahrt zu ermöglichen, wenn ein Schalter geschlossen ist.

  • HOME_ABSOLUTE_ENCODER = 0 | 1 | 2 - Wird verwendet, um anzuzeigen, dass das Gelenk einen Absolutwertgeber verwendet. Bei einer Anforderung zur Referenzfahrt wird der aktuelle Gelenkwert auf den HOME_OFFSET Wert gesetzt. Wenn die HOME_ABSOLUTE_ENCODER Einstellung 1 ist, macht die Maschine die übliche Endbewegung zum HOME Wert. Wenn die HOME_ABSOLUTE_ENCODER Einstellung 2 ist, wird keine solche abschließende Bewegung ausgeführt.

  • HOME_SEQUENCE = <n> - Definiert die "Home All" Sequenz, d.h. die Fahrt zum Referenzpunkt für alle Achsen. <n> muss bei 0 oder 1 oder -1 beginnen. Zusätzliche Sequenzen können mit um 1 aufsteigenden Zahlen (in absoluten Werten) angegeben werden. Das Überspringen von Sequenznummern ist nicht erlaubt. Bei Weglassen einer HOME_SEQUENCE wird das Gelenk von der Funktion "Home All" nicht referenziert. Mehrere Gelenke können gleichzeitig referenziert werden, indem man die gleiche Sequenznummer für mehrere Gelenke angibt. Eine negative Sequenznummer wird verwendet, um die letzte Bewegung für alle Gelenke mit dieser (negativen oder positiven) Sequenznummer zu verschieben. Für weitere Informationen siehe: HOME SEQUENCE.

  • VOLATILE_HOME = 0 - Wenn aktiviert (auf 1 gesetzt), wird das Gelenk bei ausgeschalteter Maschinenstromversorgung oder bei eingeschaltetem Not-Halt nicht geortet. Dies ist nützlich, wenn Ihre Maschine über Home-Schalter verfügt und keine Positionsrückmeldung hat, wie z. B. bei einer schritt- und richtungsgesteuerten Maschine.

2.13.2. Servos

Diese Parameter sind relevant für Gelenke, die von Servos gesteuert werden.

Warnung
Das Folgende sind benutzerdefinierte INI-Datei-Einträge, die Sie in einer Beispiel-INI-Datei oder einer vom Assistenten generierten Datei finden können. Diese werden nicht von der LinuxCNC-Software verwendet. Sie sind nur dazu da, alle Einstellungen an einem Ort zu speichern. Für weitere Informationen über benutzerdefinierte INI-Datei-Einträge siehe den Unterabschnitt <sub:ini:custom,Benutzerdefiniert Abschnitte und Variablen>>.

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.

    Dies wird oft auf einen Abstand eingestellt, der 1, 1,5, 2 oder 3 Encoderzählungen entspricht, aber es gibt keine strengen Regeln. Lockere (größere) Einstellungen ermöglichen ein geringeres Hunting' des Servos auf Kosten einer geringeren Genauigkeit. Engere (kleinere) Einstellungen versuchen eine höhere Genauigkeit auf Kosten von mehr Servo Hunting. Ist es wirklich genauer, wenn es auch unsicherer ist? Generell ist es gut, das Hunting' der Servos zu vermeiden oder zumindest zu begrenzen, wenn Sie können.

    Seien Sie vorsichtig, wenn Sie unter 1 Geberzahl gehen, da Sie einen Zustand schaffen können, in dem Ihr Servo an keiner Stelle zufrieden ist. Dies kann über Hunting (langsam) bis hin zu Nervös (schnell) und sogar zu Quietschen gehen, was leicht mit Oszillation, verursacht durch unsachgemäße Abstimmung, verwechselt werden kann. Es ist besser, anfangs ein oder zwei Zählzeiten weniger zu spielen, zumindest bis man die erste Grobabstimmung hinter sich hat.

    Beispiel für die Berechnung von Maschineneinheiten pro Encoderimpuls zur Bestimmung des DEADBAND-Wertes:

    images/encoder-counts-math.png
  • BIAS = 0.000 - Dies wird von hm2-servo und einigen anderen verwendet. Bias ist ein konstanter Betrag, der zum Ausgang addiert wird. In den meisten Fällen sollte er auf Null belassen werden. Er kann jedoch manchmal nützlich sein, um Offsets in Servoverstärkern zu kompensieren oder das Gewicht eines Objekts auszugleichen, das sich vertikal bewegt. Der Bias (auch Vorspannung) wird ausgeschaltet, wenn die PID-Schleife deaktiviert ist, genau wie alle anderen Komponenten des Ausgangs.

  • P = 50 - Die proportionale Verstärkung für das Gelenkservo. Dieser Wert multipliziert den Fehler zwischen befohlener und tatsächlicher Position in Maschineneinheiten, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die P-Verstärkung sind Volt pro Maschineneinheit, z. B. images/p-term.png

  • I = 0 - Die integrale Verstärkung für das Gelenkservo. Der Wert multipliziert den kumulativen Fehler zwischen befohlener und tatsächlicher Position in Maschineneinheiten, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die I-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. images/i-term.png

  • D = 0 - Die Ableitungsverstärkung für das Gelenkservo. Der Wert multipliziert die Differenz zwischen dem aktuellen und dem vorherigen Fehler, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die D-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. images/i-term.png

  • 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. images/p-term.png

  • 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. images/i-term.png

  • 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. images/ff2.png

  • OUTPUT_SCALE = 1.000

  • OUTPUT_OFFSET = 0.000

    Diese beiden Werte sind die Skalierungs- und Offset-Faktoren für den gemeinsamen Ausgang zu den Motorverstärkern.

    Der zweite Wert (Offset) wird vom berechneten Ausgang (in Volt) subtrahiert und durch den ersten Wert (Skalierungsfaktor) geteilt, bevor er in die D/A-Wandler geschrieben wird. Die Einheiten für den Skalenwert sind in echten Volt pro DAC-Ausgangsspannung. Die Einheiten für den Offset-Wert sind in Volt. Diese können zur Linearisierung eines DAC verwendet werden. Insbesondere beim Schreiben von Ausgängen, die LinuxCNC erste wandelt die gewünschte Ausgabe in Quasi-SI-Einheiten zu rohen Aktor Werte, z. B. Volt für einen Verstärker DAC. Diese Skalierung sieht wie folgt aus: images/output-offset.png

    Der Wert für die Skalierung kann analytisch ermittelt werden, indem eine Einheitenanalyse durchgeführt wird, d. h. die Einheiten sind [Ausgangs-SI-Einheiten]/[Aktuatoreinheiten]. Beispiel: Bei einer Maschine mit einem Verstärker im Geschwindigkeitsmodus ergibt 1 V eine Geschwindigkeit von 250 mm/s.

    images/scale-math.png

    Beachten Sie, dass die Einheiten des Offsets in Maschineneinheiten angegeben sind, z. B. mm/s, und dass sie von den Sensormesswerten abgezogen werden. Den Wert für diesen Offset erhalten Sie, indem Sie den Wert Ihres Ausgangs finden, der 0,0 für den Aktor-/Stellgliedausgang ergibt. Bei einem linearisierten DAC ist dieser Offset normalerweise 0,0.

    Skalierung und Offset können auch zur Linearisierung des DAC verwendet werden. Diese Werte spigeln dann die kombinierten Auswirkungen von Verstärkung, Nicht-Linearität des DAC, DAC-Einheiten usw. wider.

    Gehen Sie dazu folgendermaßen vor.

    1. Erstellen Sie eine Kalibrierungstabelle für den Ausgang, indem Sie den DAC mit einer gewünschten Spannung betreiben und das Ergebnis messen.

    2. Führen Sie eine lineare Anpassung nach dem Prinzip der kleinsten Quadrate durch, um die Koeffizienten a und b so zu ermitteln, dass images/calibration-1.png

    3. Beachten Sie, dass wir eine Rohausgabe wünschen, bei der das gemessene Ergebnis mit der befohlenen Ausgabe identisch ist. Das bedeutet

      1. images/calibration-2.png

      2. images/calibration-3.png

    4. Folglich können die Koeffizienten a und b aus der linearen Anpassung direkt als Skala und Offset für den Regler verwendet werden.

    In der folgenden Tabelle finden Sie ein Beispiel für Spannungsmessungen.

    Tabelle 1. Messungen der Ausgangsspannung
    Roh Gemessen

    -10

    -9.93

    -9

    -8.83

    0

    -0.03

    1

    0.96

    9

    9.87

    10

    10.87

  • MAX_OUTPUT = 10 - Der maximale Wert für den Ausgang der PID-Kompensation, der in den Motorverstärker geschrieben wird, in Volt. Der berechnete Ausgangswert wird auf diesen Grenzwert geklemmt. Der Grenzwert wird vor der Skalierung auf rohe Ausgabeeinheiten angewendet. Der Wert wird symmetrisch sowohl auf die Plus- als auch auf die Minusseite angewandt.

  • INPUT_SCALE = 20000 - in Beispielkonfigurationen

  • ENCODER_SCALE = 20000 - in PnCconf erstellten Konfigurationen

Gibt die Anzahl der Impulse an, die einer Bewegung um eine Maschineneinheit entspricht, wie im Abschnitt [TRAJ] eingestellt. Bei einem linearen Gelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS. Für ein Winkelgelenk entspricht eine Einheit der Einstellung in ANGULAR_UNITS. Eine zweite Zahl, falls angegeben, wird ignoriert. Bei einem Drehgeber mit 2000 Umdrehungen pro Minute, einem Getriebe mit 10 Umdrehungen pro Zoll und den gewünschten Einheiten in Zoll ergibt sich zum Beispiel Folgendes:

images/encoder-scale.png

2.13.3. Schrittmotoren

Diese Parameter sind relevant für Gelenke, die von Schrittmotoren gesteuert werden.

Warnung
Das Folgende sind benutzerdefinierte INI-Datei-Einträge, die Sie in einer Beispiel-INI-Datei oder einer vom Assistenten generierten Datei finden können. Diese werden nicht von der LinuxCNC-Software verwendet und sind nur dazu gedacht, alle Einstellungen an einem Ort zu platzieren. Weitere Informationen über benutzerdefinierte INI-Datei-Einträge finden Sie im Unterabschnitt Custom Sections and Variables.

Die folgenden Elemente können von einer Schrittgenerator (engl. StepGen)-Komponente verwendet werden.

  • SCALE = 4000 - in Beispielkonfigurationen

  • STEP_SCALE = 4000 - in PnCconf erstellten Konfigurationen

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:

images/stepper-scale.png
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 der Impulse an, die einer Bewegung um eine Maschineneinheit entspricht, wie im Abschnitt [TRAJ] festgelegt. Bei einem linearen Gelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS. Für ein Winkelgelenk entspricht eine Einheit der Einstellung in ANGULAR_UNITS. Eine zweite Zahl, falls angegeben, wird ignoriert. Bei einem Drehgeber mit 2000 Umdrehungen pro Minute, einem Getriebe mit 10 Umdrehungen pro Zoll und den gewünschten Einheiten in Zoll ergibt sich zum Beispiel Folgendes:

images/encoder-scale.png
  • STEPGEN_MAXACCEL = 21.0 - Beschleunigungsgrenze für den Schrittgenerator. Dieser Wert sollte 1% bis 10% größer sein als die gemeinsame MAX_ACCELERATION. Dieser Wert verbessert die Abstimmung des StepGen’s "Positionsschleife". Wenn Sie einem Gelenk eine Spielkompensation hinzugefügt haben, sollte dieser Wert 1,5 bis 2 Mal größer als MAX_ACCELERATION sein.

  • STEPGEN_MAXVEL = 1.4 - Ältere Konfigurationsdateien haben auch eine Geschwindigkeitsgrenze für den Schrittgenerator. Falls angegeben, sollte sie ebenfalls 1 % bis 10 % größer sein als die gemeinsame MAX_VELOCITY. Nachfolgende Tests haben gezeigt, dass die Verwendung von STEPGEN_MAXVEL die Abstimmung der Positionsschleife von StepGen nicht verbessert.

2.14. [SPINDLE_<num>] Abschnitt(e)

Die <num> spezifiziert die Spindelnummer 0 … (num_spindles-1)
Der Wert von num_spindles wird durch [TRAJ]SPINDLES= gesetzt.
Standardmäßig beträgt die maximale Geschwindigkeit der Spindel nach vorne und hinten ca. 2147483000 RPM.
Standardmäßig ist die Mindestgeschwindigkeit der Spindel nach vorne und umgekehrt 0 RPM.
Standardmäßig beträgt das Inkrement 100 RPM.
Sie ändern diese Standardeinstellung, indem Sie die folgenden INI-Variablen festlegen:

Anmerkung
Diese Einstellungen sind für die Bewegungssteuerung (engl. motion controler) verantwortlich Komponente. Kontrollschirme können diese Einstellungen weiter begrenzen.
  • MAX_FORWARD_VELOCITY = 20000 Die maximale Spindeldrehzahl (in U/min) für die angegebene Spindel. Optional. Dies wird auch die MAX_REVERSE_VELOCITY festlegen, sofern diese nicht an anderer Stelle anders angegeben ist.

  • MIN_FORWARD_VELOCITY = 3000 Die minimale Spindeldrehzahl (in U/min) für die angegebene Spindel. Optional. Viele Spindeln haben eine Mindestdrehzahl, unter der sie nicht betrieben werden sollten. Jeder Spindeldrehzahlbefehl, der unter diesem Grenzwert liegt, wird auf diesen Grenzwert /erhöht/.

  • MAX_REVERSE_VELOCITY = 20000 Diese Einstellung wird standardmäßig auf MAX_FORWARD_VELOCITY gesetzt, wenn sie weggelassen wird. Sie kann in Fällen verwendet werden, in denen die Spindeldrehzahl im Rückwärtsgang begrenzt ist. Für Spindeln, die nicht im Rückwärtsgang laufen dürfen, wird sie auf Null gesetzt. In diesem Zusammenhang bezieht sich "max" auf die absolute Größe der Spindeldrehzahl.

  • MIN_REVERSE_VELOCITY = 3000 Diese Einstellung entspricht MIN_FORWARD_VELOCITY, jedoch für die umgekehrte Spindeldrehung. Ist dieser Wert nicht angegeben, wird sie standardmäßig auf MIN_FORWARD_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 Bedienoberflächen die Dinge anders handhaben können.

  • 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 allgemeinen Referenzfahrt-Sequenz die Spindel-Referenzfahrt-Drehungen stattfinden. Setzen Sie HOME_SEARCH_VELOCITY auf Null, um Spindeldrehungen während der Referenzfahrt zu vermeiden.

2.15. [EMCIO] Abschnitt

  • TOOL_TABLE = tool.tbl - Die Datei mit den Werkzeuginformationen, die im Benutzerhandbuch beschrieben sind.

  • DB_PROGRAM = db_program - Pfad zu einem ausführbaren Programm, das Werkzeugdaten verwaltet. Wenn ein DB_PROGRAM angegeben ist, wird ein TOOL_TABLE-Eintrag ignoriert.

  • TOOL_CHANGE_POSITION = 0 0 2 - Gibt die XYZ-Position an, die bei einem Werkzeugwechsel angefahren wird, wenn drei Ziffern verwendet werden. Gibt die XYZABC-Position an, wenn 6 Ziffern verwendet werden. Gibt die XYZABCUVW-Position an, wenn 9 Ziffern verwendet werden. Werkzeugwechsel können kombiniert werden. Wenn Sie z. B. die Pinole nach oben mit der Wechselposition kombinieren, können Sie zuerst die Z-Position und dann die X- und Y-Position verschieben.

  • TOOL_CHANGE_WITH_SPINDLE_ON = 1 - Die Spindel bleibt während des Werkzeugwechsels eingeschaltet, wenn der Wert 1 ist. Nützlich für Drehmaschinen oder Maschinen, bei denen sich das Material in der Spindel und nicht im Werkzeug befindet.

  • TOOL_CHANGE_QUILL_UP = 1 - Die Z-Achse wird vor dem Werkzeugwechsel auf den Maschinennullpunkt gefahren, wenn der Wert 1 ist. Dies ist dasselbe wie die Ausführung eines G0 G53 Z0.

  • TOOL_CHANGE_AT_G30 = 1 - Die Maschine wird auf den durch die Parameter 5181-5186 für G30 definierten Referenzpunkt gefahren, wenn der Wert 1 ist. Weitere Informationen finden Sie unter G-Code Parameter und G-Code G30-G30.1.

  • RANDOM_TOOLCHANGER = 1 - Dies ist für Maschinen, die das Werkzeug nicht in die Tasche zurücklegen können, aus der es stammt. Zum Beispiel Maschinen, die das Werkzeug in der aktiven Tasche mit dem Werkzeug in der Spindel austauschen.