Получение телеметрии антенны в режиме реального времени

Станция "Орбитальная земля" выдает события телеметрии антенны, которые можно использовать для анализа операций наземной станции во время контакта. Профиль контакта можно настроить для отправки событий телеметрии в Центры событий Azure..

Из этого руководства вы узнаете, как выполнить следующие задачи:

  • Настройка Центры событий Azure для наземной станции Azure Orbital
  • Включите данные телеметрии в профиле контакта.
  • Проверка содержимого данных телеметрии
  • Общие сведения о точках телеметрии

Настройка Центров событий Azure

  1. В подписке перейдите к поставщикам ресурсов в параметрах. Найдите Microsoft.Orbital и зарегистрируйте его в качестве поставщика.
  2. Создайте пространство имен Центры событий Azure и концентратор событий в подписке.

Примечание.

Выберите общедоступный доступ для доступа к центрам событий. Частный доступ или конечные точки службы не поддерживаются.

  1. В меню слева выберите Управление доступом (IAM). В разделе "Предоставление доступа к этому ресурсу" выберите "Добавить назначение ролей".

Примечание.

Чтобы назначить роли Azure, необходимо иметь Microsoft.Authorization/roleAssignments/write разрешения, такие как доступ пользователей Администратор istrator или владелец.

  1. На вкладке "Роль" найдите и выберите Центры событий Azure Отправителя данных. Нажмите кнопку Далее.
  2. На вкладке "Члены" назначьте доступ к пользователю, группе или субъекту-службе.
  3. Нажмите кнопку + Выбрать участников.
  4. Найдите поставщика ресурсов Azure Orbital и нажмите кнопку "Выбрать".
  5. Нажмите кнопку " Рецензирование и назначение". Это действие предоставляет земную станцию Azure Orbital права на отправку данных телеметрии в концентратор событий.
  6. Чтобы подтвердить только что добавленное назначение ролей, вернитесь на страницу контроль доступа (IAM) и выберите "Просмотреть доступ к этому ресурсу". Поставщик ресурсов Azure Orbital должен находиться в Центры событий Azure отправителе данных.

Включение телеметрии Центров событий для профиля контакта

Настройте профиль контакта следующим образом:

  1. Выберите пространство имен с помощью раскрывающегося списка пространства имен Центров событий.
  2. Выберите экземпляр с помощью раскрывающегося списка экземпляра Центров событий, который отображается после выбора пространства имен.

Параметры существующего профиля контакта можно обновить с помощью

Проверка данных телеметрии антенны из контакта

Запланируйте контакты с помощью профиля контакта, который вы ранее настроили для телеметрии Центров событий. После начала контакта вы увидите данные в центрах событий вскоре после этого.

Вы можете проверить наличие и содержимое входящих данных телеметрии несколькими способами.

Панель мониторинга пространства имен Центров событий

Чтобы убедиться, что события получены в центрах событий, можно проверка графы, представленные на странице обзора пространства имен Центров событий в группе ресурсов. В этом представлении отображаются данные во всех экземплярах Центров событий в пространстве имен. Вы можете перейти на страницу обзора определенного экземпляра Концентратора событий в группе ресурсов, чтобы просмотреть графики для этого экземпляра.

Доставка данных телеметрии антенны в учетную запись хранения

Вы можете включить функцию отслеживания центров событий для автоматического доставки данных телеметрии в учетную запись хранения BLOB-объектов Azure выбранного объекта. Следуйте инструкциям, чтобы включить сбор и запись данных в хранилище Azure. После включения вы можете проверка контейнер и просмотреть или скачать данные.

Общие сведения о точках телеметрии

Текущая версия схемы телеметрии: 4.1

Наземная станция предоставляет данные телеметрии с помощью Avro в качестве схемы. Ниже приведена схема. Обратите внимание, что антенны Майкрософт выдают данные телеметрии после получения первой точки данных. Данные телеметрии передаются с помощью подхода "последнее известное значение", то есть мы всегда отправим последнее значение для метрики. Из-за этого может появиться NULL значение в первой секунде контакта до тех пор, пока эта метрика не будет создана.

