Pointing

This notebook and more can be downloaded from from the repository notebook directory

pointing

Dish.LMC Dish Pointing walkthrough

Python Install dependencies

In [16]:
# Install dependencies
!pip3 install pytango
!pip3 install ska_mid_dish_manager --extra-index=https://artefact.skao.int/repository/pypi-internal/simple
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pytango in ./.local/lib/python3.11/site-packages (9.5.0)
Requirement already satisfied: numpy>=1.13.3 in ./.local/lib/python3.11/site-packages (from pytango) (1.26.4)
Requirement already satisfied: packaging in /usr/local/lib/python3.11/site-packages (from pytango) (24.0)
Requirement already satisfied: psutil in /usr/local/lib/python3.11/site-packages (from pytango) (5.9.8)

[notice] A new release of pip is available: 24.0 -> 24.2
[notice] To update, run: pip install --upgrade pip
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://artefact.skao.int/repository/pypi-internal/simple
Requirement already satisfied: ska_mid_dish_manager in ./.local/lib/python3.11/site-packages (3.0.1)
Requirement already satisfied: astropy<7.0.0,>=6.0.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (6.1.2)
Requirement already satisfied: networkx==2.6.3 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (2.6.3)
Requirement already satisfied: numpy<2.0.0,>=1.23.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (1.26.4)
Requirement already satisfied: pytango==9.5.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (9.5.0)
Requirement already satisfied: pytest-timeout<3.0.0,>=2.1.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (2.3.1)
Requirement already satisfied: rule-engine<4.0.0,>=3.5.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (3.6.0)
Requirement already satisfied: ska-ser-logging<0.5.0,>=0.4.1 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (0.4.3)
Requirement already satisfied: ska-tango-base==1.0.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (1.0.0)
Requirement already satisfied: ska-tango-testing==0.2.0 in ./.local/lib/python3.11/site-packages (from ska_mid_dish_manager) (0.2.0)
Requirement already satisfied: typing-extensions<5.0.0,>=4.3.0 in /usr/local/lib/python3.11/site-packages (from ska_mid_dish_manager) (4.10.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.11/site-packages (from pytango==9.5.0->ska_mid_dish_manager) (24.0)
Requirement already satisfied: psutil in /usr/local/lib/python3.11/site-packages (from pytango==9.5.0->ska_mid_dish_manager) (5.9.8)
Requirement already satisfied: debugpy<2.0.0,>=1.6.2 in /usr/local/lib/python3.11/site-packages (from ska-tango-base==1.0.0->ska_mid_dish_manager) (1.8.1)
Requirement already satisfied: jsonschema<5.0.0,>=4.17.3 in /usr/local/lib/python3.11/site-packages (from ska-tango-base==1.0.0->ska_mid_dish_manager) (4.21.1)
Requirement already satisfied: ska-control-model<2.0.0,>=1.0.0 in ./.local/lib/python3.11/site-packages (from ska-tango-base==1.0.0->ska_mid_dish_manager) (1.0.0)
Requirement already satisfied: transitions<0.10.0,>=0.9.0 in ./.local/lib/python3.11/site-packages (from ska-tango-base==1.0.0->ska_mid_dish_manager) (0.9.1)
Requirement already satisfied: pyerfa>=2.0.1.1 in ./.local/lib/python3.11/site-packages (from astropy<7.0.0,>=6.0.0->ska_mid_dish_manager) (2.0.1.4)
Requirement already satisfied: astropy-iers-data>=0.2024.7.1.0.34.3 in ./.local/lib/python3.11/site-packages (from astropy<7.0.0,>=6.0.0->ska_mid_dish_manager) (0.2024.7.29.0.32.7)
Requirement already satisfied: PyYAML>=3.13 in /usr/local/lib/python3.11/site-packages (from astropy<7.0.0,>=6.0.0->ska_mid_dish_manager) (6.0.1)
Requirement already satisfied: pytest>=7.0.0 in ./.local/lib/python3.11/site-packages (from pytest-timeout<3.0.0,>=2.1.0->ska_mid_dish_manager) (8.3.2)
Requirement already satisfied: ply>=3.9 in ./.local/lib/python3.11/site-packages (from rule-engine<4.0.0,>=3.5.0->ska_mid_dish_manager) (3.11)
Requirement already satisfied: python-dateutil~=2.7 in /usr/local/lib/python3.11/site-packages (from rule-engine<4.0.0,>=3.5.0->ska_mid_dish_manager) (2.9.0.post0)
Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.11/site-packages (from jsonschema<5.0.0,>=4.17.3->ska-tango-base==1.0.0->ska_mid_dish_manager) (23.2.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.11/site-packages (from jsonschema<5.0.0,>=4.17.3->ska-tango-base==1.0.0->ska_mid_dish_manager) (2023.12.1)
Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.11/site-packages (from jsonschema<5.0.0,>=4.17.3->ska-tango-base==1.0.0->ska_mid_dish_manager) (0.34.0)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.11/site-packages (from jsonschema<5.0.0,>=4.17.3->ska-tango-base==1.0.0->ska_mid_dish_manager) (0.18.0)
Requirement already satisfied: iniconfig in ./.local/lib/python3.11/site-packages (from pytest>=7.0.0->pytest-timeout<3.0.0,>=2.1.0->ska_mid_dish_manager) (2.0.0)
Requirement already satisfied: pluggy<2,>=1.5 in ./.local/lib/python3.11/site-packages (from pytest>=7.0.0->pytest-timeout<3.0.0,>=2.1.0->ska_mid_dish_manager) (1.5.0)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/site-packages (from python-dateutil~=2.7->rule-engine<4.0.0,>=3.5.0->ska_mid_dish_manager) (1.16.0)

[notice] A new release of pip is available: 24.0 -> 24.2
[notice] To update, run: pip install --upgrade pip

Set up the environment

In [17]:
import os
import time

from ska_mid_dish_manager.models.dish_enums import TrackTableLoadMode

os.environ["TANGO_HOST"] = "databaseds-tango-base-test:10000"

Confirm device subscriptions

In [18]:
import tango

dish_manager_device_proxy = tango.DeviceProxy("mid-dish/dish-manager/ska001")
ds_manager_device_proxy = tango.DeviceProxy("mid-dish/ds-manager/SKA001")
spfrx_device_proxy = tango.DeviceProxy("mid-dish/simulator-spfrx/SKA001")
spfc_device_proxy = tango.DeviceProxy("mid-dish/simulator-spfc/SKA001")

print(dish_manager_device_proxy.ping())
print(ds_manager_device_proxy.ping())
print(spfrx_device_proxy.ping())
print(spfc_device_proxy.ping())
191
132
119
128

Check the Modes

In [19]:
# Check the deployment
print("Dish Mode:\t", dish_manager_device_proxy.dishMode.name)
print("DS Manager:\t", ds_manager_device_proxy.operatingMode.name)
print("SPFRx:\t", spfrx_device_proxy.operatingMode.name)
print("SPFC:\t", spfc_device_proxy.operatingMode.name)
Dish Mode:	 STANDBY_LP
DS Manager:	 STANDBY_LP
SPFRx:	 STANDBY
SPFC:	 STANDBY_LP

Set Up Subscriptions to print output as values change

In [20]:
from ska_mid_dish_manager.models.dish_enums import PointingState

# Clear 10 subscriptions. Just to prevent duplicate messages when rerunning the cell
for i in range(10):
    try:
        dish_manager_device_proxy.unsubscribe_event(i)
    except KeyError:
        pass
    try:
        ds_manager_device_proxy.unsubscribe_event(i)
    except KeyError:
        pass


def print_az_el(ev):
    if ev.attr_value:
        print(
            (
                f"DishManager achievedPointing: Time: {ev.attr_value.value[0]} AZ: "
                f"{ev.attr_value.value[1]} EL: {ev.attr_value.value[2]}"
            )
        )


def print_pointing_state(ev):
    if ev.attr_value:
        print(f"DishManager PointingState {PointingState(ev.attr_value.value).name}")


def print_dm_event(ev):
    if ev.attr_value:
        print(f"DishManager {ev.attr_value.name} {ev.attr_value.value}")


def print_dsm_event(ev):
    if ev.attr_value:
        print(f"DishStructureManager {ev.attr_value.name} {ev.attr_value.value}")


_ = dish_manager_device_proxy.subscribe_event(
    "achievedPointing",
    tango.EventType.CHANGE_EVENT,
    print_az_el,
)

_ = dish_manager_device_proxy.subscribe_event(
    "longrunningcommandprogress",
    tango.EventType.CHANGE_EVENT,
    print_dm_event,
)

_ = dish_manager_device_proxy.subscribe_event(
    "longrunningcommandstatus",
    tango.EventType.CHANGE_EVENT,
    print_dm_event,
)

_ = dish_manager_device_proxy.subscribe_event(
    "longRunningCommandResult",
    tango.EventType.CHANGE_EVENT,
    print_dm_event,
)

_ = dish_manager_device_proxy.subscribe_event(
    "pointingState",
    tango.EventType.CHANGE_EVENT,
    print_pointing_state,
)


_ = ds_manager_device_proxy.subscribe_event(
    "longrunningcommandprogress",
    tango.EventType.CHANGE_EVENT,
    print_dsm_event,
)

_ = ds_manager_device_proxy.subscribe_event(
    "longrunningcommandstatus",
    tango.EventType.CHANGE_EVENT,
    print_dsm_event,
)

_ = ds_manager_device_proxy.subscribe_event(
    "longrunningcommandresult",
    tango.EventType.CHANGE_EVENT,
    print_dsm_event,
)
DishManager achievedPointing: Time: 775818037.645983 AZ: -270.0 EL: 90.2
DishManager longRunningCommandProgress ()
DishManager longRunningCommandStatus ()
DishManager longRunningCommandResult ('', '')
DishManager PointingState READY
DishStructureManager longRunningCommandProgress ()
DishStructureManager longRunningCommandStatus ()
DishStructureManager longRunningCommandResult ('', '')

Transition to Full Power

In [21]:
if dish_manager_device_proxy.dishMode.name == "STANDBY_LP":
    dish_manager_device_proxy.SetStandbyFPMode()
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'STAGING')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'STAGING')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'QUEUED')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'QUEUED')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'QUEUED')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'SetOperateMode called on SPF, ID 1722502910.2608275_39366766830396_SPF_SetOperateMode')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'Awaiting SPF operatingmode change to [<SPFOperatingMode.OPERATE: 3>]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'QUEUED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'IN_PROGRESS', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'IN_PROGRESS', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'QUEUED')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'SetStandbyFPMode called on DS, ID 1722502910.2616463_193340629957499_DS_SetStandbyFPMode')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'Awaiting DS operatingmode change to [<DSOperatingMode.STANDBY_FP: 3>]')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'Commands: {"SPF": "1722502910.2608275_39366766830396_SPF_SetOperateMode", "DS": "1722502910.2616463_193340629957499_DS_SetStandbyFPMode"}')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'Awaiting dishmode change to STANDBY_FP')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'IN_PROGRESS', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502910.2608275_39366766830396_SPF_SetOperateMode', '[0, "None"]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'IN_PROGRESS')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'IN_PROGRESS')
DishStructureManager longrunningcommandprogress ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'SetPowerMode method called with args (False, 0.0) in SetStandbyFPMode command')
DishStructureManager longrunningcommandresult ('1722502910.2757804_95365688668745_SetStandbyFPMode', '"SetStandbyFPMode Called"')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'COMPLETED')
DishManager longrunningcommandresult ('1722502910.2616463_193340629957499_DS_SetStandbyFPMode', '[0, "[array([2], dtype=int32), [\'1722502910.2757804_95365688668745_SetStandbyFPMode\']]"]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'IN_PROGRESS', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'SPF operatingmode changed to [<SPFOperatingMode.OPERATE: 3>]')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'DS operatingmode changed to [<DSOperatingMode.STANDBY_FP: 3>]')
DishManager longrunningcommandresult ('1722502910.2537074_101815630786113_SetStandbyFPMode', '[0, "SetStandbyFPMode completed"]')
DishManager longrunningcommandprogress ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'SetStandbyFPMode completed')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED')

Configure a band

In [22]:
dish_manager_device_proxy.ConfigureBand2(True)
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'STAGING')
Out[22]:
[array([2], dtype=int32),
 ['1722502919.2527757_216565877401901_ConfigureBand2']]
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'COMPLETED', '1722502919.2629967_207096491823597_SetIndexPosition', 'STAGING')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'COMPLETED', '1722502919.2629967_207096491823597_SetIndexPosition', 'QUEUED')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'COMPLETED', '1722502919.2629967_207096491823597_SetIndexPosition', 'IN_PROGRESS')
DishStructureManager longrunningcommandprogress ('1722502919.2629967_207096491823597_SetIndexPosition', 'Move2Band method called with args (<BandType.Band_2: 2>,) in SetIndexerPosition command')
DishStructureManager longrunningcommandresult ('1722502919.2629967_207096491823597_SetIndexPosition', '"Move2Band method failed in SetIndexerPosition command"')
DishStructureManager longrunningcommandprogress ('1722502919.2629967_207096491823597_SetIndexPosition', 'Move2Band method failed in SetIndexerPosition command')
DishStructureManager longrunningcommandstatus ('1722502910.2757804_95365688668745_SetStandbyFPMode', 'COMPLETED', '1722502919.2629967_207096491823597_SetIndexPosition', 'FAILED')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'QUEUED')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'QUEUED')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'SetIndexPosition called on DS, ID 1722502919.255593_31463712160079_DS_SetIndexPosition')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'Awaiting DS indexerposition change to [<IndexerPosition.B2: 2>]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'QUEUED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'IN_PROGRESS', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'STAGING')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'IN_PROGRESS', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'QUEUED')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'ConfigureBand2 called on SPFRX, ID 1722502919.2557962_115384678526450_SPFRX_ConfigureBand2')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'Awaiting SPFRX configuredband change to [<Band.B2: 2>]')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'Commands: {"DS": "1722502919.255593_31463712160079_DS_SetIndexPosition", "SPFRX": "1722502919.2557962_115384678526450_SPFRX_ConfigureBand2"}')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'Awaiting configuredband change to B2')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'DS indexerposition changed to [<IndexerPosition.B2: 2>]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'IN_PROGRESS', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502919.255593_31463712160079_DS_SetIndexPosition', '[0, "[array([2], dtype=int32), [\'1722502919.2629967_207096491823597_SetIndexPosition\']]"]')
DishManager longrunningcommandstatus ('1722502910.2537074_101815630786113_SetStandbyFPMode', 'COMPLETED', '1722502910.2608275_39366766830396_SPF_SetOperateMode', 'COMPLETED', '1722502910.2616463_193340629957499_DS_SetStandbyFPMode', 'COMPLETED', '1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', '[0, "None"]')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'IN_PROGRESS', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'SPFRX configuredband changed to [<Band.B2: 2>]')
DishManager longrunningcommandresult ('1722502919.2527757_216565877401901_ConfigureBand2', '[0, "ConfigureBand2 completed"]')
DishManager longrunningcommandprogress ('1722502919.2527757_216565877401901_ConfigureBand2', 'ConfigureBand2 completed')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED')

