Die HAL-Komponente moveoff ist eine reine HAL-Methode zur Implementierung von Offsets. Siehe die Manpage ($ man moveoff) für die WICHTIGEN Einschränkungen und Warnungen.

Die moveoff-Komponente wird zum Versetzen von Gelenkpositionen unter Verwendung benutzerdefinierter HAL-Verbindungen verwendet. Die Implementierung einer Offset-while-program-is-paused-Funktionalität wird mit entsprechenden Verbindungen für die Eingangspins unterstützt. Neun Gelenke werden unterstützt.

Die Werte der Achsen-Offset-Pins (offset-in-M) werden kontinuierlich (unter Beachtung der Grenzwerte für Wert, Geschwindigkeit und Beschleunigung) an die Ausgangs-Pins (offset-current-M, pos-plusoffset-M, fb-minusoffset-M) angelegt, wenn beide Freigabe-Eingangs-Pins (apply-offsets und move-enable) TRUE sind. Die beiden Freigabeeingänge sind intern verknüpft. Ein Warn-Pin wird gesetzt und eine Meldung ausgegeben, wenn der apply-offsets-Pin während der Anwendung von Offsets deassertiert wird. Der Warn-Pin bleibt TRUE, bis die Offsets entfernt werden oder der apply-offsets-Pin gesetzt wird.

Normalerweise ist der move-enable Pin mit externen Steuerelementen verbunden und der apply-offsets Pin ist mit halui.program.is-paused verbunden (für Offsets nur während der Pause) oder auf TRUE gesetzt (für kontinuierlich angewandte Offsets).

Angewandte Offsets werden automatisch auf Null zurückgesetzt (unter Beachtung der Grenzwerte), wenn einer der Freigabeeingänge deaktiviert wird. Die Nullwerttoleranz wird durch den Wert des Epsilon-Eingangspins festgelegt.

Wegpunkte werden aufgezeichnet, wenn die Komponente "moveoff" aktiviert ist. Wegpunkte werden mit den Pins waypoint-sample-secs und waypoint-threshold verwaltet. Wenn der Pin für die Rückverfolgungs-Aktivierung (engl. backgrack-enable) TRUE ist, folgt der automatische Rückweg den aufgezeichneten Wegpunkten. Wenn der für die Wegpunkte verfügbare Speicher erschöpft ist, werden die Offsets eingefroren und der waypoint-limit-Pin wird aktiviert. Diese Einschränkung gilt unabhängig vom Zustand des Backtrack-Enable-Pins. Ein Freigabe-Pin muss deaktiviert werden, um eine Rückkehr zur ursprünglichen (nicht versetzten) Position zu ermöglichen.

Backtracking durch Wegpunkte führt zu langsameren Bewegungsraten, da die Bewegungen Punkt-zu-Punkt unter Berücksichtigung der Geschwindigkeits- und Beschleunigungseinstellungen erfolgen. Die Geschwindigkeits- und Beschleunigungsgrenzwerte können dynamisch verwaltet werden, um Versätze jederzeit zu kontrollieren.

Wenn backtrack-enable FALSE ist, wird die automatische Rücklaufbewegung NICHT koordiniert, jede Achse kehrt mit ihrer eigenen Geschwindigkeit auf Null zurück. Wenn in diesem Zustand ein kontrollierter Weg gewünscht wird, sollte jede Achse manuell auf Null zurückgeführt werden, bevor ein Freigabe-Pin deaktiviert wird.

Die Pins waypoint-sample-secs, waypoint-threshold und epsilon werden nur ausgewertet, wenn sich die Komponente im Leerlauf befindet.

Der Offset-Applied-Ausgangs-Pin dient zur Anzeige des aktuellen Zustands auf einer grafischen Benutzeroberfläche, so dass die Wiederaufnahme des Programms verwaltet werden kann. Wenn die Offsets nicht Null sind, wenn der apply-offsets-Pin deassertiert wird (z.B. bei der Wiederaufnahme eines Programms während einer Pause), werden die Offsets auf Null zurückgesetzt (unter Beachtung der Grenzwerte) und eine Fehlermeldung wird ausgegeben.

Achtung
Wenn Offsets aktiviert und angewendet werden und die Maschine aus irgendeinem Grund ausgeschaltet wird, ist jede externe HAL-Logik, die Aktivierungspins und Offset-in-M-Eingänge verwaltet, für deren Zustand verantwortlich, wenn die Maschine anschließend wieder eingeschaltet wird.

