There are several common ways of setting a process control value, such as temperature, in NICE. While the examples below, use temperature controllers, this works identically for all process controllers.
This is one of the most common modes of operation. The user changes the setpoint of the temperature and then NICE waits a specified amount of time before declaring that the temperature has changed. It does not check to see if the temperature has actually been reached.
A hold time of 10 minutes (600 seconds) is desired. These commands are issued to set up the temperature device in NICE:
Then, every time the user changes the temperature they would issue the command e.g. to move to 10 degrees
move temp 10
and this command will take 600 seconds to complete.
Sometimes the user wants to move on to other commands (e.g. to measure scattering while cooling or heating). The simplest way to do this is to directly move the setpoint you are interested in:
move temp.setpoint_1 10
This will skip NICE's wait-for-stabilization algorithm completely.
Note, you avoid waiting, even when moving the primary node (ex. move temp 10) by setting both temp.holdTime_N and temp.timeout_N to 0.
This is the most advanced way of operating, where the user specifies the conditions for having the temperature "close enough" to the setpoint to move on. The temperature device will wait until the temperature stays within the tolerance for toleranceBandTime (without any measurements outside the tolerance) or until the overall timeout is reached, whichever happens first. Once it reaches that point, it will wait (always!) the specified holdTime, then it will move on.
The user wants the sample temperature to be within 1 degree of the setpoint, for 5 minutes (300 s) before doing a scattering measurement. If the temperature doesn't stabilize within 30 minutes (1800 s), they want to move on and measure anyway. They want to wait an additional 2 minutes (120 s) after stability or timeout just for peace of mind. Then the temperature device would be set up as
Then they would change the temperature as usual
move temp 100
In this example if the temperature measured within 1.0 degree of 100.0 at minute 3, then stayed within 1.0 degree of 100.0 for the next 5 minutes, it would start the holdTime timer at minute 8 and the temperature would be considered "reached" at minute 10, beginning the next item in the queue (or starting the measurement in a trajectory or runPoint on SANS)
If, on the other hand, it does not get within 1.0 degree of 100 within 30 minutes, it would then start the holdTime timer at minute 30, and the temperature would be considered "reached" at minute 32.