In addition to an external limit switch, knobby implements a virtual bounding box outside of which the objective will not move. This additional safety feature is turned on by clicking the travel limit checkbox in knobby’s panel (highlighted in yellow below).
The bounding box is centered on the location the objective was a the time the checkbox is turned on. Additionally, the “center” push button allows one to re-center the bounding box after moving the objective to a new location.
While in operation, the system prevents knobby to travel beyond the bounding box. If a limit is reached, all motors will stop and the axis that is attempting to go out of bounds will be shown in red:
I the picture above, the z-axis is instructed to go to to -520 um, which exceeds the 500 um limit on down travel. Once an axis hits a limit, none of the motors will move until the scope is brought back to a position inside the bounding box. In the example above, the user will have to turn the knobs to specify a desired z-axis location above 500 um. Knobby will accept such a coordinate, move the objective to that location, and the motors will become responsive again.
Note that if the Travel Limit checkbox is unchecked while the system is out of bounds, the system will become responsive immediately, and next time you move the knobs it will move directly to the desired location.
The limits of the bounding box are defined in the scanbox_config.m file via the tri_limit variable:
sbconfig.tri_limit = [0 -500 800 -800 1000 -1000]; % in um
This array of numbers specify the values of the paramters zmax, zmin, ymax, ymin, xmax, xmin, and the units are micrometers. A value of zero can be used if one does not want to impose a limit along a given direction of movement. In the definition above, zmax is zero, meaning that movement of the scope upwards is not limited, while movement downwards is limited at 500um.
The bounding box is active in both position mode or velocity mode. In velocity mode, if the system goes out of bounds the letter corresponding to that axis changes color to red:
If this happens, the system will not respond to any other commands in velocity mode. You should switch to position mode, and move the scope to a coordinate inside the bounding box to allow the system to become responsive again. Of course, unchecking the Travel Limit checkbox will also release the system, but consider the scope will then move immediately to the last instructed location.
Note that while limit travel is active, it will apply to any both manual interactions (user physically turning the knobs) or remote network commands (as those used by knobby scheduler or plug-ins).