1. Beschreibung

Die E/A-Steuerung übernimmt E/A-Aufgaben wie Kühlmittel, Werkzeugwechsel, Notaus (engl. E-stop). Die Signale werden mit G-Code ein- und ausgeschaltet oder im Falle des Notaus in HAL.

I/O Control V2 bietet mehr Unterstützung für die Kommunikation mit dem Werkzeugwechsler.

  • Von LinuxCNC verursachter Abbruch und Werkzeugwechslerfehler: iocontrol bricht eine laufende Wechseloperation zuverlässig ab (Werkzeugwechsel bestätigt). Ein Werkzeugwechsler kann jederzeit einen Fehler melden, der zum Abbruch des nächsten M6 führt. Wenn beispielsweise ein Werkzeugwechsler während eines Vorbereitungsvorgangs eine leere Tasche vorfindet, sollte er iocontrol einen Fehler melden können, und iocontrol sollte entsprechend reagieren, wenn der M6-Wechselvorgang ausgeführt wird.

  • Abbruch-/Fehlerursache kommunizieren: Lassen Sie iocontrol wissen, warum der Werkzeugwechsler einen Fehler verursacht hat und warum iocontrol abgebrochen hat. Dies ist für UI-Zwecke. Es wäre ein Kandidat für einen #5xxx Parameter und eine selektive Anzeige in der Benutzeroberfläche.

  • Keine Race Conditions zwischen iocontrol und Werkzeugwechsler: Das Protokoll zwischen iocontrol und Werkzeugwechsler muss eindeutig sein, welche Operation signalisiert wird und ob eine Änderungsoperation abgebrochen oder abgeschlossen wird.

  • Konsistente Ansicht des Status: Beide Parteien müssen zu jedem Zeitpunkt eine einheitliche Sicht auf den Stand der Dinge in Bezug auf abgebrochene und abgeschlossene Vorgänge sowie auf die Anzahl der Werkzeuge und deren Platz haben.

  • Handshaked Signalisierung eines Abbruchs/Fehlers: Nach der Signalisierung eines Abbruchs von LinuxCNC an den Werkzeugwechsler, oder bei einem Fehler den der Werkzeugwechsler angezeigt, wird ein Handshake erwartet, um zuverlässige Signalisierung zu gewährleisten, und optional lock-step Verhalten zu erzwingen. Handshaking ist optional und kann in HAL überbrückt werden, wenn es nicht benötigt wird.

  • Rückwärtskompatibilität: Ein Werkzeugwechsler, der die iocontrol emc-abort-Zeile ignoriert und an der alten Handhabung festhält, wird "weiterhin funktionieren" (vorbehaltlich einer Race Condition)

Wenn Sie strenge Zeitvorgaben haben oder einfach mehr E/A benötigen, sollten Sie stattdessen die Echtzeit-E/A verwenden, die von motion bereitgestellt wird.

2. Anwendung

INI-Datei Optionen:

[EMCIO] Abschnitt
PROTOCOL_VERSION = 2

Der Standardwert ist 2. Mit der Einstellung 1 wird das alte iocontrol-Verhalten emuliert.

EMCIO = iov2 -support-start-change

You need to explicitly enable the start-change protocol by adding the -support-start-change option; otherwise the start-change pin remains low and start-change-ack is ignored. The reason for this is better backwards compatibility.

[TASK] Abschnitt
IO_ERROR

Printf-angepasste Vorlage für die Anzeige von Bedienerfehlern (negative Werkzeugwechsler-Fehlercodes). Keine Anführungszeichen erforderlich. Beispiel: IO_ERROR = Wechslerfehler %d. Standard: Werkzeugwechsel Fehler %d.

[EMC] Abschnitt
DEBUG

Um eine (ziemlich detaillierte) Spur zu erhalten, setzen Sie entweder das RCS-Debugging-Flag (0x00000200), um RCS-Debugging-Meldungen in ganz LinuxCNC einzuschalten, oder verwenden Sie das neue iocontrol-Debugging-Bit (0x00001000) nur für iov2-Meldungen.

3. Pins

  • iocontrol.0.coolant-flood (bit, out) TRUE wenn Kühlmittelflut angefordert wird.

  • iocontrol.0.coolant-mist (bit, out) TRUE wenn Kühlmittelnebel angefordert wird.

  • iocontrol.0.emc-enable-in (bit, in) Sollte FALSE sein, wenn eine externe Notaus-Bedingung vorliegt.

  • iocontrol.0.tool-change (bit, out) TRUE wenn ein Werkzeugwechsel angefordert wird

  • iocontrol.0.tool-changed (bit, in) Sollte TRUE sein, wenn ein Werkzeugwechsel abgeschlossen ist.

  • iocontrol.0.tool-number (s32, out) Aktuelle Werkzeugnummer

  • iocontrol.0.tool-prep-number (s32, out) Die Nummer des nächsten Werkzeugs, aus dem RS274NGC T-Wort

  • iocontrol.0.tool-prep-pocket (s32, out) Dies ist die Platznummer (Speicherplatz im Werkzeugspeicher) des Werkzeugs, das durch das letzte T-Wort angefordert wurde.

  • iocontrol.0.tool-prepare (bit, out) TRUE wenn eine TnWerkzeugvorbereitung angefordert wird.

  • iocontrol.0.tool-prepared (bit, in) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist.

  • iocontrol.0.user-enable-out (bit, out) FALSE, wenn eine interne Notaus-Bedingung vorliegt

  • iocontrol.0.user-request-enable (bit, out) TRUE, wenn der Benutzer die Freigabe des Notaus-Schalters angefordert hat

Zusätzliche Pins hinzugefügt durch I/O Control V2

  • emc-abort: (bit, out) signalisiert emc-verursachten Abbruch an Werkzeugwechsler.

  • emc-abort-ack: (bit, in) Bestätigung vom Werkzeugwechsler für das vorherige Signal, oder gejumpert auf abort-tool-change, wenn nicht im Werkzeugwechsler verwendet. Hinweis: Nach der Signalisierung eines emc-abort blockiert iov2 bis emc-abort-ack ausgelöst wird.

  • emc-reason: (S32, out) Übermittelt die Ursache für den EMC-verursachten Abbruch an den Werkzeugwechsler. Verwendung: UI informational. Gültig während emc-abort TRUE.

  • start-change: (bit, out) wird zu Beginn einer M6-Operation ausgelöst, bevor eine Spindel-Aus-, Hochfahr- oder Move-to-toolchange-Position-Operation ausgeführt wird.

  • start-change-ack: (bit, in) Quittungsleitung (engl. acknowledgement line) für start-change.

  • Werkzeugwechsler-Störung: (bit, in) Werkzeugwechsler meldet Störung. Diese Leitung wird laufend überwacht. Ein Fehler schaltet ein Flag in iocontrol um, das sich in dem fehlerhaften Pin des Werkzeugwechslers widerspiegelt.

  • toolchanger-fault-ack: (bit, out) Handshake-Leitung für obiges Signal. wird von iov2 gesetzt, nachdem die obige Fehlerleitung TRUE erkannt und abgewertet wurd, wenn toolchanger-fault fällt. Es steht dem Werkzeugwechsler frei, das Ack zu interpretieren; das Lesen der -ack-Leitungen stellt sicher, dass der Fehler empfangen wurde und darauf reagiert wird.

  • toolchanger-reason: (S32, in) Übermittlung des Grundcodes für den vom Toolchanger verursachten Fehler an iov2. Verwendung: Signal, ob das Programm fortgesetzt oder abgebrochen werden soll, plus UI-Informationen, falls negativ. Wird während des Werkzeugwechsler-Fehlers gelesen TRUE. Werte ungleich Null führen zu einer Meldung des Achsenbedieners oder einer Fehlermeldung, siehe unten.

  • toolchanger-faulted: (bit, out) signalisiert, dass die toolchanger-notify-Leitung umgeschaltet hat und der toolchanger-reason-code im Fehlerbereich lag. Der nächste M6 bricht ab.

  • toolchanger-clear-fault: (bit, in) setzt TC-Fehlerzustand zurück. Setzt toolchanger-faulted zurück, wenn toolchanger-notify auf FALSE steht. Verwendung: UI - z.B. Schaltfläche Fehlerzustand löschen.

