IOV2(1)
π iov2(1) β okay bestie, let's talk I/O π
So this is the manual page for iov2, from the IOCONTROL - IOV2(1) corner of The Enhanced Machine Controller. Pull up a chair, hydrate, we're doing I/O control. π¦
β¨ NAME β¨
iov2 β the way it interacts with HAL or G-code in non-realtime. That's the whole vibe. π
πΈ SYNOPSIS πΈ
[EMCIO]
EMCIO = iov2
π DESCRIPTION π
Okay so, I/O control handles all your I/O tasks β think coolant, toolchange, E-stop and lube. Those signals get turned on and off in non-realtime</>, either with G-code, or in the case of E-stop, in HAL. Simple, iconic, no notes. β¨
Then there's I/O Control V2 (iov2), which is the glow-up: it adds more toolchanger support for communication with the toolchanger. It's giving upgraded, honestly. π₯
And the choice between io and iov2? That's yours, bestie β you pick it in the [EMCIO] section of the INI file. π
π Pins π
β Basic 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 estop condition exists. πiocontrol.0.lubeβ (Bit, Out) TRUE when lube is requested. Here's the tea: 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. So it's tracking both of those things, fr fr.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 estop condition exists.iocontrol.0.user-request-enableβ (Bit, Out) TRUE when the user has requested that estop be cleared. π
π Additional IO v2 pins π
This is the new stuff, the sequel, the part two that actually ate. π₯
iocontrol.0.emc-abortβ (BIT,OUT) Signals emc-originated abort to toolchanger.iocontrol.0.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,iov2will block untilemc-abort-ackis raised. Like, it's waiting. It will simply not move on. So don't leave it hanging bestie. π
iocontrol.0.emc-reasonβ (S32,OUT) Convey cause for EMC-originated abort to toolchanger. Usage: UI informational. Valid during emc-abort True.iocontrol.0.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. So it goes off first, before all of that. β¨iocontrol.0.start-change-ackβ (BIT,IN) Acknowledgment line for start-change.iocontrol.0.toolchanger-faultβ (BIT,IN) Toolchanger signals fault. This line is continuously monitored. A fault toggles a flag in iocontrol which is reflected in thetoolchanger-faultedpin.iocontrol.0.toolchanger-fault-ackβ (BIT,OUT) Handshake line for above signal. Will be set byiov2after above fault line True is recognized and deasserted whentoolchanger-faultdrops. Toolchanger is free to interpret the ack; reading the-acklines assures fault has been received and acted upon. π€iocontrol.0.toolchanger-reasonβ (S32,IN) Convey reason code for toolchanger-originated fault toiov2. Usageiocontrol.0.toolchanger-faultedβ (BIT,OUT) Signalstoolchanger-notifyline has toggled andtoolchanger-reason-codewas in the fault range. Next M6 will abort. πiocontrol.0.toolchanger-clear-faultβ (BIT,IN) Resets TC fault condition. Deassertstoolchanger-faultediftoolchanger-notifyis line False. Usage: UI β e.g. clear fault condition button. π§Ήiocontrol.0.stateβ (S32,OUT) Debugging pin reflecting internal state. π
Wanna go deeper? There's more lore here:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal
That's your additional information, bestie. Go read it. πβ¨
π¦ SEE ALSO π¦
io(1) iocontrol(1) LinuxCNC(1)
π REPORTING BUGS π
Found a bug? Don't suffer in silence, report it, it's the responsible main-character move:
https://github.com/LinuxCNC/linuxcnc/issues
π AUTHOR π
Derived from a work by Fred Proctor & Will Shackleford. Rework & adding v2 protocol support by Michael Haberler.
The v2 glow-up? That was Michael. Iconic behaviour. π
π COPYRIGHT π
Copyright Β© 2011 Michael Haberler.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
So like, it's free, which slays, but also zero warranty, which is the tradeoff, no cap. π«Ά
Okay that's the whole page, bestie!! This was the IOCONTROL - IOV2(1) page from the LinuxCNC Documentation, dated 2021-04. Go forth and control your I/O. You got this. Periodt. πβ¨π
π¦ where this page comes from
- debian trixie: linuxcnc-uspace 1:2.9.4-2+deb13u1 Β· GFDL-1.1-or-later
- ubuntu questing: linuxcnc-uspace 1:2.9.4-2ubuntu2
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- Copyright (c) 2020 andypugh
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms