Command Sequences

Power On

Since the UPD for the EIB is command for Azimuth and Elevation heads, the power on command sequence depends if the EIB is already powered on or not. For the first power on, there are more actions to do, because the EIB starts sending data. In the second power on the EIb is already on, and just a configuration of the second axis heads is carried on.

For the firs power the sequence is shown in next figure

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"
database "Settings"

Commander -> "TMA-PXI" : Power on
"TMA-PXI" -> Settings : Read general settings
"TMA-PXI" -> Commander : Ack
"TMA-PXI" -> Settings : Update events
"TMA-PXI" -> SyncCRIO : Update FPGA data
"TMA-PXI" -> "AXES PXI" : Update UPD settings
"TMA-PXI" -> Settings : read head settings
"TMA-PXI" -> "AXES PXI" : Update head settings
"TMA-PXI" -> EIB : InitPositionValue
"TMA-PXI" -> "AXES PXI" : Start UPD loop
"TMA-PXI" -> EIB : Start UPD publication
"TMA-PXI" -> "TMA-PXI" : Check UPD working
"TMA-PXI" -> "TMA-PXI" : Start Event loop
"TMA-PXI" -> "TMA-PXI" : Update power status
"TMA-PXI" -> Commander : Done

@enduml

For the second power, the EIB is already sending data via UDP, so the configuration of the FPGA and EIB has no sense.

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"
database "Settings"

Commander -> "TMA-PXI" : Power on
"TMA-PXI" -> Commander : Ack
"TMA-PXI" -> EIB : InitPositionValue
"TMA-PXI" -> "TMA-PXI" : Check UPD working
"TMA-PXI" -> "TMA-PXI" : Update power status
"TMA-PXI" -> Commander : Done

@enduml

Power off

Since the UDP is common for azimuth and elevation heads, the EIB will be powered off only if both axis are powered off. This is, if a power off is received for elevation and azimuth is still on, the EIB will not switched off and data will be received for all heads.

If power off is not required, because there is another axis still powered on

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : Power off
"TMA-PXI" -> Commander : Ack
"TMA-PXI" -> "AXES PXI" : Set reference not valid
"TMA-PXI" -> EIB : Stop reference
"TMA-PXI" -> EIB : Head reference status
"TMA-PXI" -> "TMA-PXI" : Update power status


@enduml

If the power of the EIB is possible, then the sequence is shown in next diagram.

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : Power off
"TMA-PXI" -> Commander : Ack
"TMA-PXI" -> "TMA-PXI" : Stop event loop
"TMA-PXI" -> "AXES PXI" : Stop UDP loop
"TMA-PXI" -> EIB : Stop UDP
"TMA-PXI" -> "TMA-PXI" : Check UPD
"TMA-PXI" -> "AXES PXI" : Set reference not valid
"TMA-PXI" -> EIB : Stop reference
"TMA-PXI" -> EIB : Head reference status
"TMA-PXI" -> "TMA-PXI" : Update power status

@enduml

Start Reference

The reference search is the procedure to get the absolute position. The heads that fulfil this procedure without errors have a valid absolute position. The reference procedure is started in the home sequence of an axis.

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : start reference
"TMA-PXI" -> "TMA-PXI" : Check if reference is running
alt Reference running
    "TMA-PXI" -> Commander : No ack
else start with reference
    "TMA-PXI" -> Commander : Ack
    "TMA-PXI" -> "EIB" : Reference On
    loop Until completed or timeout
        "TMA-PXI" -> "EIB": Read Heads reference status
        "TMA-PXI" -> "TMA-PXI" : Check if reference running
        "TMA-PXI" -> "TMA-PXI" : Check if reference completed
        "TMA-PXI" -> "TMA-PXI" : Check timeout
    end
    "TMA-PXI" -> "TMA-PXI" : Calculate reference
    "TMA-PXI" -> "AXES PXI" : Send reference data
    "TMA-PXI" -> Commander : Done
    "TMA-PXI" -> "TMA-PXI" : Finish reference
end 
@enduml

Stop Reference

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : stop reference
"TMA-PXI" -> Commander : ack
"TMA-PXI" -> "EIB" : Reference Off 
"TMA-PXI" -> "EIB": Read Heads reference status
"TMA-PXI" -> "TMA-PXI" : Finish reference
"TMA-PXI" -> Commander : Done
@enduml

Clear Heads Errors

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : clear head errors
"TMA-PXI" -> Commander : ack
"TMA-PXI" -> "EIB" : Reset position errors 
"TMA-PXI" -> Commander : Done
@enduml

Clear Errors

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : clear errors
"TMA-PXI" -> Commander : ack
"TMA-PXI" -> "EIB" : Reset position errors 
"TMA-PXI" -> "TMA-PXI" : Clear Alarms
"TMA-PXI" -> Commander : Done
@enduml

Reboot EIB

This command reboots the EIB hardware. Do no execute this command if it is not necessary. To execute this command Azimuth and elevation must be powered off

@startuml

actor "Commander"
entity "TMA-PXI"
entity "AXES PXI"
entity "EIB"
entity "SyncCRIO"


Commander -> "TMA-PXI" : Reset EIB
"TMA-PXI" -> Commander : ack
"TMA-PXI" -> "TMA-PXI" : Stop event loop
"TMA-PXI" -> "AXES PXI" : Stop UDP loop
"TMA-PXI" -> "TMA-PXI" : Check UPD
"TMA-PXI" -> "TMA-PXI" : Finish reference
"TMA-PXI" -> "TMA-PXI" : Clear Alarms
"TMA-PXI" -> EIB : Reset
"TMA-PXI" -> EIB : Check reset
"TMA-PXI" -> EIB : Configure
"TMA-PXI" -> Commander : Done
@enduml