4. Parameter

  • iocontrol.0.tool-prep-index (s32, RO) IO’s interner Array-Index des vorbereiteten Werkzeugs, das durch das letzte T-Wort angefordert wurde. 0, wenn kein Werkzeug vorgerüstet ist. Bei Maschinen mit Zufallswerkzeugwechsler ist dies die Platznummer des Werkzeugs (d.h. dieselbe wie der Tool-Prep-Pocket-Pin), bei Maschinen ohne Zufallswerkzeugwechsler ist dies eine kleine Ganzzahl, die der Position des Werkzeugs in der internen Darstellung der Werkzeugtabelle entspricht. Dieser Parameter kehrt nach einem erfolgreichen Werkzeugwechsel M6 auf 0 zurück.

5. Kommunikation

Wenn LinuxCNC signalisiert einen Abbruch aus irgendeinem Grund, wird dies in der emc-abort und emc-reason Pins reflektiert. Es wird erwartet, dass der Werkzeugwechsler den emc-abort-Pin bestätigt, indem er den emc-abort-ack-Pin anhebt - iov2 wird blockieren, bis dies geschehen ist. Wenn Sie die Abort-Handshake-Funktion nicht benötigen, jumpen Sie sie wie folgt:

net emc-abort-ack iocontrol.0.emc-abort iocontrol.0.emc-abort-ack

Der emc-reason-Pin wird als gültig angesehen, wenn emc-abort TRUE ist.

Die Auslöser-Codes sind wie folgt für LinuxCNC intern generiert Abbrüche (siehe emc.hh ca Zeile 321):

  • EMC_ABORT_TASK_EXEC_ERROR = 1,

  • EMC_ABORT_AUX_ESTOP = 2,

  • EMC_ABORT_MOTION_OR_IO_RCS_ERROR = 3,

  • EMC_ABORT_TASK_STATE_OFF = 4,

  • EMC_ABORT_TASK_STATE_ESTOP_RESET = 5,

  • EMC_ABORT_TASK_STATE_ESTOP = 6,

  • EMC_ABORT_TASK_STATE_NOT_ON = 7,

  • EMC_ABORT_TASK_ABORT = 8,

  • EMC_ABORT_USER = 100

iov2 fügt einen weiteren Code hinzu, nämlich EMC_ABORT_BY_TOOLCHANGER_FAULT = 101, der signalisiert wird, wenn ein M6 abbricht, weil der Pin "toolchanger-faulted" TRUE ist.

Um Werkzeugwechsler-Fehler an LinuxCNC zu signalisieren, verdrahten Sie den Toolchanger-Fault-Pin und optional die Toolchanger-Reason- und Toolchanger-Ack-Pins.

Der Toolchanger-Fault löst den Fehlerzustand aus, der sich im Toolchanger-Faulted-Pin widerspiegelt. Dieser Zustand kann durch Aktivierung des Pins "toolchanger-clear-fault" gelöscht werden, sofern der Pin "toolchanger-fault" FALSE ist.

Der Wert des toolchanger-reason Pins wird wie folgt verwendet:

  • toolchanger-reason > 0 : Der Werkzeugwechsel wird nicht abgeschlossen und das Programm wird fortgesetzt, jedoch wird der Parameter #5060 auf 1,0 gesetzt, um den Fehler anzuzeigen. Der Parameter #5601 enthält den Wert des Werkzeugwechslergrundes.

    • toolchanger-reason = 0 : das Programm wird abgebrochen

    • toolchanger-reason < 0 : Das Programm wird abgebrochen und eine Fehlermeldung wird mit Hilfe der Vorlage IO_ERROR angezeigt.

Die Verwendung des Pins "toolchanger-fault-ack" ist optional. Dieser wird TRUE, wenn toolchanger-fault ausgelöst wird und der toolchanger-reason-Pin von iov2 gelesen wurde.