1. The INI File Components
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. Sections
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.
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.
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
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. Custom Sections and Variables
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.
[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.
[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.
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.
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 Files
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 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 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 File Sections
2.1. [EMC] Section
-
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 inDEBUG
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
oderqtvcp-qtplasmac
. -
POSITION_OFFSET = RELATIVE
- Das Koordinatensystem (RELATIVE
oderMACHINE
), 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
oderACTUAL
), 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). -
FOAM_W = 1.5
sets the foam W height. -
FOAM_Z = 0
sets the foam Z height. -
GRAPHICAL_MAX_FILE_SIZE = 20
largest size (in mega bytes) that will be displayed graphically. If the program is bigger then this setting, a bounding box will be displayed. By default this setting is 20 MB or 1/4 of the system memory, which ever is smaller. Setting negative will set no limit.
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
-
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 wieINCREMENTS
. -
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 istgnome-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 sindgedit
,gnome-terminal -e vim
, undgvim
. 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 istBOTTOM
(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:-
Die Buchstaben X, Y, Z geben die Verschiebung entlang der genannten Koordinate an.
-
Die Buchstaben A, B, C bezeichnen die Drehung um die entsprechenden Achsen X, Y, Z.
-
Die Buchstaben U, V, W geben die Verschiebung entlang der entsprechenden Achsen X, Y, Z an.
-
Jeder angegebene Buchstabe muss in
[TRAJ]COORDINATES
vorkommen, um eine Wirkung zu haben. -
Ein "-" Zeichen vor einem beliebigen Buchstaben kehrt die Richtung der Operation um.
-
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. -
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.
-
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. -
Beispiel für UVW-Verschiebung:
GEOMETRY=XYZUVW
bewirkt, dass UVW im Koordinatensystem des Werkzeugs und XYZ im Koordinatensystem des Materials verschoben wird. -
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. -
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 vonGEOMETRY = !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.
AnmerkungIst 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.AnmerkungDie Einstellungen für JOG_AXES
undJOG_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] Section
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] Section
-
PARAMETER_FILE = myfile.var
- The file located in the same directory as the INI file which contains the parameters used by the interpreter (saved between runs). -
ORIENT_OFFSET = 0
- A float value added to the R word parameter of an M19 Orient Spindle operation. Used to define an arbitrary zero position regardless of encoder mount orientation. -
RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92.1 G94 G97 G98
- A string of NC codes that the interpreter is initialized with. This is not a substitute for specifying modal G-codes at the top of each NGC file, because the modal codes of machines differ, and may be changed by G-code interpreted earlier in the session. -
SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs
- Specifies a colon (:) separated list of up to 10 directories to be searched when single-file subroutines are specified in G-code. These directories are searched after searching[DISPLAY]PROGRAM_PREFIX
(if it is specified) and before searching[WIZARD]WIZARD_ROOT
(if specified). The paths are searched in the order that they are listed. The first matching subroutine file found in the search is used. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no intervening whitespace. -
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
- Specifies a list of colon (:) separated directories for user defined functions. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no intervening whitespace.Es wird nach jeder möglichen benutzerdefinierten Funktion gesucht, typischerweise (M100-M199). Die Reihenfolge der Suche ist:
-
[DISPLAY]PROGRAM_PREFIX
(falls angegeben) -
Wenn
[DISPLAY]PROGRAM_PREFIX
nicht angegeben ist, wird der Standardspeicherort gesucht: nc_files -
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.
AnmerkungDie 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
|
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] Section
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] Section
-
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] section
-
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 eineHALFILE
, 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 Systembibliotheksdateisys_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
-
Wegfall der addf-Anweisung, die erforderlich ist, um die Funktion(en) einer Komponente zu einem Thread hinzuzufügen,
-
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
- DasTWOPASS
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. WennHALCMD
mehrfach angegeben wird, werden die Befehle in der Reihenfolge ausgeführt, in der sie in der INI-Datei stehen. DieHALCMD
-Zeilen werden nach allenHALFILE
-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] section
-
MDI_COMMAND = G53 G0 X0 Y0 Z0
- Ein MDI-Befehl kann mithalui.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] Section
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. [TRAJ] Section
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: |
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>_ - Specifies the machine units for linear axes. Possible choices are mm or inch. This does not affect the linear units in NC code (the G20 and G21 words do this). -
ANGULAR_UNITS =
<units> - Specifies the machine units for rotational axes. Possible choices are deg, degree (360 per circle), rad, radian (2*π per circle), grad, or gon (400 per circle). This does not affect the angular units of NC code. In RS274NGC, A-, B- and C- words are always expressed in degrees. -
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
- The maximum velocity for any axis or coordinated move, in machine units per second. The value shown equals 300 units per minute. -
MAX_LINEAR_ACCELERATION = 20.0
- The maximum acceleration for any axis or coordinated axis move, in machine units per second per second. -
POSITION_FILE =
position.txt - 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 EinstellungNO_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 |
-
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]
DieTPMOD
-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] Section
-
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 dieloadrt
-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>] Section
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, eitherLINEAR
orANGULAR
. 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
- The minimum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed beforeMIN_LIMIT
is in force. For a rotary axis (A,B,C typ) with unlimited rotation having noMIN_LIMIT
for that axis in the[AXIS_
<letter>]
section a value of -1e99 is used. -
MAX_LIMIT = 1000
- The maximum limit (soft limit) for axis motion, in machine units. When this limit is exceeded, the controller aborts axis motion. The axis must be homed before MAX_LIMIT is in force. For a rotary axis (A,B,C typ) with unlimited rotation having noMAX_LIMIT
for that axis in the[AXIS_
<letter>]
section a value of 1e99 is used. -
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 demjoint.4.unlock
-Pin eingeleitet, dann wird auf denjoint.4.is-unlocked
-Pin gewartet und dann das Gelenk mit der für dieses Gelenk vorgesehenen Eilgeschwindigkeit bewegt. Nach der Bewegung wird derjoint.4.unlock
auf false gesetzt und die Bewegung wartet, bisjoint.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>] Sections
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, entwederLINEAR
oderANGULAR
(engl. für Winkel-bestimmt). -
UNITS = INCH
- If specified, this setting overrides the related[TRAJ] UNITS
setting, e.g.,[TRAJ]LINEAR_UNITS
if theTYPE
of this joint isLINEAR
,[TRAJ]ANGULAR_UNITS
if theTYPE
of this joint isANGULAR
. -
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
- Backlash in machine units. Backlash compensation value can be used to make up for small deficiencies in the hardware used to drive an joint. If backlash is added to an joint and you are using steppers theSTEPGEN_MAXACCEL
must be increased to 1.5 to 2 times theMAX_ACCELERATION
for the joint. Excessive backlash compensation can cause an joint to jerk as it changes direction. If a COMP_FILE is specified for a joint BACKLASH is not used. -
COMP_FILE =
file.extension - The compensation file consists of map of position information for the joint. Compensation file values are in machine units. Each set of values are are on one line separated by a space. The first value is the nominal value (the commanded position). The second and third values depend on the setting ofCOMP_FILE_TYPE
. Points in between nominal values are interpolated between the two nominals. Compensation files must start with the smallest nominal and be in ascending order to the largest value of nominals. File names are case sensitive and can contain letters and/or numbers. Currently the limit inside LinuxCNC is for 256 triplets per joint.Wenn
COMP_FILE
für ein Gelenk angegeben ist, wirdBACKLASH
nicht verwendet. -
COMP_FILE_TYPE = 0
oder1
- Bestimmt den Typ der Kompensationsdatei. Der erste Wert ist die nominale (befohlene) Position für beide Typen.
EinCOMP_FILE_TYPE
muss für jedeCOMP_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
- The minimum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having noMIN_LIMIT
for that joint in the[JOINT_N]
section a the value -1e99 is used. -
MAX_LIMIT = 1000
- The maximum limit for joint motion, in machine units. When this limit is reached, the controller aborts joint motion. For a rotary joint with unlimited rotation having noMAX_LIMIT
for that joint in the[JOINT_N]
section a the value 1e99 is used.
Anmerkung
|
Für Identitäts-Kinematiken müssen die Einstellungen |
Anmerkung
|
Die Einstellungen |
-
MIN_FERROR = 0.010
- This is the value in machine units by which the joint is permitted to deviate from commanded position at very low speeds. If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points. You could think of this as a graph where one dimension is speed and the other is permitted following error. As speed increases the amount of following error also increases toward theFERROR
value. -
FERROR = 1.0
-FERROR
is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. IfMIN_FERROR
is present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, withFERROR
applying to the rapid rate set by[TRAJ]MAX_VELOCITY
, and proportionally smaller following errors for slower speeds. The maximum allowable following error will always be greater thanMIN_FERROR
. This prevents small following errors for stationary axes from inadvertently aborting motion. Small following errors will always be present due to vibration, etc. -
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
- Initial homing velocity in machine units per second. Sign denotes direction of travel. A value of zero means assume that the current location is the home position for the machine. If your machine has no home switches you will want to leave this value at zero. -
HOME_LATCH_VEL = 0.0
- 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 Gelenkindex_enable
HAL-Pins erkannt wird. Gilt nur fürHOME_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 denHOME_OFFSET
Wert gesetzt. Wenn die HOME_ABSOLUTE_ENCODER Einstellung 1 ist, macht die Maschine die übliche Endbewegung zumHOME
Wert. Wenn dieHOME_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 bei0
oder1
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 einerHOME_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 (auf1
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: -
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. -
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. -
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. -
FF0 = 0
- Die Vorwärtsverstärkung 0ter Ordnung. Diese Zahl wird mit der befohlenen Position multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die FF0-Verstärkung sind Volt pro Maschineneinheit, z. B. -
FF1 = 0
- Die Vorwärtsverstärkung erster Ordnung. Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die FF1-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. -
FF2 = 0
- Die Vorwärtsverstärkung zweiter Ordnung. Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt. Die Einheiten für die FF2-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. -
OUTPUT_SCALE = 1.000
-
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:
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.
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.
-
Erstellen Sie eine Kalibrierungstabelle für den Ausgang, indem Sie den DAC mit einer gewünschten Spannung betreiben und das Ergebnis messen.
-
Führen Sie eine lineare Anpassung nach dem Prinzip der kleinsten Quadrate durch, um die Koeffizienten a und b so zu ermitteln, dass
-
Beachten Sie, dass wir eine Rohausgabe wünschen, bei der das gemessene Ergebnis mit der befohlenen Ausgabe identisch ist. Das bedeutet
-
-
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:
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:
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 vonLINEAR_UNITS
. Für ein Winkelgelenk entspricht eine Einheit der Einstellung inANGULAR_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:
-
STEPGEN_MAXACCEL = 21.0
- Beschleunigungsgrenze für den Schrittgenerator. Dieser Wert sollte 1% bis 10% größer sein als die gemeinsameMAX_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 alsMAX_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 gemeinsameMAX_VELOCITY
. Nachfolgende Tests haben gezeigt, dass die Verwendung vonSTEPGEN_MAXVEL
die Abstimmung der Positionsschleife von StepGen nicht verbessert.
2.14. [SPINDLE_<num>] Section(s))
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 aufMAX_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 entsprichtMIN_FORWARD_VELOCITY
, jedoch für die umgekehrte Spindeldrehung. Ist dieser Wert nicht angegeben, wird sie standardmäßig aufMIN_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 SieHOME_SEARCH_VELOCITY
auf Null, um Spindeldrehungen während der Referenzfahrt zu vermeiden.
2.15. [EMCIO] Section
-
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 einesG0 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.