Micos motor controller
In Micos motor controller I implemented the internal function _move_to_reference()
, which
is invoked from home_search()
and also from the custom method move_to_reference()
.
Performing home search on this motor with the command ths.home(1)
or ths.home(-1)
worked
well till 18th of October, when BLISS was upgraded.
After this date the homing procedure failed, because BLISS core assumed that the axis was still
moving, while it was already stopped i.e. the attribute axis.is_moving
was still True
, while my test showed the the motor reached the reference/home position and that is did not move any more.
The problem came from the fact that in _move_to_reference()
function, where I must use controller low-level
specific move command in the end I set dial to 0 and user position to the offset value and
since BLISS layer believes the axis is moving it does not allow me setting dial and/or user
position.
Vincent helped me a lot by inspecting my code and the code of motor.py
and axis.py
and it
seems that BLISS core does a lot of things to minimize the need of every controller writer,
but for Micos I cannot do it differently.
So for the moment we circumvent the problem by calling axis._set_move_done()
inside the function _move_to_reference()
. But there is a risk
that in the future implementations of BLISS, this logic may fail. So it would be good to
investigate what would be the most robust code I can make inside _move_to_reference()
so that
it remains compatible with future BLISS evolution of motor and axis BLISS core software.