IOV2(1)

πŸ“¦
version 2.9.4 Β· 2 versions
, in debian trixie, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– 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, iov2 will block until emc-abort-ack is 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 the toolchanger-faulted pin.
  • iocontrol.0.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. 🀝
  • iocontrol.0.toolchanger-reason β€” (S32,IN) Convey reason code for toolchanger-originated fault to iov2. Usage
  • iocontrol.0.toolchanger-faulted β€” (BIT,OUT) Signals toolchanger-notify line has toggled and toolchanger-reason-code was in the fault range. Next M6 will abort. 😭
  • iocontrol.0.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. 🧹
  • 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 Β© 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