Emission ON Sequence Diagram
sequenceDiagram
%% API Registered Routine: Emission ON (Section: NLOS)
participant User as "API Call"
participant EmissionON as "Emission ON"
User->>+EmissionON: Call Emission ON
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"
EmissionON->>+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-->>-EmissionON: Complete
EmissionON->>EmissionON: Check PLD1 Imoni - read_analog (name: Imoni, portnum: 2)
alt is_value_in_between(prev('Check PLD1 Imoni'), 280, 320)==False
EmissionON->>EmissionON: Raise Exception - raise_exception (e: Emission on Error: Laser not armed)
end
EmissionON->>EmissionON: PULSE1 PLD2 - write_digital (name: PULSE1, portnum: 3, state: true)
EmissionON-->>-User: Emission ON Complete
Zoom: 100%