Off Command

Overview

This document details the Off() command within the MCCS, covering the three primary repositories in MCCS: SPSHW, PaSD, and the Main repository.

Note: This command is current not implemented in SpsStation as we do not have control of the upstream power of the subracks. As such MccsStation currently calls SpsStation.Standby().

SPSHW Repository

Devices

  • MccsTile: Controls the TPM (Tile Processing Module). For more detailed information, see MccsTile Overview.

  • MccsSubrack: Manages the subrack containing TPMs. Note: Power control for the subrack is currently unimplemented due to the absence of PDU devices, which are planned for future development.

  • SpsStation: The central controller for the MccsTile and MccsSubrack devices.

Power Management Workflow

  1. SpsStation.Off() Command:

    • The SpsStation sends an Off() command to the MccsTile devices.

    • The MccsTile devices then turn off.

    • The SpsStation sends an Off() command to the MccsSubrack devices.

    • The MccsSubrack devices then turn off.

  2. MccsTile.Off() Command:

    • The MccsTile sends a request to the MccsSubrack to turn off power upon receiving the Off() command.

  3. MccsSubrack.Off() Command:

    • The MccsSubrack currently lacks power control due to the absence of PDU devices.

Future Development

  • PDU Integration: The MccsSubrack will be updated to include power control once the PDU devices are developed and integrated.

PaSD Repository

Devices

  • MccsPasdBus: A Modbus device that communicates with PaSD hardware, including FNDH (Field Node Distribution Hub) and Smartboxes.

  • MccsFNDH: Manages the FNDH, which provides power to connected Smartboxes.

  • MccsSmartbox: Controls a Smartbox, which distributes power to connected antennas.

  • FieldStation: The main controller for the MccsFNDH and MccsSmartbox devices.

Power Management Workflow

  1. FieldStation.Off() Command:

    • The FieldStation sends a PowerOffPorts() command to the MccsFNDH.

    • The MccsFNDH then powers on the relevant set of ports (if not already powered off), thereby powering off the Smartboxes.

  2. MccsSmartbox.Off() Command:

    • The MccsSmartbox commands the MccsPasdBus to power off the FNDH port it is attached to, if not already powered off.

  3. MccsFNDH.Off() Command:

    • The MccsFNDH is considered to be always ON as we do not have control of upstream power supply.

Main Repository

Devices

  • MccsStation: The top-level controller for both SpsStation and FieldStation.

  • MccsController: Manages multiple MccsStation devices, each responsible for a different station.

Power Management Workflow

  1. MccsStation.Off() Command:

    • The MccsStation sends the Off() command to the SpsStation and FieldStation.

    • It waits for the completion of these commands to ensure that all associated hardware components are powered off correctly.

  2. MccsController.Off() Command:

    • The MccsController initiates the power-off process by sending the Off() command to each MccsStation.

Command Flow

The workflow above in diagrammatic form:

@startuml
' Define the classes

class MccsTile {
    +State(): tango.DevState
    +Off()
    +MccsDeviceProxy subrackProxy
}

class MccsSubrack {
    +State(): tango.DevState
    +Off()
}

class SpsStation {
    +List<MccsDeviceProxy> tileProxies
    +List<MccsDeviceProxy> subrackProxies
    +Off()
    +State(): tango.DevState
}

class MccsFNDH {
    +List<Port> ports
    +PowerOffPorts()
    +State(): tango.DevState
}

class MccsSmartbox {
    +List<Port> ports
    +PowerOffPorts()
    +State(): tango.DevState
}

class FieldStation {
    +MccsDeviceProxy fndhProxy
    +List<MccsDeviceProxy> smartboxProxies
    +Off()
    +State(): tango.DevState
}

class MccsStation {
    +MccsDeviceProxy spsStationProxy
    +MccsDeviceProxy fieldStationProxy
    +Off()
    +State(): tango.DevState
}

class MccsController {
    +List<MccsDeviceProxy> stationProxies
    +Off()
    +State(): tango.DevState
}

class MccsPasdBus {
    +SetFndhPortPowers()
    +SetSmartboxPortPowers(smartboxId: int)
    +State(): tango.DevState
}

' Define relationships

SpsStation --> "1..*" MccsTile : "Off()"
MccsStation --> SpsStation : "Off()"
MccsStation --> FieldStation : "Off()"
FieldStation --> MccsFNDH : "PowerOffPorts()"
FieldStation ..> MccsSmartbox : "No command"
MccsController --> "1..*" MccsStation : "Off()"
MccsFNDH --> MccsPasdBus  : "SetFndhPortPowers()"
MccsTile --> MccsSubrack: "PowerOffTPM()"

@enduml