[INSTRM-2307] MCS should check for the fiber illuminator status Created: 07/Jun/24 Updated: 16/Sep/24 Resolved: 16/Sep/24 |
|
Status: | Done |
Project: | Instrument control development |
Component/s: | ics_mcsActor |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Task | Priority: | Normal |
Reporter: | chyan | Assignee: | karr |
Resolution: | Done | Votes: | 0 |
Labels: | EngRun | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Issue Links: |
|
||||||||||||
Sprint: | preRun18August1, EngRun18August |
Description |
Adding a checking for the fiber illumination status. Otherwise MCS should send error message. |
Comments |
Comment by karr [ 19/Jun/24 ] |
Looking at the code, the best place to check for this is when the fiducial fibre matching fails. Counting the number of detected spots is a poor test, as due to the black spots the number of detected dots varies (even with the illuminator on) and is not completely predictable ahead of time (due to cobras ending up behind black dotes during moves). The fidicual fibre matching will fail (returning 0 matches) if the illuminator is not on, or if the fiducial fibres are not on. It will produce similar results (typically 0 to 2 matches) if the cobras are illuminated but the rotation angle is wrong. In all three cases, the code should abort the convergence sequence in a graceful, non-crashing fashion. I will consult Craig and Chi-Hung about the best was of doing this, as it involves higher level actors (and maybe IIC). This ticket connects with
|
Comment by karr [ 21/Jun/24 ] |
Addendum: the cobra matching failure will also catch if the camera name is wrong, or the initial transformation otherwise wildly off. |
Comment by arnaud.lefur [ 17/Aug/24 ] |
So from the sps actorkeys, the keyword to check is biaStatus, the first field correspond the the power, anything >0 means that the illuminator is on. Key('biaStatus', Int(name='power', units='percent', invalid=-1, help='bia power(%)', FITS=('W_BIAPOW', 'W_SPS_BIA_POWER')), Int(name='period', units='ms', invalid=-1, help='bia strobe period', FITS=('W_BIAPER', 'W_SPS_BIA_STROBE_PERIOD')), Int(name='strobeDuty', units='percent', invalid=-1, help='bia strobe duty cycle', FITS=('W_BIADTY', 'W_SPS_BIA_STROBE_DUTY')), Int(name='pulseOn', units='ms', invalid=-1, help='bia pulse high duration', FITS=('W_BIAON', 'W_SPS_BIA_PULSE_ON')), Int(name='pulseOff', units='ms', invalid=-1, help='bia pulse low duration', FITS=('W_BIAOFF', 'W_SPS_BIA_PULSE_OFF'))), for the fiducials, the keyword to check is peb.dutycycle, same logic, first field is the power, anything >0 means that the illuminator is on. Key('dutycycle', Float(name='Now', units='%'), Float(name='On', units='%'), Float(name='Flash', units='%'), help='PFI Ebox LED dutycycle'), |
Comment by karr [ 16/Sep/24 ] |
It was decided that checking fibre illuminator status should be done in a different actor; MCS will check for number of spots and return a cmd.fail if zero spots are detected when doCentroid is called. |
Comment by karr [ 16/Sep/24 ] |
See ticket |