Motion

Sardana provides advanced solutions for motion. By motion we understand a controlled process of changing any set point, which could be, a physical motor’s position, temperature set point of a temperature controller or a voltage of a power supplier, etc.

In this chapter we just want to list all the features related to motion and eventually point you to more detailed information. It is not necessary to understand them if you follow the order of this documentation guide - you will step by them sooner or later.

We call a sardana element involved in the motion process a motor. Motors can be intergrated into sardana by means of MotorController plugin classes.

Some times you need to control the motion by means of an interface which is more meaningful to you, for example, your physical motor acts on a linear to angular translation and you would like to act on the motor in the angular dimension. This is solved in sardana by a pseudo motor. Pseudo motors calculations can be intergrated into sardana by means of PseudoMotorController plugin classes.

Other motion features:

Discrete Motion

Some times you would like to operate your moveable by means of sending it to some discrete positions. For example, discrete positions of a linear translation of a mirror could be used to select a given mirror coating stripe. Furthermore each coating stripe spans over a limited range of linear translation displacement, so any of the positions within a given range should indicate which stripe is currently selected.

Sardana comes with a built-in controller plugin: DiscretePseudoMotorController that you could use to translate a continuous displacement of a moveable into a discrete displacement using a pseudo motor.

You could use the following macros: def_discr_pos udef_discr_pos and prdef_discr to change the configuration of the discrete pseudo motor at runtime.

Note

Previously to adding discrete motion into Sardana the preferred way of implementing it was using TangoAttrIORController. However the I/O register overview solution does not control the process of changing between the discrete positions. The discrete motion solution overcomes this limitation and should be used now.