Externe Achsen-Offsets werden bei Teleop (World) Jogs und koordinierten (G-Code) Bewegungen unterstützt. Externe Achsen-Offsets werden pro Achse durch INI-Datei-Einstellungen aktiviert und dynamisch durch HAL-Eingangsstifte gesteuert. Die HAL-Schnittstelle ähnelt der für das Joggen von Rädern verwendeten Schnittstelle. Diese Art von Schnittstelle wird typischerweise mit einem manuellen Impulsgenerator (MPG) implementiert, der mit einer Encoder-HAL-Komponente verbunden ist, die Impulse zählt.
1. INI-Datei Einstellungen
Für jeden Buchstaben der Achse (L in xyzabcuvw):
[AXIS_L]OFFSET_AV_RATIO = Wert (steuert Beschleunigung/Drehung für externe Offsets)
-
Erlaubte Werte: 0 <= Wert <= 0.9
-
Nicht zulässige Werte werden durch 0.1 mit der Meldung an stdout ersetzt
-
Standardwert: 0 (deaktiviert den externen Offset).
Folge: Weglassen von [AXIS_L]OFFSET_AV_RATIO deaktiviert den externen Offset für die Achse. -
Wenn der Wert nicht Null ist, passt das OFFSET_AV_RATIO (r) die konventionelle (Planungs-) Höchstgeschwindigkeit und -beschleunigung an, um die [AXIS_L]-Einschränkungen einzuhalten:
maximale Planungsgeschwindigkeit = (1-r) * MAX_VELOCITY
externe Offset-Geschwindigkeit = ( r) * MAX_VELOCITY
planning max acceleration = (1-r) * MAX_ACCELERATION
external offset acceleration = ( r) * MAX_ACCELERATION
2. HAL-Pins
2.1. Pro-Achse Bewegungs (engl. Motion)-HAL Pins
For each axis letter (L in xyzabcuvw)
-
axis.L.eoffset-enable Input(bit): enable
-
axis.L.eoffset-scale Input(float): scale factor
-
axis.L.eoffset-counts Input(s32): input to counts register
-
axis.L.eoffset-clear Input(bit): clear requested offset
-
axis.L.eoffset Output(float): current external offset
-
axis.L.eoffset-request Output(float): requested external offset
2.2. Andere Bewegungs(engl. Motion)-HAL Pins
-
motion.eoffset-active Output(bit): Externe Offsets ungleich Null angewendet
-
motion.eoffset-limited Output(bit): Bewegung gesperrt durch Softlimit
3. Anwendung
Die Achseneingangs-HAL-Pins (enable, scale, counts) ähneln den Pins, die für das Wheel-Jogging verwendet werden.
3.1. Offset-Berechnung
At each servo period, the axis.L.eoffset-counts pin is compared to its value in the prior period. The increase or decrease (positive or negative delta) of the axis.L.eoffset-counts pin is multiplied by the current axis.L.eoffset-scale pin value. This product is accumulated in an internal register and exported to the axis.L.eoffset-request HAL pin. The accumulation register is reset to zero at each machine-on.
The requested offset value is used to plan the movement for the offset that is applied to the L coordinate and represented by the axis.L.eoffset HAL pin. The planned motion respects the allocated velocity and acceleration constraints and may be limited if the net motion (offset plus teleop jogging or coordinated motion) reaches a soft limit for the L coordinate.
For many applications, the axis.L.eoffset-scale pin is constant and the net axis.L.eoffset-request response to axis.L.eoffset-counts is equivalent to the product of the accumulated value of axis.L.eoffset-counts and the (constant) axis.L.eoffset-scale pin values.
3.2. Maschine aus/Maschine ein
When the machine is turned off, the current position with external offsets is maintained so that there is no unexpected motion at turn off or turn on.
At each startup (machine-on), the internal counts register for each HAL pin axis.L.eoffset-counts is zeroed and the corresponding HAL output pin axis.L.eoffset is reset to zero.
In other words, external offsets are defined as ZERO at each startup (machine-on) regardless of the value of the axis.L.eoffset-counts pins. To avoid confusion, it is recommended that all axis.L.eoffset-counts pins are set to zero when the machine is off.
3.3. Weiche Grenzwerte
External axis offset movements are independently planned with velocity and acceleration settings specified by the [AXIS_L]OFFSET_AV_RATIO. The offsetting motion is not coordinated with teleop jogs nor with coordinated (G-code) motion. During teleop jogging and coordinated (G-code) motion, axis soft limits ([AXIS_L]MIN_LIMIT,MAX_LIMIT) restrict movement of the axis.
When external offsets are applied and motion reaches a soft limit (by external offset increases or teleop jogging or coordinated motion), the HAL pin motion.eoffset-limited is asserted and the axis value is held nominally to the soft limit. This HAL pin can be used by associated HAL logic to truncate additional eoffset counts or to stop the machine (connect to halui.machine.off for instance). If the axis is moved within the soft limit, the motion.eoffset-limited pin is reset.
When operating at a soft limit during coordinated motion that continues to change the planned axis value, the HAL output pin axis.L.eoffset will indicate the current offset — the distance needed to reach the limit instead of the computed offset request. This indicated value will change as the planned axis value changes.
The HAL pin axis.L.eoffset-request indicates the current requested offset that is the product of the internal counts register and the eoffset-scale. In general, the axis.L.eoffset pin value lags the axis.L.eoffset-request value since the external offset is subject to an acceleration limit. When operating at a soft limit, additional updates to the axis.L.eoffset-counts will continue to affect the requested external offset as reflected in the axis.L.eoffset-request HAL pin.
Beim Teleop-Jogging mit aktivierten externen Offsets und angewandten Werten ungleich Null wird bei Erreichen eines Soft-Limits die Bewegung in der betreffenden Achse ohne Verzögerungsintervall angehalten. In ähnlicher Weise wird bei einer koordinierten Bewegung mit aktivierten externen Offsets das Erreichen eines Soft-Limits zum Anhalten der Bewegung ohne Verzögerungsphase führen. In diesem Fall spielt es keine Rolle, ob die Offsets Null sind.
Wenn die Bewegung ohne Verzögerungsphase gestoppt wird, können die Beschleunigungsgrenzen des Systems verletzt werden, was zu Folgefehlern führt: 1) einem Schleppfehler (und/oder einem Klopfen) bei einem Servomotor-System, 2) einem Verlust von Schritten bei einem Schrittmotor-System. Im Allgemeinen wird empfohlen, externe Offsets so zu verwenden, dass eine Annäherung an die weichen Grenzen vermieden wird.
3.4. Anmerkungen
Externe Versätze gelten für Achsenkoordinatenbuchstaben (xyzabcuvw). Alle Gelenke müssen referenziert werden, bevor externe Achsenversätze berücksichtigt werden.
If an axis.L.eoffset-enable HAL pin is reset when its offset is non-zero, the offset is maintained. The offset may be cleared by:
-
ein Umschalter "Maschine aus/Maschine an"
-
reactivating the enable pin and incrementing/decrementing the axis.L.eoffset-counts HAL pin to return the offset to zero.
-
pulsing the axis.L.eoffset-clear HAL pin
Externe Offsets sind für die Verwendung mit "kleinen" Offsets vorgesehen, die innerhalb der Soft-Limit-Grenzen angewendet werden.
Softlimits werden sowohl beim Teleop-Jogging als auch bei der koordinierten Bewegung beachtet, wenn externe Offsets angewendet werden. Wenn jedoch während einer koordinierten Bewegung eine weiche Grenze erreicht wird, kann sich die Verringerung des externen Offsets nicht von der weichen Grenze entfernen, wenn die geplante Bewegung in dieselbe Richtung fortgesetzt wird. Dieser Umstand kann auftreten, da die Geschwindigkeit der Korrektur des Offsets (wie mit [AXIS_L]OFFSET_AV_RATIO eingestellt) geringer sein kann als die geplante Gegenbewegung. In solchen Fällen wird die geplante koordinierte Bewegung angehalten (oder gestoppt), um eine Bewegung weg von der weichen Grenze zu ermöglichen, wenn korrigierende Änderungen am externen Offset vorgenommen werden.
3.5. Warnung
Die Verwendung von externen Offsets kann die Maschinenbewegung erheblich verändern. Die Steuerung von externen Offsets mit HAL-Komponenten und Verbindungen sowie alle zugehörigen Benutzerschnittstellen sollten vor dem Einsatz sorgfältig entworfen und getestet werden.
4. Verwandte HAL-Komponenten
4.1. eoffset_per_angle.comp
Komponente zur Berechnung eines externen Offsets aus einer Funktion auf der Grundlage eines gemessenen Winkels (Drehkoordinate oder Spindel). Siehe die Manpage für Details ($ man eoffset_per_angle).
5. Testen
Der externe Achsenversatz wird durch Hinzufügen einer [AXIS_L]-Einstellung für jede Kandidatenachse aktiviert. Zum Beispiel:
[AXIS_Z] OFFSET_AV_RATIO = 0.2
Zum Testen ist es praktisch, eine Jogwheel-Schnittstelle mit der sim_pin-GUI zu simulieren. Zum Beispiel in einem Terminal:
$ sim_pin axis.z.eoffset-enable axis.z.eoffset-scale axis.z.eoffset-counts
Die Verwendung externer Offsets wird durch die Anzeige von Informationen zu den aktuellen Offsets unterstützt: der aktuelle E-Offset-Wert und der angeforderte E-Offset-Wert, der Achsen-Pos-Cmd und (für eine Identitätskinematik-Maschine) der entsprechende Gelenkmotor-Pos-Cmd und Motor-Offset. Die mitgelieferte Sim-Konfiguration (siehe unten) demonstriert ein Beispiel für ein PyVCP-Panel für die AXIS GUI.
Wenn keine benutzerdefinierte Anzeige vorhanden ist, kann halshow als Hilfsanwendung mit einer benutzerdefinierten Überwachungsliste gestartet werden.
Beispiel für INI-Datei-Einstellungen zur Simulation der HAL-Pin-Eoffset-Verbindungen und zur Anzeige von E-Offset-Informationen für die Z-Achse (für Identitätskinematik mit z==joint2):
[APPLICATIONS] APP = sim_pin \ axis.z.eoffset-enable \ axis.z.eoffset-scale \ axis.z.eoffset-counts \ axis.z.eoffset-clear APP = halshow --fformat "%0.5f" ./z.halshow
Wo sich die Datei z.halshow (im Konfigurationsverzeichnis) befindet:
pin+joint.2.motor-pos-cmd
pin+joint.2.motor-offset
pin+axis.z.pos-cmd
pin+axis.z.eoffset
pin+axis.z.eoffset-request
pin+motion.eoffset-limited
6. Beispiele
Die bereitgestellten Simulationskonfigurationen demonstrieren die Verwendung externer Offsets, um einen Ausgangspunkt für die Anpassung an die reale Hardware zu bieten.
Die Sim-Konfigurationen verwenden die INI-Einstellung [HAL]HALFILE =LIB:basic_sim.tcl, um alle Routine-HAL-Verbindungen für die in der INI-Datei [TRAJ]COORDINATES= angegebenen Achsen. Die HAL-Logik, die zur Demonstration der externen Offset-Funktionalität benötigt wird und die GUI HAL Pin Verbindungen für ein PyVCP Panel sind in getrennten HAL Dateien. Eine Nicht-Simulations-Konfiguration sollte den Eintrag LIB:basic_sim.tcl für die Maschine in den HALFILEs ersetzen. Die mitgelieferten PyVCP-Dateien (.hal und .xml) können ein Ausgangspunkt für anwendungsspezifische Benutzeroberflächen sein.
6.1. eoffsets.ini
Die Sim-Konfiguration sim/configs/axis/external_offsets/eoffsets.ini demonstriert eine kartesische XYZ-Maschine mit Steuerelementen zur Aktivierung externer Offsets auf jeder Achse.
Alle wichtigen Positions- und Offsetwerte werden angezeigt.
Ein sim_pin GUI bietet Steuerelemente für die Achsen-Offset-Pins: eoffset-scale & eoffset-counts (über Signal e:<L>counts), eoffset-clear (über Signal e:clearall)
Ein Skript (eoffsets_monitor.tcl) wird verwendet, um die axis.L.counts-Pins beim Ausschalten der Maschine auf Null zu setzen.
6.2. jwp_z.ini
Die Sim-Konfiguration sim/configs/axis/external_offsets/jwp_z.ini demonstriert eine Jog-While-Pause-Funktion für eine einzelne (Z-)Koordinate:
Die LEDs auf dem Bedienfeld dienen zur Anzeige wichtiger Statusinformationen.
Es gibt Steuerelemente zum Einstellen des Skalierungsfaktors für den Eoffset und zum Erhöhen/Verringern/Löschen der Eoffset-Zähler.
6.3. dynamische_offsets.ini
Diese Sim-Konfiguration sim/configs/axis/external_offsets/dynamic_offsets.ini demonstriert dynamisch angewandte Offsets durch Anschluss einer Sinuswellenform an die externen Offset-Eingänge für die Z-Koordinate.
Die LEDs auf dem Bedienfeld dienen zur Anzeige wichtiger Statusinformationen.
Es gibt Steuerelemente zur Änderung der INI-Datei-Einstellungen für die maximale Geschwindigkeit und Beschleunigung der Z-Achse.
Die Parameter des Wellenformgenerators lassen sich mit Hilfe von Reglern einstellen.
Eine Halscope-App wird gestartet, um die angelegte Wellenform, die Offset-Antwort und die Motor-CMD-Antwort anzuzeigen.
Anmerkung
|
Änderungen an der z-Koordinate max-acceleration und max-velocity werden während der Ausführung eines Programms nicht bestätigt. |
6.4. opa.ini (eoffset_per_angle)
The opa.ini configuration uses the INI component eoffset_per_angle ($ man eoffset_per_angle) to demonstrate an XZC machine with functional offsets computed from the C coordinate (angle) and applied to the transverse (X) coordinate. Offset computations are based on a specified reference radius typically set by a program (or MDI) M68 command to control a motion.analog-out-NN pin.
Die LEDs auf dem Bedienfeld dienen zur Anzeige wichtiger Statusinformationen.
Es werden Funktionen für Innen- und Außenpolygone (nsides >= 3), Sinuswellen und Rechteckwellen bereitgestellt. Die Funktionen können mit dem Stift fmul in der Frequenz multipliziert und mit dem Stift rfrac in der Amplitude verändert werden (Bruchteil des Referenzradius).
Es gibt Bedienelemente zum Starten/Stoppen von Offset-Wellenformen und zum Einstellen des Funktionstyps und seiner Parameter.