Today I tested a first implementation of a check of the single arms lock that catches whether we lock on a wrong mode, and unlocks/relocks the arm on purpose if this is the case.
As this need some statistics, I implemented it only on the North Arm node for the time being. This happens inside the state LOCKING_WITH_B7, and it is based on a second threshold, b7_unlock_thr (= 0.08), in addition to the usual b7_lock_thr (= 0.3). A 5 seconds buffer measures the B7_DC power; if the min value of the buffer is below the lock threshold but above the unlock threshold, we should be reasonably sure that we are locked but on a wrong mode; in this case we disengage/engage the lock in two cycles of the node.
Given that today is a Maintenance day I could test this several times, and it worked well (see Figure). There are still a few caveats left:
- there is no countermeasure, we just relock hoping to get a good mode; in case the arm is misaligned this is not a guarantee by itself;
- there could be some fight between the two checks (good lock if the mean is above b7_lock_thr for 1 second, bad lock if the minimum is higher than b7_lock_thr but lower than b7_lock_thr for five seconds), but this will need statistics to be understood.