Standby Command

Overview

This document details the Standby() command within the MCCS, covering the three primary repositories in MCCS: SPSHW, PaSD, and the Main repository. This command transitions hardware to a low-power state, where TPMs are OFF, subracks are ON, FNDH ports are ON, but Smartbox ports are OFF. The STANDBY state must be supported from both ON and OFF states.

Note: Currently, this mode is implemented in SPSHW but not in PaSD.

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.Standby() Command:

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

    • (Once implemented) The MccsSubrack devices then turn on, if not already on.

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

    • The MccsTile devices then turn off if not already off, which is a straightforward process without complex sequencing.

  2. MccsTile.Standby() Command:

    • The MccsTile does not support a Standby() command; its state is managed by the SpsStation.

  3. MccsSubrack.Standby() Command:

    • The MccsSubrack does not support a Standby() command; its state is managed by the SpsStation.

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 distributes 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.Standby() Command:

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

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

    • The FieldStation sends a PowerOffPorts() command to each MccsSmartbox.

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

  2. MccsSmartbox.Standby() Command:

    • The MccsSmartbox commands the MccsPasdBus to power on the FNDH port it is attached to, then commands the MccsPasdBus to power off its own ports.

  3. MccsFNDH.Standby() 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.Standby() Command:

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

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

  2. MccsController.Standby() Command:

    • The MccsController initiates the standby process by sending the Standby() 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
}

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

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

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

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

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

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

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

' Define relationships

SpsStation --> "1..*" MccsTile : "Off()"
MccsStation --> SpsStation : "Standby()"
MccsStation --> FieldStation : "Standby()"
FieldStation --> MccsFNDH : "PowerOnPorts()"
FieldStation --> "1..*" MccsSmartbox : "PowerOffPorts()"
MccsController --> "1..*" MccsStation : "Standby()"
MccsFNDH --> MccsPasdBus  : "SetFndhPortPowers()"
MccsSmartbox --> MccsPasdBus : "SetSmartboxPortPowers(smartboxId: int)"
MccsTile --> MccsSubrack: "PowerOffTPM()"

@enduml