Transition to Operate mode

In [23]:
if dish_manager_device_proxy.dishMode.name == "STANDBY_FP":
    dish_manager_device_proxy.SetOperateMode()
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'STAGING')
DishStructureManager longrunningcommandstatus ('1722502919.2629967_207096491823597_SetIndexPosition', 'FAILED', '1722502924.981989_154642344342113_SetPointMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'QUEUED')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'QUEUED')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'SetOperateMode called on SPF, ID 1722502924.976175_180761488927383_SPF_SetOperateMode')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'Awaiting SPF operatingmode change to [<SPFOperatingMode.OPERATE: 3>]')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'QUEUED', '1722502924.9763582_114519082380803_DS_SetPointMode', 'STAGING')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'QUEUED', '1722502924.9763582_114519082380803_DS_SetPointMode', 'QUEUED')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'SetPointMode called on DS, ID 1722502924.9763582_114519082380803_DS_SetPointMode')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'Awaiting DS operatingmode change to [<DSOperatingMode.POINT: 7>]')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'Commands: {"SPF": "1722502924.976175_180761488927383_SPF_SetOperateMode", "DS": "1722502924.9763582_114519082380803_DS_SetPointMode"}')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'Awaiting dishmode change to OPERATE')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'SPF operatingmode changed to [<SPFOperatingMode.OPERATE: 3>]')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'IN_PROGRESS', '1722502924.9763582_114519082380803_DS_SetPointMode', 'QUEUED')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'IN_PROGRESS', '1722502924.9763582_114519082380803_DS_SetPointMode', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502924.976175_180761488927383_SPF_SetOperateMode', '[0, "None"]')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'COMPLETED', '1722502924.9763582_114519082380803_DS_SetPointMode', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502924.9763582_114519082380803_DS_SetPointMode', '[0, "[array([2], dtype=int32), [\'1722502924.981989_154642344342113_SetPointMode\']]"]')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'IN_PROGRESS', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'COMPLETED', '1722502924.9763582_114519082380803_DS_SetPointMode', 'COMPLETED')
DishStructureManager longrunningcommandstatus ('1722502919.2629967_207096491823597_SetIndexPosition', 'FAILED', '1722502924.981989_154642344342113_SetPointMode', 'QUEUED')
DishStructureManager longrunningcommandstatus ('1722502919.2629967_207096491823597_SetIndexPosition', 'FAILED', '1722502924.981989_154642344342113_SetPointMode', 'IN_PROGRESS')
DishStructureManager longrunningcommandresult ('1722502924.981989_154642344342113_SetPointMode', '"SetPointMode Called"')
DishStructureManager longrunningcommandstatus ('1722502919.2629967_207096491823597_SetIndexPosition', 'FAILED', '1722502924.981989_154642344342113_SetPointMode', 'COMPLETED')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'DS operatingmode changed to [<DSOperatingMode.POINT: 7>]')
DishManager longrunningcommandresult ('1722502924.9752705_117689163839798_SetOperateMode', '[0, "SetOperateMode completed"]')
DishManager longrunningcommandprogress ('1722502924.9752705_117689163839798_SetOperateMode', 'SetOperateMode completed')
DishManager longrunningcommandstatus ('1722502919.2527757_216565877401901_ConfigureBand2', 'COMPLETED', '1722502919.255593_31463712160079_DS_SetIndexPosition', 'COMPLETED', '1722502919.2557962_115384678526450_SPFRX_ConfigureBand2', 'COMPLETED', '1722502924.9752705_117689163839798_SetOperateMode', 'COMPLETED', '1722502924.976175_180761488927383_SPF_SetOperateMode', 'COMPLETED', '1722502924.9763582_114519082380803_DS_SetPointMode', 'COMPLETED')

Build a track table

In [24]:
# get tai offset of current time with SKA epoch


def get_current_tai_timestamp():
    return time.time() - 946684763.0
In [25]:
def build_track_table(
    number_of_coordinates, time_delta, az_delta, el_delta, start_time, start_az, start_el
):
    """Build a single track table entry 1 second in the future

    Get the current position of the dish
    Add 10 seconds to the current time
    return
      - The start time of the table
      - a table with the instruction to create a new one on the DSC
    """
    entry_time = start_time
    entry_az = start_az
    entry_el = start_el
    track_table = [entry_time, start_az, start_el]
    for i in range(number_of_coordinates):
        entry_time += time_delta
        entry_az += az_delta
        entry_el += el_delta
        track_table.append(entry_time)
        track_table.append(entry_az)
        track_table.append(entry_el)
    return track_table

Initialize the track table

TrackTableLoadMode.NEW resets and populates the tracking table

In [26]:
# Build a table to start 5s in the future
track_table = build_track_table(5, 1, 0.5, 1.5, get_current_tai_timestamp() + 5, 100, 50)

# Init the track table
dish_manager_device_proxy.trackTableLoadMode = TrackTableLoadMode.NEW
dish_manager_device_proxy.programTrackTable = track_table

print("Inititalized table with: ", track_table)
DishStructureManager longrunningcommandstatus ('1722502924.981989_154642344342113_SetPointMode', 'COMPLETED', '1722502934.2878811_27974112527655_TrackLoadTable', 'STAGING')
Inititalized table with:  [775818173.8548512, 100, 50, 775818174.8548512, 100.5, 51.5, 775818175.8548512, 101.0, 53.0, 775818176.8548512, 101.5, 54.5, 775818177.8548512, 102.0, 56.0, 775818178.8548512, 102.5, 57.5]
DishStructureManager longrunningcommandstatus ('1722502924.981989_154642344342113_SetPointMode', 'COMPLETED', '1722502934.2878811_27974112527655_TrackLoadTable', 'QUEUED')
DishStructureManager longrunningcommandstatus ('1722502924.981989_154642344342113_SetPointMode', 'COMPLETED', '1722502934.2878811_27974112527655_TrackLoadTable', 'IN_PROGRESS')
DishStructureManager longrunningcommandprogress ('1722502934.2878811_27974112527655_TrackLoadTable', 'TrackLoadTable method called with args (<LoadModeType.New: 0>, 6, [775818173.8548512, 775818174.8548512, 775818175.8548512, 775818176.8548512, 775818177.8548512, 775818178.8548512], [100.0, 100.5, 101.0, 101.5, 102.0, 102.5], [50.0, 51.5, 53.0, 54.5, 56.0, 57.5]) in TrackLoadTable command')
DishStructureManager longrunningcommandresult ('1722502934.2878811_27974112527655_TrackLoadTable', '"TrackLoadTable Called"')
DishStructureManager longrunningcommandstatus ('1722502924.981989_154642344342113_SetPointMode', 'COMPLETED', '1722502934.2878811_27974112527655_TrackLoadTable', 'COMPLETED')

