IO(1)
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:iocontrolis 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 bymotion(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.0if no tool is prepped. On Random toolchanger machines this is the tool's pocket number (ie, the same as thetool-prep-pocketpin), 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 to0after a successful tool change (M6). π§
π SEE ALSO π
π 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 π
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. π
β¨
π¦ 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
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms