"Axis not ready" error on icepap
Since the update to Bliss 2.0 (and at the same time switch to a new (faster?) control PC and firmware upgrade on icepas....) we start observing on BM32 some non-systemetic errors during scans on motors controlled by icepaps. Error message is :
"Cannot move axis 22: Axis is not ready (check http://wikiserv.esrf.fr/bliss/index.php/ICETIPS) command sent was: b'MOVE'".
We got a full debug log on an error, and it looks like the first status query (made with ?FSTATUS) after a MOVE command arrives before the state register on the master is set to moving. The motion is hence supposed as done, and if the next MOVE can eventually be sent when the axis is not yet ready.
From the log:
36,892 Icepap_d9e.Command DEBUG : write bytes=112 b'#MOVE GROUP 22 31342 28 -5 1 1006 2 -833 11 -1019 12 7624 13 7630 15 288082 16 740260 17 746065 5 42784 6 64851\n'
36,900 Icepap_d9e.Command DEBUG : readline bytes=7 b'MOVE OK'
36,901 Icepap_d9e.Command DEBUG : write bytes=12 b'?FSTATUS 22\n'
36,901 Icepap_d9e.Command DEBUG : write bytes=12 b'?FSTATUS 28\n'
.
.
.
36,902 Icepap_d9e.Command DEBUG : readline bytes=19 b'?FSTATUS 0x00A01203'
36,903 Icepap_d9e.Command DEBUG : readline bytes=19 b'?FSTATUS 0x00A00403'
....
The status code for axis 22 in the master register (0x00A01203) is still set as READY, so the motion is considered ad done and the status for this axis is not polled anymore, while the other axis (which are in MOVING state) do their job.
At the end of the previous movement a new MOVE is sent (in this case a backslash on some axis, including axis 22 which in reality is still moving) and we got the error:
45,392 Icepap_d9e.Command DEBUG : write bytes=36 b'#MOVE GROUP 22 31542 1 1056 5 41784\n'
45,396 Icepap_d9e.Command DEBUG : readline bytes=49 b'MOVE ERROR Cannot move axis 22: Axis is not ready'
45,397 Icepap_d9e.Command DEBUG : write bytes=12 b'STOP 22 1 5\n'
45,397 Icepap_d9e.Command DEBUG : write bytes=12 b'?FSTATUS 22\n'
45,397 Icepap_d9e.Command DEBUG : write bytes=11 b'?FSTATUS 1\n'
45,398 Icepap_d9e.Command DEBUG : write bytes=11 b'?FSTATUS 5\n'
45,431 Icepap_d9e.Command DEBUG : readline bytes=19 b'?FSTATUS 0x00A05403'
....
Note the status for axis 22 is 0x00A05403, so the axis were MOVING.
Would it be possible to force the synchronization of the master status registers after a MOVE command, or eventually use for the first query after the MOVE command ?STATUS instead of ?FSTATUS ?
If you need the full log file I can send it.