Diese HAL-only Methode für Offset ist LinuxCNC in der Regel nicht bekannt und nicht in der GUI-Vorschau zeigt. Keine Schutzmaßnahmen verfügbar für Offset-Bewegungen, wenn sie die von LinuxCNC verwalteten weichen Grenzen überschreiten. Da weiche Grenzen nicht beachtet werden, kann eine Offset-Bewegung auf harte Grenzen stoßen (oder CRASH, wenn es keine Endschalter gibt). Die Verwendung der Eingänge offset-min-M und offset-max-M zur Begrenzung des Verfahrwegs wird empfohlen. Das Auslösen einer harten Grenze wird die Maschine ausschalten - siehe Caution oben.

Die Offset-in-M-Werte können mit INI-Datei-Einstellungen festgelegt, über eine grafische Benutzeroberfläche gesteuert oder durch andere HAL-Komponenten und Verbindungen verwaltet werden. Feste Werte können in einfachen Fällen geeignet sein, in denen die Richtung und der Betrag des Offsets genau definiert sind, aber eine Kontrollmethode erforderlich ist, um einen Aktivierungs-Pin zu deaktivieren, und so die Offsets auf Null zurückzusetzen. Die grafischen Benutzeroberflächen können dem Benutzer die Möglichkeit bieten, Offset-Werte für jede Achse einzustellen, zu erhöhen, zu verringern und zu akkumulieren, und sie können Offset-in-M-Werte auf Null setzen, bevor ein Freigabe-Pin deaktiviert wird.

Die Standardwerte für accel, vel, min, max, epsilon, waypoint-sample-secs und waypoint-threshold sind möglicherweise nicht für jede Anwendung geeignet. Diese HAL-Komponente kennt keine Grenzen, die an anderer Stelle von LinuxCNC erzwungen werden. Benutzer sollten die Verwendung in einem Simulator-Anwendung zu testen und alle Gefahren vor der Verwendung auf Hardware verstehen.

Sim-Konfigurationen zur Demonstration einer Komponenten und eine Benutzeroberfläche (moveoff_gui) befinden sich in:

  • configs/sim/axis/moveoff (axis-ui)

  • configs/sim/touchy/ngcgui (touchy-ui)

1. Ändern einer bestehenden Konfiguration

Eine vom System bereitgestellte HAL-Datei (LIB:hookup_moveoff.tcl) kann verwendet werden, um eine bestehende Konfiguration für die Verwendung der moveoff-Komponente anzupassen. Zusätzliche Einstellungen in der INI-Datei unterstützen die Verwendung einer einfachen Benutzeroberfläche (moveoff_gui) zur Steuerung von Offsets.

Wenn die System-HAL-Datei (LIB:hookup_moveoff.tcl) ordnungsgemäß in einer Konfigurations-INI-Datei angegeben ist, wird sie:

  1. die ursprünglichen Pinverbindungen joint.N.motor-pos-cmd und joint.N.motor-pos-fb trennen

  2. Die moveoff-Komponente (unter dem Namen mv) mit einem Profil (engl. personality) laden (loadrt), die alle in der INI-Datei angegebenen Achsen aufnehmen kann

  3. Funktionen der Auszugskomponenten in der gewünschten Reihenfolge hinzufügen (addf)

  4. Pins joint.N.motor-pos-cmd und joint.N.motor-pos-fb erneut verbinden, um die moveoff-Komponente zu verwenden

  5. Betriebsparameter und Grenzwerte der moveoff-Komponenten für jede Achse gemäß den zusätzlichen Einstellungen in der INI-Datei festlegen

Note: Die Anwendung moveoff_gui unterstützt Konfigurationen, die bekannte Kinematikmodule mit KINEMATICS_TYPE=KINEMATICS_IDENTITY verwenden. Zu den unterstützten Modulen gehören: trivkins. Bei Identitätskinematiken weist moveoff_gui jeden Achsennamen, der mit dem Kommandozeilenparameter -axes axisnames angegeben wird, dem entsprechenden Gelenk zu.

Ändern Sie eine bestehende Konfiguration wie folgt:

Vergewissern Sie sich, dass es einen INI-Datei-Eintrag für [HAL]HALUI gibt und erstellen Sie einen neuen [HAL]HALFILE-Eintrag für LIB:hookup_moveoff.tcl. Der Eintrag für LIB:hookup_moveoff.tcl sollte allen HALFILE=-Einträgen für HAL-Dateien folgen, die Pins für joint.N.motor-pos-cmd, joint.N.motor-pos-fb und alle an diese Pins angeschlossenen Komponenten (z. B. PID- und Encoder-Komponenten in einem Servosystem) verbinden.

