Tags:
create new tag
view all tags
Last revision: r10 - 2006-04-26 - 10:19:28 - HowardHuckle

Analysis of possible interrupts.

uvotman.adb

Power down flag

If the power down flag has been set, then it can run the SAFEHOLD_RTS - currently fastsafe . This will interrupt the current rts.

Slew Warning

rts process_slew_warn is called when a slew warning is received. This will interrupt the current rts.

Slew Abort

rts slewabort is called when a slew abort is received. This will interrupt the current rts.

Errors

The following rts 's can be called if there is an error and will interrupt the current rts.
blocked_failsafe;
fastsafe;
gotosafe;
h_basic;
h_emergency_safe;

Auto State Changes

The following transitions may be performed and rts 's called when Ada requests an autotransition. This can happen if

  1. the SAA flag status has changed and we are not in safe (via rts autostate ) - these are marked with a "***" in the following list and will interrupt the current rts.
  2. when an rts requests a "chain ?" from rts do_slew or rts slew_to_settling, which leads to a call to UVOTMAN.TO_STATE(UVOTMAN.AUTO) . However, the resulting chain is a sequential run and does not interrupt the calling rts.

SLEW, IDLE, YES, slew_to_idle
*** SLEW, SAA, YES, slew_to_saa => gotosaa
SLEW, SAFE, YES, slew_to_safe => gotosafe
SLEW, SLEW, YES, noaction;
SLEW, SETTLING, YES, slew_to_settling;
SLEW, FINDING, YES, slew_to_fc;  
SLEW, AT_OBS, YES, slew_to_at;   
SLEW, PT_OBS, YES, slew_to_pt;   
SLEW, SAFEPOINT, YES, slew_to_safep; 
*** SETTLING, SAA, YES, settling_to_saa => gotosaa          
SETTLING, SAFE, YES, settling_to_safe => gotosafe
SETTLING, SLEW, YES, settling_to_slew => do_slew          
SETTLING, FINDING, YES, settling_to_fc;         
*** FINDING, SAA, YES, fc_to_saa => gotosaa                  
FINDING, SAFE, YES, fc_to_safe => gotosafe
FINDING, SLEW, YES, fc_to_slew => do_slew;
FINDING, AT_OBS, YES, fc_to_at;
*** AT_OBS, SAA, YES, at_to_saa => gotosaa                    
AT_OBS, SAFE, YES, at_to_safe => gotosafe
AT_OBS, SLEW, YES, at_to_slew => do_slew          
AT_OBS, AT_OBS, YES, at_to_at => fc_to_at                  
*** PT_OBS, SAA, YES, pt_to_saa => gotosaa                    
PT_OBS, SAFE, YES, pt_to_safe => gotosafe
PT_OBS, SLEW, YES, pt_to_slew => do_slew      
PT_OBS, PT_OBS, YES, pt_to_pt;
*** SAFEPOINT, SAA, YES,  safep_to_saa => gotosaa         
SAFEPOINT, SAFE, YES, safep_to_safe => gotosafe
*** SAA, IDLE, YES, saa_to_idle;            
*** SAA, SAA, YES, idle_to_saa => gotosaa            
*** SAA, SAFE, YES, saa_to_safe => gotosafe
*** SAA, SLEW, YES, saa_to_slew => do_slew
*** SAA, SETTLING, YES, saa_to_settling => do_slew          
*** SAA, FINDING, YES, saa_to_fc => do_slew                   
*** SAA, AT_OBS, YES, saa_to_at => do_slew                    
*** SAA, PT_OBS, YES, saa_to_pt => do_slew                    
*** IDLE, SAA, YES, idle_to_saa => gotosaa
IDLE, SAFE, YES, idle_to_safe => gotosafe
IDLE, SLEW, YES, idle_to_slew => do_slew

Therefore, only the following rts 's from the above list can interrupt the current rts.

do_slew
gotosaa
gotosafe
saa_to_idle

command_distibutor.adb

via taskman.adb can call any rts as requested by /istate command. This may interrupt the current rts according to its priority. In particular, obs_to_idle can interrupt any exposure.

limit.adb

can call rts gotosafe . This will interrupt the current rts.

waitfor

A timeout on a waitfor will lead to calls to one of the following rts 's but this is done sequentially. However, as they are called in an anomalous condition, we might be still moving/ramping etc something????

blocked_tdrss;
gotosafe
gotosafe_tdrss;
h_emergency_safe;
slew_to_idle;

CONCLUSION

The following rts 's can interrupt others.

blocked_failsafe
blocked_tdrss **
do_slew
fastsafe
gotosaa
gotosafe
gotosafe_tdrss **
h_basic
h_emergency_safe
obs_to_idle
process_slew_warn
saa_to_idle
slewabort
slew_to_idle **

** Only a concern if something else might be happening when run as a result of the relevant waitfor timeout.

RTS priorities

32768 'process_slew_warn' (This is an 'interrupt' rts).
32767 'h_uvot_off'
32767 'h_tm_off'
32767 'h_15'
32767 'h_emergency_safe'
32767 'h_14'
32767 'h_basic'
32767 'h_13'
32767 'h_12'
32767 'h_11'
32766 'emergency_hvoff'
32765 'controlled_off'
32764 'fastsafe'
32764 'controlled_tmoff'
32763 'gotobasic'
32763 'gotosafe_tdrss'
32763 'gotosafe'
1001 'safe_to_idle'
1000 'slewabort'
1000 'do_sttlng_exp'
1000 'autostate'
1000 'blocked_tdrss'
1000 'slew_to_idle'
1000 'safep_to_safep'
1000 'blocked_failsafe'
1000 'gotosaa'
1000 'obs_to_idle'
1000 'settling_to_fc'
1000 'saa_to_idle'
1000 'slew_to_safep'
1000 'slew_to_pt'
1000 'saa_to_idle2'
1000 'slew_to_at'
1000 'do_pt_exp'
1000 'slew_to_fc'
1000 'fc_to_at'
1000 'pt_to_pt'
1000 'do_slew'
1000 'slew_to_settling'
1000 'do_fc_exp'
101 'hv231'
101 'hvcathode'
101 'hvidle_or_saa'
101 'hvofffast'
101 'hvsaa'
101 'hvnominal'
101 'hvoff'
100 'hvon'
1 'idpumode'
0 'undefined'
0 'get_sp_config'
0 'move_fw'
0 'notallowed'
0 'get_pt_config'
0 'change_state'
0 'get_at_config'
0 'interrupt_exp'
0 'bright_planets'
0 'get_fc_config'
0 'retry_fw'
0 'end_exp'
0 'get_sttlng_config'
0 'start_exp'
0 'send_slewsafe'
0 'do_exp'
0 'diagnostic'
0 'line'
0 'sfty_reset'
0 'noaction'
0 'sfty_reset_slew'

-- HowardHuckle - 13 Apr 2005

Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | More topic actions
Topic revision: r10 - 2006-04-26 - HowardHuckle
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback