Arm Laser Sequence Diagram

sequenceDiagram %% API Registered Routine: Arm Laser (Section: NLOS) participant User as "API Call" participant ArmLaser as "Arm Laser" User->>+ArmLaser: Call Arm Laser participant CheckLaserstatus as "Check Laser status" participant CheckStatusPLD2 as "Check Status PLD2" participant CheckStatusPLD1 as "Check Status PLD1" participant CheckStatusIdler as "Check Status Idler" participant CheckStatusSeed as "Check Status Seed" participant Disarmlaser as "Disarm laser" participant SeedTest as "Seed Test" participant Turnoffseedtest as "Turn off seed test" participant IdlerTest as "Idler Test" participant Turnoffidlertest as "Turn off idler test" ArmLaser->>+CheckLaserstatus: Execute Check Laser Status CheckLaserstatus->>+CheckStatusPLD2: Execute Check PLD2 CheckStatusPLD2->>CheckStatusPLD2: Check STATUS - read_digital (name: STATUS, portnum: 3) CheckStatusPLD2->>CheckStatusPLD2: Check TECG - read_digital (name: TEC G, portnum: 3) CheckStatusPLD2->>CheckStatusPLD2: Format Output Values - output_values (values: ["prev('Check STATUS')","prev('Check TECG')"]) alt minimum(prev('Format Output Values'))==0 CheckStatusPLD2->>CheckStatusPLD2: Raise Error - raise_exception (e: Error in PLD2) end CheckStatusPLD2-->>-CheckLaserstatus: Complete CheckLaserstatus->>+CheckStatusPLD1: Execute Check PLD1 CheckStatusPLD1->>CheckStatusPLD1: Check STATUS - read_digital (name: STATUS, portnum: 2) CheckStatusPLD1->>CheckStatusPLD1: Check TECG - read_digital (name: TEC G, portnum: 2) CheckStatusPLD1->>CheckStatusPLD1: Format Output Values - output_values (values: ["prev('Check STATUS')","prev('Check TECG')"]) alt minimum(prev('Format Output Values'))==0 CheckStatusPLD1->>CheckStatusPLD1: Raise Error - raise_exception (e: Error in PLD1) end CheckStatusPLD1-->>-CheckLaserstatus: Complete CheckLaserstatus->>+CheckStatusIdler: Execute Check Idler CheckStatusIdler->>CheckStatusIdler: Check 1PGM - read_digital (name: 1PGM, portnum: 1) CheckStatusIdler->>CheckStatusIdler: Check TECG - read_digital (name: TEC G, portnum: 1) CheckStatusIdler->>CheckStatusIdler: Check INTERLOCK - read_digital (name: INTRLCK, portnum: 1) CheckStatusIdler->>CheckStatusIdler: Format Output Values - output_values (values: ["prev('Check 1PGM')","prev('Check TECG')","prev('Check INTERLOCK')"]) alt minimum(prev('Format Output Values'))==0 CheckStatusIdler->>CheckStatusIdler: Raise Error - raise_exception (e: Error in idler) end CheckStatusIdler-->>-CheckLaserstatus: Complete CheckLaserstatus->>+CheckStatusSeed: Execute Check Seed CheckStatusSeed->>CheckStatusSeed: Check TECG - read_digital (name: TEC G, portnum: 0) CheckStatusSeed->>CheckStatusSeed: Check INTERLOCK - read_digital (name: INTRLCK, portnum: 0) CheckStatusSeed->>CheckStatusSeed: Format Output Values - output_values (values: ["prev('Check TECG')","prev('Check INTERLOCK')"]) alt minimum(prev('Format Output Values'))==0 CheckStatusSeed->>CheckStatusSeed: Raise Error - raise_exception (e: Error in seed) end CheckStatusSeed-->>-CheckLaserstatus: Complete CheckLaserstatus-->>-ArmLaser: Complete ArmLaser->>+Disarmlaser: Execute Disarm laser Disarmlaser->>Disarmlaser: PULSE1 PLD2 - write_digital (name: PULSE1, portnum: 3, state: false) Disarmlaser->>Disarmlaser: PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) Disarmlaser->>Disarmlaser: ON11V - write_digital (name: ON11V, portnum: 1, state: false) Disarmlaser->>Disarmlaser: ON11V Off - write_digital (name: ON11V, portnum: 0, state: false) Disarmlaser->>Disarmlaser: ONHV Off - write_digital (name: ONHV, portnum: 0, state: false) Disarmlaser-->>-ArmLaser: Complete ArmLaser->>ArmLaser: Save Bram - get_waveform ArmLaser->>ArmLaser: Save Gates - get_gates ArmLaser->>ArmLaser: Select gate regime - select_gate_regime (selected_item: Disabled, name: ) ArmLaser->>ArmLaser: Sleep - pause (seconds: 0.2) ArmLaser->>ArmLaser: Read ADC - start_acquisition ArmLaser->>ArmLaser: SET HVS - write_analog (name: HVS, portnum: 0, value: {HVS}.get('{frequency}')) ArmLaser->>ArmLaser: SET UnegB - write_analog (name: UnegB, portnum: 0, value: {UnegB}.get('{frequency}')) ArmLaser->>ArmLaser: SET OPT_ATT - write_analog (name: OPT_ATT, portnum: 0, value: {OPT_ATT}.get('{frequency}')) ArmLaser->>ArmLaser: SET DILS - write_analog (name: DILS, portnum: 1, value: {DILS}.get('{frequency}')) ArmLaser->>ArmLaser: SET Iset - write_analog (name: Iset, portnum: 3, value: {Iset}.get('{frequency}')) ArmLaser->>+SeedTest: Execute Seed Test SeedTest->>SeedTest: BRAM Load Test Seed - load_waveform (path: {bram_paths}.get('{frequency}')) SeedTest->>SeedTest: Sleep - pause (seconds: 0.2) SeedTest->>SeedTest: Gates Load Test Seed - load_gates (path: data/default_gates.yaml) SeedTest->>SeedTest: Sleep - pause (seconds: 0.2) SeedTest->>SeedTest: Start BRAM Load Test Seed - start_waveform SeedTest->>SeedTest: ON11V ON - write_digital (name: ON11V, portnum: 0, state: true) SeedTest->>SeedTest: HV ON - write_digital (name: ONHV, portnum: 0, state: true) SeedTest->>SeedTest: Sleep - pause (seconds: 3.5) SeedTest->>SeedTest: Check Optical Power 0 - read_analog (name: P-000, portnum: 0) SeedTest->>SeedTest: Eval Optical Power 0 - evaluate_expression (expression: is_value_in_between(prev('Check Optical Power 0'),{opticalPowerSeed0minMax}.get('{frequency}')[0],{opticalPowerSeed0minMax}.get('{frequency}')[1])==False) alt prev('Eval Optical Power 0') SeedTest->>+Turnoffseedtest: Execute Turn Off Seed 1 Turnoffseedtest->>Turnoffseedtest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) Turnoffseedtest->>Turnoffseedtest: Turn Off ONHV Seed - write_digital (name: ONHV, portnum: 0, state: false) Turnoffseedtest-->>-SeedTest: Complete end alt prev('Eval Optical Power 0') SeedTest->>SeedTest: Raise Exception - raise_exception (e: Seed Error: Error code 1) end SeedTest->>SeedTest: PULSE1 ON PLD1 - write_digital (name: PULSE1, portnum: 2, state: true) SeedTest->>SeedTest: Sleep - pause (seconds: 2.5) SeedTest->>SeedTest: Read ADC - single_offload (plot: false) SeedTest->>SeedTest: Eval Offload 0 - evaluate_expression (expression: is_value_in_between(mean(prev('Read ADC')[2]), {offloadSeed1minMax}.get('{frequency}')[0],{offloadSeed1minMax}.get('{frequency}')[1]) == False) alt prev('Eval Offload 0') SeedTest->>+Turnoffseedtest: Execute Turn Off Seed 2 Turnoffseedtest->>Turnoffseedtest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) Turnoffseedtest->>Turnoffseedtest: Turn Off ONHV Seed - write_digital (name: ONHV, portnum: 0, state: false) Turnoffseedtest-->>-SeedTest: Complete end alt prev('Eval Offload 0') SeedTest->>SeedTest: Raise Exception - raise_exception (e: Seed Error: Error code 2) end SeedTest->>SeedTest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) SeedTest-->>-ArmLaser: Complete ArmLaser->>+IdlerTest: Execute Idler Test IdlerTest->>IdlerTest: BRAM Load Test Idler - load_waveform (path: {bram_paths}.get('{frequency}')) IdlerTest->>IdlerTest: Sleep - pause (seconds: 0.2) IdlerTest->>IdlerTest: Gates Load Test Idler - load_gates (path: data/default_gates.yaml) IdlerTest->>IdlerTest: Start BRAM Load Test Idler - start_waveform IdlerTest->>IdlerTest: A0 idler - write_digital (name: A0, portnum: 1, state: {idlerA0A1A2Range}.get('{frequency}')[0]) IdlerTest->>IdlerTest: A1 idler - write_digital (name: A1, portnum: 1, state: {idlerA0A1A2Range}.get('{frequency}')[1]) IdlerTest->>IdlerTest: A2 idler - write_digital (name: A2, portnum: 1, state: {idlerA0A1A2Range}.get('{frequency}')[2]) IdlerTest->>IdlerTest: Sleep - pause (seconds: 0.2) IdlerTest->>IdlerTest: ON11V idler - write_digital (name: ON11V, portnum: 1, state: true) IdlerTest->>IdlerTest: Sleep - pause (seconds: 2.5) IdlerTest->>IdlerTest: Check Optical Power 1 - read_analog (name: P001, portnum: 1) IdlerTest->>IdlerTest: Eval Optical Power 1 - evaluate_expression (expression: is_value_in_between(prev('Check Optical Power 1'),{opticalPowerIdler0minMax}.get('{frequency}')[0],{opticalPowerIdler0minMax}.get('{frequency}')[1])==False) alt prev('Eval Optical Power 1') IdlerTest->>+Turnoffidlertest: Execute Turn Off Idler 1 Turnoffidlertest->>Turnoffidlertest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) Turnoffidlertest->>Turnoffidlertest: Turn Off ON11V Idler - write_digital (name: ON11V, portnum: 1, state: false) Turnoffidlertest-->>-IdlerTest: Complete end alt prev('Eval Optical Power 1') IdlerTest->>IdlerTest: Raise Exception - raise_exception (e: Idler Error: Error code 1) end IdlerTest->>IdlerTest: PULSE1 ON PLD1 - write_digital (name: PULSE1, portnum: 2, state: true) IdlerTest->>IdlerTest: Sleep - pause (seconds: 1) IdlerTest->>IdlerTest: Read ADC - single_offload (plot: false) IdlerTest->>IdlerTest: Eval Offload 1 - evaluate_expression (expression: is_value_in_between(mean(prev('Read ADC')[2]), {offloadIdler1minMax}.get('{frequency}')[0], {offloadIdler1minMax}.get('{frequency}')[1]) == False) alt prev('Eval Offload 1') IdlerTest->>+Turnoffidlertest: Execute Turn Off Idler 2 Turnoffidlertest->>Turnoffidlertest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) Turnoffidlertest->>Turnoffidlertest: Turn Off ON11V Idler - write_digital (name: ON11V, portnum: 1, state: false) Turnoffidlertest-->>-IdlerTest: Complete end alt prev('Eval Offload 1') IdlerTest->>IdlerTest: Raise Exception - raise_exception (e: Idler Error: Error code 2) end IdlerTest->>IdlerTest: Turn Off PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: false) IdlerTest-->>-ArmLaser: Complete ArmLaser->>ArmLaser: Gates Load Test Seed - load_gates (path: data/default_gates_div.yaml) ArmLaser->>ArmLaser: Sleep - pause (seconds: 0.2) ArmLaser->>ArmLaser: Gates Write - write_gates ArmLaser->>ArmLaser: Sleep - pause (seconds: 0.2) ArmLaser->>ArmLaser: Select gate regime - select_gate_regime (selected_item: INT Cont., name: ) ArmLaser->>ArmLaser: Sleep - pause (seconds: 0.2) ArmLaser->>ArmLaser: Start Gates - start_waveform ArmLaser->>ArmLaser: PULSE1 PLD1 - write_digital (name: PULSE1, portnum: 2, state: true) ArmLaser-->>-User: Arm Laser Complete
Zoom: 100%