[HAL]
HALUI   = halui
HALFILE = existing_configuration_halfile_1
...
HALFILE = existing_configuration_halfile_n
HALFILE = LIB:hookup_moveoff.tcl

Fügen Sie INI-Datei-Einträge für die Einstellungen pro Achse für jede verwendete Achse hinzu (wenn ein Eintrag nicht definiert ist, wird der entsprechende Eintrag aus dem Abschnitt [AXIS_n] verwendet, wird kein Eintrag gefunden, so wird die Standardeinstellung der moveoff-Komponente verwendet).

Anmerkung
Es wird NICHT empfohlen, die Komponentenvorgaben oder die Werte des Abschnitts [AXIS_n] für die Offset-Einstellungen der einzelnen Achsen zu verwenden.
[MOVEOFF_n]
MAX_LIMIT =
MIN_LIMIT =
MAX_VELOCITY =
MAX_ACCELERATION =

Fügen Sie INI-Datei-Einträge für die Einstellungen der moveoff-Komponent hinzu (um Standardeinstellungen für moveoff zu vermeiden):

[MOVEOFF]
EPSILON =
WAYPOINT_SAMPLE_SECS =
WAYPOINT_THRESHOLD =

Das moveoff_gui wird verwendet, um zusätzliche erforderliche Verbindungen herzustellen und eine Popup-GUI zu erstellen:

  1. Aktivieren/Deaktivieren von Offsets über eine Umschalttaste (engl. togglebutton).

  2. Bereitstellung einer Schaltfläche zum Aktivieren/Deaktivieren des Backtrackings

  3. Steuertasten zum Inkrementieren/Dekrementieren/Nullstellen jeder Achsenverschiebung

  4. Anzeige des aktuellen Wertes jeder Achsenverschiebung

  5. Anzeige des aktuellen Offset-Status (deaktiviert, aktiv, entfernt, etc.)

Die bereitgestellten Schaltflächen sind optional und hängen vom Zustand des moveoff-Komponenten-Pins move-enable ab. Wenn der Pin mv.move-enable beim Start des moveoff_gui NICHT angeschlossen ist, werden sowohl eine Anzeige als auch Steuerelemente zur Aktivierung des Offsets bereitgestellt. In diesem Fall verwaltet der moveoff_gui den moveoff component move-enable pin (mv.move-enable) sowie die Offsets (mv.move-offset-in-M) und die Backtracking-Freigabe (mv.backtrack-enable)

Wenn der mv.move-enable-Pin beim Starten des moveoff_gui angeschlossen ist, bietet die moveoff_gui eine Anzeige, aber KEINE Steuerung. Dieser Modus unterstützt Konfigurationen, die ein Jogwheel oder andere Methoden zur Steuerung der Offset-Eingänge und der Enable-Pins verwenden (mv.offset-in-M, mv.move-enable, mv.backtrack-enable).

Der moveoff_gui stellt die erforderlichen Verbindungen für die Pins der moveoff-Komponente her: mv.power_on und mv.apply-offsets. Der mv.power_on-Pin wird mit dem motion.motion-enabled-Pin verbunden (ein neues Signal wird automatisch erstellt, falls erforderlich). Der mv.apply-offsets ist mit halui.program.is-paused verbunden oder auf 1 gesetzt, je nach der Kommandozeilenoption -mode [ onpause | always ]. Bei Bedarf wird automatisch ein neues Signal erzeugt.

Um das moveoff_gui zu verwenden, fügen Sie in der INI-Datei [APPLICATIONS] einen Eintrag wie folgt hinzu:

[APPLICATIONS]
# Hinweis: eine Verzögerung (in Sekunden) kann erforderlich sein, wenn Verbindungen
# über Post-GUI HAL-Dateien ([HAL]POSTGUI_HALFILE=) hergestellt werden.
DELAY = 0
APP = moveoff_gui option1 option2 ...

Wird die HAL-Datei LIB:hookup_moveoff.tcl zum Laden und Anschließen der moveoff-Komponente verwendet, so wird der mv.move-enable-Pin nicht angeschlossen und die vom moveoff_gui bereitgestellten lokalen Steuerungen werden verwendet. Dies ist die einfachste Methode, um die moveoff-Komponente zu testen oder zu demonstrieren, wenn eine bestehende INI-Konfiguration geändert wird.

Um externe Steuerungen zu aktivieren und gleichzeitig die moveoff_gui-Anzeige für Offset-Werte und Status zu verwenden, müssen HAL-Dateien, die auf LIB:hookup_moveoff.tcl folgen, zusätzliche Verbindungen herstellen. Die mitgelieferten Demonstrationskonfigurationen (configs/sim/axis/moveoff/*.ini) verwenden beispielsweise eine einfache System-HAL-Datei (namens LIB:moveoff_external.hal), um die Pins mv.move-enable,mv.offset-in-M und mv.bactrack-enable mit Signalen zu verbinden:

[HAL]
HALUI = halui
...
HALFILE = LIB:hookup_moveoff.tcl
HALFILE = LIB:moveoff_external.hal

Die von LIB:moveoff_external.hal hergestellten Verbindungen (für eine dreiachsige Konfiguration) sind:

net external_enable mv.move-enable

net external_offset_0 mv.offset-in-0
net external_offset_1 mv.offset-in-1
net external_offset_2 mv.offset-in-2

net external_backtrack_en mv.backtrack-enable

Diese Signale (external_enable, external_offset_M, external_backtrack_en) können von nachfolgenden HALFILES (einschließlich POSTGUI_HALFILEs) verwaltet werden, um eine angepasste Steuerung der Komponente zu ermöglichen, während die moveoff_gui-Anzeige für aktuelle Offset-Werte und den Offset-Status verwendet wird.

Der moveoff_gui wird mit Kommandozeilenoptionen konfiguriert. Einzelheiten zur Funktionsweise von moveoff_gui finden Sie in der Manpage:

$ man moveoff_gui

Eine kurze Auflistung der Kommandozeilenoptionen für moveoff_gui finden Sie in der Kommandozeilenoption help:

$ moveoff_gui --help

Usage:
moveoff_gui [Optionen]

Optionen:
    [--help | -? | -- -h ] (Dieser Hilfe-Text)

    [-mode [onpause | always]] (Standard: onpause)
                                  (onpause: zeigt die Benutzeroberfläche, wenn das Programm pausiert)
                                  (always: Benutzeroberfläche immer anzeigen)

    [-axes axisnames] (Standard: xyz (ohne Leerzeichen))
                              (Buchstaben aus der Menge von: x y z a b c u v w)
                              (Beispiel: -axes z)
                              (Beispiel: -axes xz)
                              (Beispiel: -axes xyz)
    [-inc Inkrementwert] (Voreinstellung: 0.001 0.01 0.10 1.0 )
                              (geben Sie einen pro -inc an (bis zu 4) )
                              (Beispiel: -inc 0.001 -inc 0.01 -inc 0.1 )
    [-size ganze Zahl] (Voreinstellung: 14)
                              (Die Gesamtgröße des Popup-Fensters der Benutzeroberfläche basiert auf der Schriftgröße)
    [-loc center|+x+y] (Voreinstellung: center)
                              (Beispiel: -loc +10+200)
    [-autoresume] (Voreinstellung: nicht verwendet)
                              (Programm fortsetzen, wenn move-enable deaktiviert wird)
    [-delay delay_secs] (Voreinstellung: 5 (Wiederaufnahmeverzögerung))

Optionen für Sonderfälle:
    [-noentry] (Standard: nicht verwendet)
                             (keine Eintrags-Widgets erstellen)
    [-no_resume_inhibit] (Voreinstellung: nicht verwendet)
                             (keinen resume-inhibit-pin verwenden)
    [-no_pause_requirement] (Voreinstellung: nicht verwendet)
                             (keine Prüfung auf halui.program.is-paused)
    [-no_cancel_autoresume] (Voreinstellung: nicht verwendet)
                             (nützlich für die Rücknahme von Offsets mit einfachen)
                             (externe Steuerung)
    [-no_display] (Voreinstellung: nicht verwendet)
                             (Verwendung, wenn sowohl externe Steuerungen als auch Anzeigen)
                             (verwendet werden (siehe Hinweis))

Hinweis: Wenn der moveoff move-enable Pin (mv.move-enable) angeschlossen ist während
      moveoff_gui gestartet wird, sind externe Steuerungen erforderlich und nur
      die Bildschirm-Anzeigen sind verfügbar.