---
name: "limit_axis"
section: "9"
platform: "linux"
package: "linuxcnc-uspace"
version: "1:2.9.4-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/limit_axis"
---

# limit\_axis(9)

Dynamic range based axis limits

## NAME

limit\_axis - Dynamic range based axis limits

## SYNOPSIS

**loadrt limit\_axis \[count=*N*\|names=*name1*\[,*name2...*\]\] \[personality=*P1,P2,...*\]**

## DESCRIPTION

limit\_axis.c

Limit axis to certain limits at varying inputs For example on a spindle with C rotation, to avoid hitting a gantry when the height is above Z-10\
  \- Use Z axis as feedback\
  \- Use 2 ranges (0,-10) (-10, -40)\
  \- When Z is above 10, C rotation is limited to range 0\
  \- When Z is below 10, C rotation is limited to range 1

 Usage:\
  loadrt limit\_axis count=3 personality=2,3,2\
  or\
  loadrt limit\_axis names=limit\_x,limit\_y,limit\_z personality=2,3,2

 The "personality" argument defines how many ranges are supported by each instance.\
  (Note that no spaces can be used in the names= and personality= parameters)

 Caveats\
  \- Searches ranges from 0 to 9 and will take the first range that matches\
  \- Ranges are inclusive min\_range \<= feedback \<= max\_range\
  \- Max can not be less than minimum for any group\
  \- Sticky indicates, to not check other ranges if the feedback is still in the current range\
  \- Enable allows for a range to be turned on/off, for cases such as avoiding a tool changer, but allowing sometimes

## FUNCTIONS

- **limit-axis.***N* (requires a floating-point thread)

  ## PINS

- **limit-axis.*N*.error-no-range bit out**

  error pin indicating that no range matches the fb

- **limit-axis.*N*.min-output float out**

  Minimum limit output

- **limit-axis.*N*.max-output float out**

  Maximum limit output

- **limit-axis.*N*.fb float in**

  Feedback pin, the value of this pin determines which range is active

- **limit-axis.*N*.current-range u32 out**

  Indicates which range is currently active

- **limit-axis.*N*.min-limit-*MM* float in (MM=00..personality)**

  The array of minimum limits to select from

- **limit-axis.*N*.max-limit-*MM* float in (MM=00..personality)**

  The array of macimum limits

- **limit-axis.*N*.min-range-*MM* float in (MM=00..personality)**

  Defines the range of values with which the fb is compared to set the range

- **limit-axis.*N*.max-range-*MM* float in (MM=00..personality)**

  Defines the range of values with which the fb is compared to set the range

- **limit-axis.*N*.enable-*MM* bit in (MM=00..personality)**

  Used to enable and disable a specific range

- **limit-axis.*N*.sticky-*MM* bit in (MM=00..personality)**

  Used to make specific range 'sticky' or not

- **limit-axis.*N*.error-range-*MM* bit out (MM=00..personality) (default: *1*)**

  Error bit indicating that the fb pin falls outside all ranges

- **limit-axis.*N*.error-limit-*MM* bit out (MM=00..personality) (default: *1*)**

  Error bit indicating that the max limit is not larger than the min limit

## AUTHOR

Chad Woitas

## LICENSE

GPL
