Skip to main content
U.S. flag

An official website of the United States government

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

Using Process Controller Devices

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.

Change Setpoint and Wait a Fixed Time

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:

  • move temp.holdTime_1 600
  • move temp.timeout_1 0

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.

Change Setpoint and Don't Wait

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.

Change Setpoint and Wait for Settling

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

  • move temp.holdTime_1 120
  • move temp.tolerance_1 1.0
  • move temp.toleranceBandTime_1 300
  • move temp.timeout_1 1800

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.


Created January 13, 2020, Updated March 6, 2023