Pool

Device Pool is easily extendable by means of controller plugins. Device Pool discovers them in directories configurable via pool path attribute. In case Sardana is used with Tango this configuration is accessible via the PoolPath Pool device property.

Your controller plugins may need to access to third party Python modules. One can configure the directory where to look for them via python path attribute. In case Sardana is used with Tango this configuration is accessible via the PythonPath Pool device property.

Device Pool implements a controlled way of performing Motion and Acquisition. These actions consists of performing a high frequency polling loops over the involved elements in order to control and update the states and the principal attributes i.e. Position for a motor or Value for an experimental channel e.g. Counter/timer. The default frequency of these polling loops can be controlled with the following Pool device properties:

  • MotionLoop_SleepTime - sleep time in the motion loop between the state reads in ms (default: 10 ms)

  • MotionLoop_StatesPerPosition - number of state reads done before doing a position read in the motion loop (default: 10)

  • AcqLoop_SleepTime - sleep time in the acquisition loop between the state queries in ms (default: 10 ms)

  • AcqLoop_StatesPerValue- number of state reads done before doing a value read in the acquisition loop (default: 10)

Device Pool integrates natively with the Elastic Stack and may send logs to the a Logstash instance. In case Sardana is used with Tango this configuration is accessible via the LogstashHost and LogstashPort Pool device properties. You can use the intermediate SQLite cache database configured with LogstashCacheDbPath property, however this is discouraged due to logging performance problems.

Todo

Document RemoteLog, DriftCorrection, InstrumentList