1. Beschreibung

I/O control handles I/O tasks like coolant, toolchange, E-stop and lube. The signals are turned on and off with G-code or in the case of E-stop 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-style template for operator error display (negative toolchanger fault codes). No quoting needed. Example: IO_ERROR = Toolchanger fault %d. Default: toolchanger error %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 when flood coolant is requested.

  • iocontrol.0.coolant-mist (bit, out) TRUE when mist coolant is requested.

  • iocontrol.0.emc-enable-in (bit, in) Should be driven FALSE when an external E-stop condition exists.

  • iocontrol.0.lube (bit, out) TRUE when lube is requested. This pin gets driven TRUE when the controller comes out of E-stop, and when the "Lube On" command gets sent to the controller. It gets driven FALSE when the controller goes into E-stop, and when the "Lube Off" command gets sent to the controller.

  • iocontrol.0.lube_level (bit, in) Should be driven FALSE when lubrication tank is empty.

  • iocontrol.0.tool-change (bit, out) TRUE when a tool change is requested

  • iocontrol.0.tool-changed (bit, in) Should be driven TRUE when a tool change is completed.

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

  • iocontrol.0.tool-prep-number (s32, out) The number of the next tool, from the RS274NGC T-word

  • iocontrol.0.tool-prep-pocket (s32, out) This is the pocket number (location in the tool storage mechanism) of the tool requested by the most recent T-word.

  • iocontrol.0.tool-prepare (bit, out) TRUE when a Tn tool prepare is requested.

  • iocontrol.0.tool-prepared (bit, in) Should be driven TRUE when a tool prepare is completed.

  • iocontrol.0.user-enable-out (bit, out) FALSE when an internal E-stop condition exists

  • iocontrol.0.user-request-enable (bit, out) TRUE when the user has requested that E-stop be cleared

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

  • emc-abort: (bit, out) signals emc-originated abort to toolchanger.

  • emc-abort-ack: (bit, in) Acknowledge line from toolchanger for previous signal, or jumpered to abort-tool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until emc-abort-ack is raised.

  • emc-reason: (S32, out) convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort TRUE.

  • start-change: (bit, out) asserted at the very beginning of an M6 operation, before any spindle-off, quill-up, or move-to-toolchange-position operations are executed.

  • start-change-ack: (bit, in) acknowledgment line for start-change.

  • toolchanger-fault: (bit, in) toolchanger signals fault. This line is contionuously monitored. A fault toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin.

  • toolchanger-fault-ack: (bit, out) handshake line for above signal. will be set by iov2 after above fault line TRUE is recognized and deasserted when toolchanger-fault drops. Toolchanger is free to interpret the ack; reading the -ack lines assures fault has been received and acted upon.

  • toolchanger-reason: (S32, in) convey reason code for toolchanger-originated fault to iov2. Usage: signal whether to continue or abort the program, plus UI informational if negative. Read during toolchanger-fault TRUE. Non-zero values will cause an Axis operator operator message or error message, see below.

  • toolchanger-faulted: (bit, out) signals toolchanger-notify line has toggled and toolchanger-reason-code was in the fault range. Next M6 will abort.

  • toolchanger-clear-fault: (bit, in) resets TC fault condition. Deasserts toolchanger-faulted if toolchanger-notify is line FALSE. Usage: UI - e.g., clear fault condition button.

4. Parameter

  • iocontrol.0.tool-prep-index (s32, RO) IO’s internal array index of the prepped tool requested by the most recent T-word. 0 if no tool is prepped. On random toolchanger machines this is tool’s pocket number (i.e., the same as the tool-prep-pocket pin), on non-random toolchanger machines this is a small integer corresponding to the tool’s location in the internal representation of the tool table. This parameter returns to 0 after a successful tool change M6.

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.

The usage of the toolchanger-fault-ack pin is optional. It will become TRUE when toolchanger-fault is raised and the toolchanger-reason pin has been read by iov2.