Kick off tracking

In [27]:
dish_manager_device_proxy.Track()
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'STAGING')
Out[27]:
[array([2], dtype=int32), ['1722502939.4728832_14662337107914_Track']]
DishStructureManager longrunningcommandstatus ('1722502934.2878811_27974112527655_TrackLoadTable', 'COMPLETED', '1722502939.481701_94594376621940_Track', 'STAGING')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'QUEUED')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'IN_PROGRESS')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'IN_PROGRESS', '1722502939.4745662_278030154718330_DS_Track', 'STAGING')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'IN_PROGRESS', '1722502939.4745662_278030154718330_DS_Track', 'QUEUED')
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'Track called on DS, ID 1722502939.4745662_278030154718330_DS_Track')
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'Awaiting DS pointingstate change to [<PointingState.TRACK: 2>]')
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'Commands: {"DS": "1722502939.4745662_278030154718330_DS_Track"}')
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'Awaiting pointingstate change to TRACK')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'IN_PROGRESS', '1722502939.4745662_278030154718330_DS_Track', 'IN_PROGRESS')
DishManager longrunningcommandresult ('1722502939.4745662_278030154718330_DS_Track', '[0, "[array([2], dtype=int32), [\'1722502939.481701_94594376621940_Track\']]"]')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'IN_PROGRESS', '1722502939.4745662_278030154718330_DS_Track', 'COMPLETED')
DishStructureManager longrunningcommandstatus ('1722502934.2878811_27974112527655_TrackLoadTable', 'COMPLETED', '1722502939.481701_94594376621940_Track', 'QUEUED')
DishStructureManager longrunningcommandstatus ('1722502934.2878811_27974112527655_TrackLoadTable', 'COMPLETED', '1722502939.481701_94594376621940_Track', 'IN_PROGRESS')
DishStructureManager longrunningcommandprogress ('1722502939.481701_94594376621940_Track', 'TrackStart method called with args (<InterpolType.Spline: 1>, 775818177.4842496) in Track command')
DishStructureManager longrunningcommandresult ('1722502939.481701_94594376621940_Track', '"Track Called"')
DishStructureManager longrunningcommandstatus ('1722502934.2878811_27974112527655_TrackLoadTable', 'COMPLETED', '1722502939.481701_94594376621940_Track', 'COMPLETED')
DishManager PointingState TRACK
DishManager PointingState SLEW
DishManager achievedPointing: Time: 775818177.7846451 AZ: 102.0 EL: 56.0
DishManager achievedPointing: Time: 775818177.7838359 AZ: 102.0 EL: 90.2
DishManager achievedPointing: Time: 775818177.9114201 AZ: 102.02499997615814 EL: 56.0
DishManager achievedPointing: Time: 775818177.9120679 AZ: 102.02499997615814 EL: 56.074999928474426
DishManager achievedPointing: Time: 775818177.9627249 AZ: 102.05000001192093 EL: 56.074999928474426
DishManager achievedPointing: Time: 775818178.011771 AZ: 102.07499998807907 EL: 56.22499996423721
DishManager achievedPointing: Time: 775818178.011244 AZ: 102.07499998807907 EL: 56.15000003576279
DishManager achievedPointing: Time: 775818177.9632609 AZ: 102.05000001192093 EL: 56.15000003576279
DishManager achievedPointing: Time: 775818178.1116481 AZ: 102.125 EL: 56.22499996423721
DishManager achievedPointing: Time: 775818178.112098 AZ: 102.125 EL: 56.375
DishManager achievedPointing: Time: 775818178.0625031 AZ: 102.125 EL: 56.300000071525574
DishManager achievedPointing: Time: 775818178.062036 AZ: 102.10000002384186 EL: 56.22499996423721
DishManager achievedPointing: Time: 775818178.2127919 AZ: 102.17500001192093 EL: 56.52500003576279
DishManager achievedPointing: Time: 775818178.211983 AZ: 102.17500001192093 EL: 56.449999928474426
DishManager achievedPointing: Time: 775818178.1616011 AZ: 102.14999997615814 EL: 56.449999928474426
DishManager achievedPointing: Time: 775818178.1611061 AZ: 102.14999997615814 EL: 56.375
DishManager achievedPointing: Time: 775818178.3121381 AZ: 102.22500002384186 EL: 56.52500003576279
DishManager achievedPointing: Time: 775818178.3125911 AZ: 102.22500002384186 EL: 56.675000071525574
DishManager achievedPointing: Time: 775818178.263859 AZ: 102.22500002384186 EL: 56.59999996423721
DishManager achievedPointing: Time: 775818178.2631459 AZ: 102.19999998807907 EL: 56.52500003576279
DishManager achievedPointing: Time: 775818178.4121349 AZ: 102.27499997615814 EL: 56.675000071525574
DishManager achievedPointing: Time: 775818178.4127231 AZ: 102.27499997615814 EL: 56.824999928474426
DishManager PointingState TRACK
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'DS pointingstate changed to [<PointingState.TRACK: 2>]')
DishManager longrunningcommandresult ('1722502939.4728832_14662337107914_Track', '[0, "Track completed"]')
DishManager longrunningcommandprogress ('1722502939.4728832_14662337107914_Track', 'Track completed')
DishManager longrunningcommandstatus ('1722502939.4728832_14662337107914_Track', 'COMPLETED', '1722502939.4745662_278030154718330_DS_Track', 'COMPLETED')
DishManager achievedPointing: Time: 775818178.362772 AZ: 102.27499997615814 EL: 56.75
DishManager achievedPointing: Time: 775818178.3623321 AZ: 102.25 EL: 56.675000071525574
DishManager achievedPointing: Time: 775818178.511555 AZ: 102.32499998807907 EL: 56.824999928474426
DishManager achievedPointing: Time: 775818178.511996 AZ: 102.32499998807907 EL: 56.97499996423721
DishManager achievedPointing: Time: 775818178.461787 AZ: 102.32499998807907 EL: 56.90000003576279
DishManager achievedPointing: Time: 775818178.461344 AZ: 102.30000001192093 EL: 56.824999928474426
DishManager achievedPointing: Time: 775818178.5615499 AZ: 102.35000002384186 EL: 57.050000071525574
DishManager achievedPointing: Time: 775818178.561054 AZ: 102.35000002384186 EL: 56.97499996423721
DishManager achievedPointing: Time: 775818178.6123469 AZ: 102.375 EL: 57.050000071525574
DishManager achievedPointing: Time: 775818178.6846621 AZ: 102.39999997615814 EL: 57.199999928474426
DishManager achievedPointing: Time: 775818178.6837251 AZ: 102.39999997615814 EL: 57.125
DishManager achievedPointing: Time: 775818178.7843289 AZ: 102.44999998807907 EL: 57.34999996423721
DishManager achievedPointing: Time: 775818178.7826519 AZ: 102.44999998807907 EL: 57.27500003576279
DishManager PointingState READY
DishManager achievedPointing: Time: 775818178.8636961 AZ: 102.5 EL: 57.5
DishManager achievedPointing: Time: 775818178.863215 AZ: 102.5 EL: 57.425000071525574
DishManager achievedPointing: Time: 775818178.8282709 AZ: 102.47500002384186 EL: 57.425000071525574
DishManager achievedPointing: Time: 775818178.827662 AZ: 102.47500002384186 EL: 57.34999996423721
DishManager achievedPointing: Time: 775818178.7142429 AZ: 102.42500001192093 EL: 57.27500003576279
DishManager achievedPointing: Time: 775818178.7136879 AZ: 102.42500001192093 EL: 57.199999928474426
DishManager achievedPointing: Time: 775818178.6130171 AZ: 102.375 EL: 57.125

Keep feeding new coordinates

TrackTableLoadMode.APPEND adds to the track table

In [ ]:
# Load some more coordinates
track_table = build_track_table(20, 1, 0.5, 1.5, get_current_tai_timestamp() + 30, 100, 50)
print("Appended: ", track_table)

dish_manager_device_proxy.trackTableLoadMode = TrackTableLoadMode.APPEND
dish_manager_device_proxy.programTrackTable = track_table

# If the table has been consumed already, then start tracking again
if dish_manager_device_proxy.pointingstate == PointingState.READY:
    dish_manager_device_proxy.Track()