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
A comment line is started with a ; or a # mark. When the INI reader sees either of these marks on a line, the rest of the line is ignored by the software. Comments can be used to describe what an INI element will do.
; 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.
Note that inside a variable’s value, the "#" and ";" characters are still comments. You should use double or single quoted strings if you need to embed # or ; characters:
# Below results in INCORRECT=value # because comments are stripped INCORRECT = value # and a comment # Correct embedding CORRECT = "value # and an embedded # char"
1.2. Abschnitte
Related parts of an INI file are separated into sections. A section name is enclosed in brackets like this: [THIS_SECTION]. The order of sections is unimportant. Sections begin at the section name and end at the next section name. Section identifiers are case senstive and can only contain letters A-Z, a-z, digits 0-9 and underscore (_). Additionally, section identifiers cannot start with a digit.
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
A variable line is made up of a variable name, an equals sign (=), and a value. A variable identifier is case sensitive and may only consist of letters A-Z, a-z, digits 0-9 and underscore (_). Additionally, variable identifiers cannot start with a digit. White space at the beginning of the line and after the variable identifier, up to the equals sign, is ignored.
MACHINE = My Machine
A variable line may be extended to multiple lines with a terminal backslash (\) character. There may be white space following the trailing backslash character, but this is strongly discouraged.
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
A specific variable in a specific sections is often denoted in the documentation as [SECTION]VARIABLE. This specification mirrors the same way they are specified in HAL files for expansion.
Variable values may be quoted to ensure proper space and special character embedding in literal or escaped forms. Both single and double quoted values are allowed. Mutiple quoted value segments are merged into one value. Embedding quotes in quoted values must use the backslash \\ character to escape the embedded quote if it is the same kind as the enclosing quotes. Double quotes values also support all common escape formats and full Unicode:
-
control: \\[abfnrtv]
-
octal: \\[0-2][0-7]{0,2}
-
-
-
The resulting value is always converted into UTF-8 and checked for validity. It is not allowed to embed NUL characters either literally or by using an escape.
STRING = "Hello World!" STRING = 'Hello World Too!' # The following would become: Hello World! STRING = "Hello" \ " " \ 'World' \ "!" EMBED = "Literal single ' in double" EMBED = 'Literal double " in single' EMBED = "Literal double \" in double" EMBED = 'Literal single \' in single' SMILE = "\\370\\237\\230\\200 = 😀" SMILE = "\\xf0\\x9f\\x98\\x80 = 😀" SMILE = "\\ud83d\\ude00 = 😀" SMILE = "\\U0001f600 = 😀"
Variables' value can have types associated when they are read by LinuxCNC. The types are enforced by the INI file reader when the appropriate function calls are performed. All values may always be read as string. Conversion into other types has restrictions. Possible types are:
-
string - the value is taken as-is
-
boolean - only boolean words are accepted
-
signed integer - whole numbers in decimal, hexadecimal, octal or binary bases
-
unsigned integer - whole numbers in decimal, hexadecimal, octal or binary bases
-
real - floating point values (always using decimal point)
-
enumeration - a restricted set of keys to represent a value or function
Signed and unsigned integers are read and converted as 64-bit numbers when marked as s64 and u64. Plain old 32-bit integers are marked int and are always signed. The default number base is decimal. Alternative bases may be specified using a prefix. The complete list of valid integer numbers:
-
\[0-9]+ - decimal
-
0x\[0-9A-Fa-f]+ - hexadecimal
-
0o\[0-7]+ - octal
-
0b\[01]+ - binary
Signed integers may be preceded by a plus (+) or minus (-) sign, regardless number base. Unsigned integers will generate a warning if they are preceded by a minus (-) sign upon conversion.
Boolean values are case insensitive and allow the following words:
-
true/enabled -
TRUE,YESONor1 -
false/disabled -
FALSE,NOOFFor0
Enumerations are a set of keywords defined by LinuxCNC and interpreted to mean a setting, value or functionality. The exact values are declared in the individual variable description and the variables are marked with enum. Most enumerations are interpreted without case. It is noted in the variable description if case matters.
Some LinuxCNC variables are special in that their format is interpreted as a multi-valued entry. These variables have an appropriate description below of the format expected.
Variables that are used by LinuxCNC must always use the section names and variable names as shown. Any custom or private variables and sections are up to the user.
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.
[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.
Please note that G-code embedded ini variables are converted to upper case before they are searched in the INI file. The #<_ini[section]variable> should be called [SECTION]VARIABLE in the INI file.
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 filenameDer 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 /)
-
a user-home-relative file name (starts with a ~/)
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
The #INCLUDE directives are supported up to 16 levels — an included file may include additional files up to 16 levels deep. Recursive inclusion of files is detected and flagged as an error. The recommended file extension is .inc. Do not use a file extension of .ini for included files.
2. INI-Datei Abschnitte
Variables in each section have an associated type as denoted in parentheses after the variable.
2.1. [EMC] Abschnitt
-
VERSION = 1.1- (string) The format version of this configuration. Any value other than 1.1 will cause the configuration checker to run and try to update the configuration to the new style joint axes type of configuration. -
MACHINE = My Controller- (string) This is the name of the controller, which is printed out at the top of most graphical interfaces. You can put whatever you want here as long as you make it a single line long. -
DEBUG = 0- (u64) Debug level 0 means no messages will be printed when LinuxCNC is run from a terminal. Debug flags are usually only useful to developers. See src/emc/nml_intf/debugflags.h for other settings. -
RCS_DEBUG = 1(u64) RCS debug messages to show. Print only errors (1) by default if EMC_DEBUG_RCS and EMC_DEBUG_RCS bits inDEBUGare unset, otherwise print all (-1). Use this to select RCS debug messages. See src/libnml/rcs/rcs_print.hh for all MODE flags. -
RCS_DEBUG_DEST = STDOUT- (enum) how to output RCS_DEBUG messages (NULL, STDOUT, STDERR, FILE, LOGGER, MSGBOX). -
RCS_MAX_ERR = -1- (int) Number after which RCS errors are not reported anymore (-1 = infinite). -
NML_FILE = /usr/share/linuxcnc/linuxcnc.nml- (string) Set this if you want to use a non-default NML configuration file.
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- (string) The file name of the executable providing the user interface to use. Prominent valid options are (all in lower case):axis,touchy,gmoccapy,gscreen,tklinuxcnc,qtvcp,qtvcp qtdragonorqtvcp qtplasmac. -
POSITION_OFFSET = RELATIVE- (enum) The coordinate system (RELATIVEorMACHINE) to show on the DRO when the user interface starts. The RELATIVE coordinate system reflects the G92 and G5x coordinate offsets currently in effect. -
POSITION_FEEDBACK = COMMANDED- (enum) The coordinate value (COMMANDEDorACTUAL) to show on the DRO when the user interface starts. In AXIS this can be changed from the View menu. The COMMANDED position is the position requested by LinuxCNC. The ACTUAL position is the feedback position of the motors if they have feedback like most servo systems. Typically the COMMANDED value is used. -
DRO_FORMAT_MM = %+08.6f- (string) Override the default DRO formatting in metric mode (normally 3 decimal places, padded with spaces to 6 digits to the left). The example above will pad with zeros, display 6 decimal digits and force display of a + sign for positive numbers. Formatting follows Python practice: https://docs.python.org/2/library/string.html#format-specification-mini-language . An error will be raised if the format can not accept a floating-point value. -
DRO_FORMAT_IN = % 4.1f- (string) Override the default DRO formatting in imperial mode (normally 4 decimal places, padded with spaces to 6 digits to the left). The example above will display only one decimal digit. Formatting follows Python practice: https://docs.python.org/2/library/string.html#format-specification-mini-language . An error will be raised if the format can not accept a floating-point value. -
CONE_BASESIZE = .25- (real) Override the default cone/tool base size of .5 in the graphics display. Valid values are between 0.025 and 2.0. -
DISABLE_CONE_SCALING = TRUE- (bool) Any non-empty value (including "0") will override the default behavior of scaling the cone/tool size using the extents of the currently loaded G-code program in the graphics display. -
MAX_FEED_OVERRIDE = 1.2- (real) The maximum feed override the user may select. 1.2 means 120% of the programmed feed rate. -
MIN_SPINDLE_OVERRIDE = 0.5- (real) The minimum spindle override the user may select. 0.5 means 50% of the programmed spindle speed. (This is used to set the minimum spindle speed.) -
MIN_SPINDLE_0_OVERRIDE = 0.5- (real) The minimum spindle override the user may select. 0.5 means 50% of the programmed spindle speed. (This is used to set the minimum spindle speed.) On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces. -
MAX_SPINDLE_OVERRIDE = 1.0- (real) The maximum spindle override the user may select. 1.0 means 100% of the programmed spindle speed. -
MAX_SPINDLE_0_OVERRIDE = 1.0- (real) The maximum feed override the user may select. 1.2 means 120% of the programmed feed rate. On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces. -
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- Jeder nicht-leere Wert (einschließlich "0") wird eine Prompt-Nachricht mit einer Referenzierung (engl. homing)-Anfrage auslösen, sobald der 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.5setzt die Schaum (engl. foam) W Höhe. -
FOAM_Z = 0setzt die Schaum Z Höhe. -
GRAPHICAL_MAX_FILE_SIZE = 20größte Größe (in Megabytes), die grafisch angezeigt wird. Wenn das Programm größer als diese Einstellung ist, wird eine Begrenzungsbox angezeigt. Voreingestellt sind 20 MB oder 1/4 des Systemspeichers, was kleiner ist. Ein negativer Wert wird als unlimitiert interpretiert.
|
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 µm 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]COORDINATESvorkommen, 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=XYZBCgibt 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=CXYZverschiebt 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=XYZUVWbewirkt, 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 = !CXZfü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]GEOMETRYin 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]LATHEund[DISPLAY]FOAMbestimmt. -
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_AXESundJOG_INVERTgelten 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~/.axisrcbezogen 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 (engl. file), 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. -
G64_DEFAULT_TOLERANCE =n (Voreinstellung: 0) Voreingestellter Wert für P bei G64 wenn P nicht explizit angegeben ist. -
G64_DEFAULT_NAIVETOLERANCE =n (Voreinstellung: 0) Voreingestellter Wert für Q bei G64 wenn Q nicht explizit angegeben ist. -
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:
-
[DISPLAY]PROGRAM_PREFIX(falls angegeben) -
Wenn
[DISPLAY]PROGRAM_PREFIXnicht angegeben ist, wird der Standardspeicherort gesucht: nc_files -
Dann wird jedes Verzeichnis in der Liste
[RS274NGC]USER_M_PATHdurchsucht.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. -
G73_PECK_CLEARANCE = .020 (Voreinstellung: Metrische Maschine: 1 mm, imperiale Maschine: .05 Zoll) Splitter/Span (chip)-Back-off-Abstand in Maschineneinheiten
-
G83_PECK_CLEARANCE = .020 (Voreinstellung: 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 = 0Bestimmt 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=myprocedureSiehe das Remap Erweiterung von G-Code Kapitel für Details. -
ON_ABORT_COMMAND=O <on_abort> callSiehe 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- The period, in seconds, at which TASK will run. This parameter affects the polling interval when waiting for motion to complete, when executing a pause instruction, and when accepting a command from a user interface. There is usually no need to change this number. Defaults to 0.100 if omitted.
2.7. [HAL] Abschnitt
-
HALFILE = beispiel.hal- Führt die Datei beispiel.hal beim Start aus.Wenn
HALFILEmehrfach 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
HALFILESangegeben 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
linuxcncunter Verwendung der Option "-Hdirname" gestartet wird, dann wird der angegebene Verzeichnisname der oben beschriebenen Suche vorangestellt, so dass dirname zuerst durchsucht wird. Die Option "-Hdirname" 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.halbeim 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.tclbeim 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 items specify files that loadrt HAL components and make signal connections between component pins. Common mistakes are:
-
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]HALFILEangegebenen 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- DasTWOPASSkann 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. WennHALCMDmehrfach 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] Abschnitt
-
MDI_COMMAND = G53 G0 X0 Y0 Z0- Ein MDI-Befehl kann mithalui.mdi-command-00ausgefü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 (Voreinstellung: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] Abschnitt
|
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 = 4Wie 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 = 1000ist 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 INIFü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. -
PLANNER_TYPE = 0- Selects the trajectory planner type: 0 = trapezoidal (default), 1 = S-curve with jerk limiting. S-curve planning is only active whenPLANNER_TYPE = 1ANDMAX_LINEAR_JERK > 0. -
MAX_LINEAR_JERK = 10000.0- The maximum jerk (rate of change of acceleration) for coordinated moves, in machine units per second cubed. Default is 1e9 (1 billion) if not specified, which effectively disables jerk limiting while avoiding numerical instability. Values are clamped to a maximum of 1e9 to prevent numerical issues in S-curve calculations. WhenPLANNER_TYPE = 1, this enables S-curve trajectory planning. Note: Not specifying MAX_LINEAR_JERK (defaulting to 1e9) produces motion similar to trapezoidal planning (PLANNER_TYPE = 0) but not identical, as extremely high jerk still uses S-curve calculations. -
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- (bool) The default behavior is for LinuxCNC to force the user to home the machine before any MDI command or a program is run. Normally, only jogging is allowed before homing. For configurations using identity kinematics, settingNO_FORCE_HOMING = 1allows the user to make MDI moves and run programs without homing the machine first. Interfaces using identity kinematics without homing ability will need to have this option set to 1.
|
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] 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 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_<Buchstabe>] Abschnitt
Der <letter> (engl. Buchstabe) gibt einen der folgenden Buchstaben an: X Y Z A B C U V W
-
TYPE = LINEAR- (enum) The type of this axis, eitherLINEARorANGULAR. 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- (real) Maximum velocity for this axis in machine units per second. -
MAX_ACCELERATION = 20.0- (real) Maximum acceleration for this axis in machine units per second squared. -
MAX_JERK = 0.0- (real) Maximum jerk for this axis in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-axis jerk limiting is applied. -
MIN_LIMIT = -1000- (real) 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_LIMITis in force. For a rotary axis (A,B,C typ) with unlimited rotation having noMIN_LIMITfor that axis in the[AXIS_<letter>]section a value of -1e99 is used. -
MAX_LIMIT = 1000- (real) 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_LIMITfor that axis in the[AXIS_<letter>]section a value of 1e99 is used. -
WRAPPED_ROTARY = 1- (bool) When this is set to 1 for an ANGULAR axis the axis will move 0-359.999 degrees. Positive Numbers will move the axis in a positive direction and negative numbers will move the axis in the negative direction. -
LOCKING_INDEXER_JOINT = 4- (int) This value selects a joint to use for a locking indexer for the specified axis <letter>. In this example, the joint is 4 which would correspond to the B axis for a XYZAB system with trivkins (identity) kinematics. When set, a G0 move for this axis will initiate an unlock with thejoint.4.unlock pinthen wait for thejoint.4.is-unlockedpin then move the joint at the rapid rate for that joint. After the move thejoint.4.unlockwill be false and motion will wait forjoint.4.is-unlockedto go false. Moving with other joints is not allowed when moving a locked rotary joint. To create the unlock pins, use the motmod parameter:unlock_joints_mask=jointmask
Die Bits der Jointmaske sind: (LSB)0:joint0, 1:joint1, 2:joint2, …
Beispiel:
loadrt motmod ... unlock_joints_mask=0x38erzeugt Entsperrstifte für die Gelenke 3, 4, 5. -
OFFSET_AV_RATIO = 0.1- (real) If nonzero, this item enables the use of HAL input pins for external axis 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- (enum) The type of joint, eitherLINEARorANGULAR. -
UNITS = INCH- (enum) If specified, this setting overrides the related[TRAJ] UNITSsetting, e.g.,[TRAJ]LINEAR_UNITSif theTYPEof this joint isLINEAR,[TRAJ]ANGULAR_UNITSif theTYPEof this joint isANGULAR. -
MAX_VELOCITY = 1.2- (real) Maximum velocity for this joint in machine units per second. -
MAX_ACCELERATION = 20.0- (real) Maximum acceleration for this joint in machine units per second squared. -
MAX_JERK = 0.0- (real) Maximum jerk for this joint in machine units per second cubed. Used when S-curve trajectory planning is enabled. When set to 0 (default), no per-joint jerk limiting is applied. -
BACKLASH = 0.0000- (real) 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_MAXACCELmust be increased to 1.5 to 2 times theMAX_ACCELERATIONfor 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 - (string) 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_FILEfür ein Gelenk angegeben ist, wirdBACKLASHnicht verwendet. -
COMP_FILE_TYPE = 0or1- (int) Specifies the type of compensation file. The first value is the nominal (commanded) position for both types.
ACOMP_FILE_TYPEmust be specified for eachCOMP_FILE.-
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- (real) 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_LIMITfor that joint in the[JOINT_N]section a the value -1e99 is used. -
MAX_LIMIT = 1000- (real) 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_LIMITfor 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- (real) 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 theFERRORvalue. -
FERROR = 1.0- (real)FERRORis 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_FERRORis present in the INI file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, withFERRORapplying 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- (bool) Indicates the joint is used as a locking indexer.
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- (real) The position that the joint will go to upon completion of the homing sequence. -
HOME_OFFSET = 0.0- (real) The joint position of the home switch or index pulse, in machine units. When the home point is found during the homing process, this is the position that is assigned to that point. When sharing home and limit switches and using a home sequence that will leave the home/limit switch in the toggled state, the home offset can be used define the home switch position to be other than 0 if your HOME position is desired to be 0. -
HOME_SEARCH_VEL = 0.0- (real) 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- (real) Homing velocity in machine units per second to the home switch latch position. Sign denotes direction of travel. -
HOME_FINAL_VEL = 0.0- (real) Velocity in machine units per second from home latch position to home position. If left at 0 or not included in the joint rapid velocity is used. Must be a positive number. -
HOME_USE_INDEX = NO- (bool) If the encoder used for this joint has an index pulse, and the motion card has provision for this signal you may set it to yes. When it is yes, it will affect the kind of home pattern used. Currently, you can’t home to index with steppers unless you’re using StepGen in velocity mode and PID. -
HOME_INDEX_NO_ENCODER_RESET = NO- (bool) Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the jointindex_enableHAL pin. Applicable only forHOME_USE_INDEX = YES. -
HOME_IGNORE_LIMITS = NO- (bool) When you use the limit switch as a home switch and the limit switch this should be set to YES. When set to YES the limit switch for this joint is ignored when homing. You must configure your homing so that at the end of your home move the home/limit switch is not in the toggled state you will get a limit switch error after the home move. -
HOME_IS_SHARED = NO- (bool) If the home input is shared by more than one joint set to true to prevent homing from starting if the one of the shared switches is already closed. Set to false (the default) to permit homing if a switch is closed. -
HOME_ABSOLUTE_ENCODER = 0|1|2- (int) Used to indicate the joint uses an absolute encoder. At a request for homing, the current joint value is set to theHOME_OFFSETvalue. If theHOME_ABSOLUTE_ENCODERsetting is 1, the machine makes the usual final move to theHOMEvalue. If theHOME_ABSOLUTE_ENCODERsetting is 2, no final move is made. -
HOME_SEQUENCE =<n> - (int) Used to define the "Home All" sequence. <n> must start at0or1or-1. Additional sequences may be specified with numbers increasing by 1 (in absolute value). Skipping of sequence numbers is not allowed. If aHOME_SEQUENCEis omitted, the joint will not be homed by the "Home All" function. More than one joint can be homed at the same time by specifying the same sequence number for more than one joint. A negative sequence number is used to defer the final move for all joints having that (negative or positive) sequence number. For additional info, see: HOME SEQUENCE. -
VOLATILE_HOME = 0- (bool) When enabled (set to1) this joint will be unhomed if the Machine Power is off or if E-Stop is on. This is useful if your machine has home switches and does not have position feedback such as a step and direction driven machine.
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- (real) How close is close enough to consider the motor in position, 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.000Diese 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_ACCELERATIONsein. -
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_MAXVELdie 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- (real) The maximum spindle speed (in rpm) for the specified spindle. Optional. This will also set MAX_REVERSE_VELOCITY to the negative value unless overridden. -
MIN_FORWARD_VELOCITY = 3000- (real) The minimum spindle speed (in rpm) for the specified spindle. Optional. Many spindles have a minimum speed below which they should not be run. Any spindle speed command below this limit will be /increased/ to this limit. -
MAX_REVERSE_VELOCITY = 20000- (real) This setting will default toMAX_FORWARD_VELOCITYif omitted. It can be used in cases where the spindle speed is limited in reverse. Set to zero for spindles which must not be run in reverse. In this context "max" refers to the absolute magnitude of the spindle speed. -
MIN_REVERSE_VELOCITY = 3000- (real) This setting is equivalent toMIN_FORWARD_VELOCITYbut for reverse spindle rotation. It will default to the MIN_FORWARD_VELOCITY if omitted. -
INCREMENT = 200- (real) Sets the step size for spindle speed increment / decrement commands. This can have a different value for each spindle. This setting is effective with AXIS and Touchy but note that some control screens may handle things differently. -
HOME_SEARCH_VELOCITY = 100- (real) FIXME: Spindle homing not yet working. Sets the homing speed (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the spindle index is located, at which point the spindle position will be set to zero. Note that it makes no sense for the spindle home position to be any value other than zero, and so there is no provision to do so. -
HOME_SEQUENCE = 0- (int) FIXME: Spindle homing not yet working Controls where in the general homing sequence the spindle homing rotations occur. Set theHOME_SEARCH_VELOCITYto zero to avoid spindle rotation during the homing sequence.
2.15. [EMCIO] Abschnitt
-
TOOL_TABLE = tool.tbl- (string) The file which contains tool information, described in the User Manual. -
DB_PROGRAM = db_program- (string) Path to an executable program that manages tool data. When a DB_PROGRAM is specified, a TOOL_TABLE entry is ignored. -
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- (bool) The spindle will be left on during the tool change when the value is 1. Useful for lathes or machines where the material is in the spindle, not the tool. -
TOOL_CHANGE_QUILL_UP = 1- (bool) The Z axis will be moved to machine zero prior to the tool change when the value is 1. This is the same as issuing aG0 G53 Z0. -
TOOL_CHANGE_AT_G30 = 1- (bool) The machine is moved to reference point defined by parameters 5181-5186 for G30 if the value is 1. For more information see G-code Parameters and G-code G30-G30.1. -
RANDOM_TOOLCHANGER = 1- (bool) This is for machines that cannot place the tool back into the pocket it came from. For example, machines that exchange the tool in the active pocket with the tool in the spindle.