{
  "namespace": "EventSchema",
  "name": "TelemetryEventSchema",
  "type": "record",
  "fields": [
    {
      "name": "version",
      "type": [ "null", "string" ]
    },
    {
      "name": "contactId",
      "type": [ "null", "string" ]
    },
    {
      "name": "contactPlatformIdentifier",
      "type": [ "null", "string" ]
    },
    {
      "name": "groundStationName",
      "type": [ "null", "string" ]
    },
    {
      "name": "antennaType",
      "type": {
        "name": "antennaTypeEnum",
        "type": "enum",
        "symbols": [
          "Microsoft",
          "KSAT"
        ]
      }
    },
    {
      "name": "antennaId",
      "type": [ "null", "string" ]
    },
    {
      "name": "spacecraftName",
      "type": [ "null", "string" ]
    },
    {
      "name": "gpsTime",
      "type": [ "null", "double" ]
    },
    {
      "name": "utcTime",
      "type": "string"
    },
    {
      "name": "azimuthDecimalDegrees",
      "type": [ "null", "double" ]
    },
    {
      "name": "elevationDecimalDegrees",
      "type": [ "null", "double" ]
    },
    {
      "name": "contactTleLine1",
      "type": [ "null", "string" ]
    },
    {
      "name": "contactTleLine2",
      "type": [ "null", "string" ]
    },
    {
      "name": "links",
      "type": [
        "null",
        {
          "type": "array",
          "items": {
            "name": "antennaLink",
            "type": "record",
            "fields": [
              {
                "name": "name",
                "type": [ "null", "string" ]
              },
              {
                "name": "direction",
                "type": {
                  "name": "directionEnum",
                  "type": "enum",
                  "symbols": [
                    "Uplink",
                    "Downlink"
                  ]
                }
              },
              {
                "name": "polarization",
                "type": {
                  "name": "polarizationEnum",
                  "type": "enum",
                  "symbols": [
                    "RHCP",
                    "LHCP",
                    "linearVertical",
                    "linearHorizontal"
                  ]
                }
              },
              {
                "name": "uplinkEnabled",
                "type": [ "null", "boolean" ]
              },
              {
                "name": "channels",
                "type": [
                  "null",
                  {
                    "type": "array",
                    "items": {
                      "name": "antennaLinkChannel",
                      "type": "record",
                      "fields": [
                        {
                          "name": "name",
                          "type": [ "null", "string" ]
                        },
                        {
                          "name": "modemName",
                          "type": [ "null", "string" ]
                        },
                        {
                          "name": "digitizerName",
                          "type": [ "null", "string" ]
                        },
                        {
                          "name": "endpointName",
                          "type": "string"
                        },
                        {
                          "name": "inputEbN0InDb",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "inputEsN0InDb",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "inputRfPowerDbm",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "outputRfPowerDbm",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "packetRate",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "gapCount",
                          "type": [ "null", "double" ]
                        },
                        {
                          "name": "modemLockStatus",
                          "type": [
                            "null",
                            {
                              "name": "modemLockStatusEnum",
                              "type": "enum",
                              "symbols": [
                                "Unlocked",
                                "Locked"
                              ]
                            }
                          ]
                        },
                        {
                          "name": "commandsSent",
                          "type": [ "null", "double" ]
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}

В следующей таблице приведены исходные устройства или точки, возможные значения и определение каждой точки телеметрии.

Точка телеметрии Исходное устройство или точка Возможные значения Определение
версия Внутренний набор вручную Версия выпуска телеметрии
Contactid Ресурс контакта Идентификационный номер контакта
contactPlatformIdentifier Ресурс контакта
groundStationName Ресурс контакта Имя подстановки
antennaType Соответствующие разработчики телеметрии Майкрософт и партнеров задают это значение. MICROSOFT, KSAT, VIASAT Антенная сеть, используемая для контакта.
antennaId Ресурс контакта Имя удобочитаемого человека идентификатора антенны
имя космического корабля Синтаксический анализ с помощью идентификатора платформы контактов Имя космического корабля
gpsTime Обложки utcTime Время в GPS, когда было создано сообщение телеметрии клиента.
UTCTime Текущее время Время в формате UTC, когда было создано сообщение телеметрии клиента.
azimuthDecimalDegrees ACU: AntennaAzimuth Азимут антенны в десятичных градусах.
elevationDecimalDegrees ACU: АнтеннаElevation Повышение высоты антенны в десятичных градусах.
contactTleLine1 ACU: Спутник[0]. Model.Value Строка TLE 1 Первая строка TLE, используемая для контакта.
contactTLeLine2 ACU: Спутник[0]. Model.Value Строка TLE 2 Вторая строка TLE, используемая для контакта.
name [Link-level] Ссылка на профиль контакта Имя ссылки
direction Ссылка на профиль контакта Uplink, Downlink Направление ссылки, используемой для контакта.
Поляризации Ссылка на профиль контакта RHCP, LHCP, DualRhcpLhcp, LinearVertical, LinearHorizontal Поляризация ссылки, используемой для контакта.
uplinkEnabled ACU: SBandCurrent или UHFTotalCurrent • NULL (недопустимое направление CenterFrequencyMhz или Downlink)
• False (диапазоны, отличные от S и UHF или текущее < пороговое значение ampя)
• True (S/UHF-band, Uplink, Amp Current > Threshold)
Указывает, включена ли связь вверх для контакта.
имя [уровень канала] Канал связи с профилем контактов Имя канала
имя модема Модем Имя модемного устройства
digitizerName Дигитайзер Имя устройства дигитайзера
endpointName Канал связи с профилем контактов Имя конечной точки, используемой для контакта.
inputEbN0InDb Модем: измеряетсяEbN0 • NULL (модель модема, отличной от QRadio или QRx)
• Double: Input EbN0
Входная энергия в бите для шумовой плотности спектральной мощности в dB.
inputEsN0InDb Модем: измеряетсяEsN0 • NULL (модель модема, отличной от QRx)
• Double: Input EsN0
Входная энергия на символ для шумовой плотности спектральной мощности в dB.
inputRfPowerDbm Дигитайзер: inputRfPower • NULL (драйвер uplink или Digitizer, отличный от SNNB или SNWB)
• Double: Input Rf Power
Входная мощность RF в dBm.
outputRfPowerDbm Дигитайзер: outputRfPower • NULL (драйвер Downlink или Digitizer, отличный от SNNB или SNWB)
• Double: output Rf Power
Ouput RF power in dBm.
outputPacketRate Дигитайзер: rfOutputStream[0].measuredPacketRate • NULL (драйвер Downlink или Digitizer, отличный от SNNB или SNWB)
• Двойной: скорость вывода пакетов
Измеряемая скорость пакетов для uplink
gapCount Дигитайзер: rfOutputStream[0].gapCount • NULL (драйвер Downlink или Digitizer, отличный от SNNB или SNWB)
• Двойное: число разрывов
Количество разрывов пакетов для uplink
модемLockStatus Модем: carrierLockState • NULL (модель модема, отличной от QRadio или QRx; не удалось проанализировать состояние блокировки Enum)
• Пустая строка (если чтение метрик было null)
• Строка: состояние блокировки
Подтверждение блокировки модема.
commandsSent Модем: commandsSent • NULL (если не Uplink и QRadio)
• Double: # отправленных команд
Подтверждение отправки команд во время контакта.

Получатели событий

Вы можете создавать простые потребительские приложения для получения событий из центров событий с помощью потребителей событий. Ознакомьтесь со следующей документацией, чтобы узнать, как отправлять и получать центры событий на различных языках:

Журнал изменений

2024-04-17 — обновленная схема, которая включает возможные значения NULL для TLEs, а также добавлена EsN0 для QRX, а также добавлена ошибка о том, как антенны Майкрософт могут иметь значение NULL для поля во время первого второго контакта. 2023-10-03 — введите версию 4.0. Обновленная схема, включаемая метрики пакетов вверх и имена используемой инфраструктуры (наземные станции, антенна, космический аппарат, модем, дигитайзер, ссылка, канал)
2023-06-05 — обновленная схема для отображения метрик в каналах вместо ссылок.

Следующие шаги