IO(1)

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

okay so bestie, pull up a chair and hydrate πŸ’– because we're talking about iocontrol, the IO(1) HAL component. she's the backstage crew of LinuxCNC β€” nobody claps for her, but the entire show falls apart without her. no cap. πŸŽ€


✨ NAME ✨

iocontrol β€” interacts with HAL or G-code in non-realtime πŸ¦‹


🌸 SYNOPSIS 🌸

[EMCIO]
EMCIO = io

πŸ’… DESCRIPTION πŸ’…

I/O control handles I/O tasks like coolant, toolchange, E-stop and lube. The signals are turned on and off in non-realtime with G-code, or β€” in the case of E-stop β€” in HAL. she's literally the group chat moderator of your machine's I/O. πŸ”₯

The following pins are created by the non-realtime IO controller, usually found in $LINUXCNC_HOME/bin/io.

🫢 real talk bestie: iocontrol is a non-realtime process. if you have strict timing requirements, or you simply need more I/O, consider using the realtime synchronized I/O provided by motion(9) instead. that's the main character version of this. ⭐

The INI file is searched for in the directory from which halcmd was run, unless an absolute path is specified. iykyk πŸ“


πŸŽ€ 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. πŸ™‹
  • iocontrol.0.tool-prep-index β€” (s32, Out) 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 the tool's pocket number (ie, 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). 🧠

πŸ‘‘ SEE ALSO πŸ‘‘

io(1) iov2(1) motion(9)


πŸ› REPORTING BUGS πŸ›

Report bugs at https://github.com/LinuxCNC/linuxcnc/issues β€” bestie, if you found a bug, tell them, don't just suffer in silence πŸ’€


πŸ’œ AUTHOR πŸ’œ

Derived from a work by Fred Proctor & Will Shackleford. 🫢


Copyright Β© 2004 the LinuxCNC project.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 🫠 (yes, it's yelling at you in caps. respect the caps.)


that's the whole vibe, bestie β€” this page came from the LinuxCNC Documentation, dated 2007-08-25, and it's literally titled IOCONTROL - IO(1). go forth and slay your I/O. πŸ’…βœ¨