你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

接收实时天线遥测

Azure Orbital 地面站发出天线遥测事件,可用于分析联系期间的地面站运行情况。 可以将联系配置文件配置为将遥测事件发送到 Azure 事件中心

在本指南中,你将学习如何:

  • 为 Azure Orbital 地面站配置 Azure 事件中心
  • 在联系配置文件中启用遥测。
  • 验证遥测数据的内容
  • 了解遥测点

配置事件中心

  1. 在订阅中,转到设置中的资源提供程序。 搜索 Microsoft.Orbital 并将其注册为提供程序
  2. 在订阅中创建 Azure 事件中心命名空间事件中心

注意

选择“公共访问”可访问事件中心。 不支持专用访问或服务终结点。

  1. 在左侧菜单中,选择“访问控制(IAM)”。 在“授予对此资源的访问权限”下,选择“添加角色分配”

注意

若要分配 Azure 角色,必须具有:Microsoft.Authorization/roleAssignments/write 权限,例如用户访问管理员所有者

  1. 在“角色”选项卡下,搜索并选择“Azure 事件中心数据发送方”。 单击“下一步”。
  2. 在“成员”选项卡下,将访问权限分配给用户、组或服务主体
  3. 单击“+ 选择成员”。
  4. 搜索“Azure Orbital 资源提供程序”,单击“选择”
  5. 单击“查看 + 分配”。 此操作授予 Azure Orbital 地面站将遥测数据发送到事件中心的权限。
  6. 要确认新添加的角色分配,请返回“访问控制(IAM)”页面并选择“查看对此资源的访问权限”。 Azure Orbital 资源提供程序应在“Azure 事件中心数据发送方”下

为联系配置文件启用事件中心遥测

按如下所示配置联系配置文件

  1. 使用“事件中心命名空间”下拉菜单选择命名空间。
  2. 使用在选择命名空间后出现的“事件中心实例”下拉菜单选择一个实例。

可以更新现有联系配置文件的设置,方法是

验证来自联系的天线遥测数据

使用之前为事件中心遥测配置的联系配置文件计划联系。 联系开始后,你应该很快就能在事件中心看到数据。

可以通过多种方式验证传入遥测数据的存在和内容。

事件中心命名空间仪表板

要验证事件中心是否接收到事件,可以查看资源组中事件中心命名空间概述页面上的图。 此视图显示某个命名空间中所有事件中心实例的数据。 可以导航到资源组中特定事件中心实例的概述页面,查看该实例的图。

将天线遥测数据传送到存储帐户

可以启用事件中心捕获功能,以自动将遥测数据传送到所选的 Azure Blob 存储帐户。 按照说明启用捕获并将数据捕获到 Azure 存储。 启用后,可以检查容器并查看/下载数据。

了解遥测点

当前遥测架构版本:4.1

地面站使用 Avro 作为架构来提供遥测。 下面是该架构。 注意,一旦接收到第一个数据点,Microsoft 天线就会发射遥测数据。 遥测数据是使用“最后一个已知值”方法报告的,这意味着我们将始终发送指标的最新值。 由于此行为,你在开始联系的第一秒可能会看到一个 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/合作伙伴遥测生成器设置此值 MICROSOFT、KSAT、VIASAT 用于联系的天线网络。
antennaId 联系资源 天线 ID 的可读名称
spacecraftName 从联系平台标识符分析 航天器的名称
gpsTime utcTime 的转换 生成客户遥测消息的 GPS 时间。
utcTime 当前时间 生成客户遥测消息的 UTC 时间。
azimuthDecimalDegrees ACU: AntennaAzimuth 天线方位角,以十进制度为单位。
elevationDecimalDegrees ACU: AntennaElevation 天线仰角,以十进制度为单位。
contactTleLine1 ACU: Satellite[0].Model.Value TLE 第 1 行字符串 用于联系的 TLE 的第一行。
contactTLeLine2 ACU: Satellite[0].Model.Value TLE 第 2 行的字符串 用于联系的 TLE 的第二行。
名称 [Link-level] 联系配置文件链接 链接的名称
direction 联系配置文件链接 上行链路、下行链路 用于联系的链接方向。
极化 联系配置文件链接 RHCP、LHCP、DualRhcpLhcp、LinearVertical、LinearHorizontal 用于联系的链接的极化。
uplinkEnabled ACU:SBandCurrent 或 UHFTotalCurrent • NULL(无效的 CenterFrequencyMhz 或下行链接方向)
• False(除 S 和 UHF 或 Amp Current < 阈值以外的带)
• True(S/UHF 带,上行链路,Amp Current > 阈值)
指示是否已为联系启用上行链路。
名称 [Channel-level] 联系配置文件链接通道 通道的名称
modemName 调制解调器 调制解调器设备的名称
digitizerName 数字化器 数字化器设备的名称
endpointName 联系配置文件链接通道 用于联系的终结点的名称。
inputEbN0InDb 调制解调器:measuredEbN0 • NULL(QRadio 或 QRx 以外的调制解调器模型)
• 双:输入 EbN0
每比特输入能量与噪声功率谱密度的比值,单位为 dB。
inputEsN0InDb 调制解调器:measuredEsN0 • NULL(QRx 之外的调制解调器型号)
• Double:输入 EsN0
每符号输入能量与噪声功率谱密度的比值,单位为 dB。
inputRfPowerDbm 数字化器:inputRfPower • NULL(SNNB 或 SNWB 以外的上行链路或数字化器驱动程序)
• 双:输入射频功率
输入射频功率,单位为 dBm。
outputRfPowerDbm 数字化器:outputRfPower • NULL(SNNB 或 SNWB 以外的下行链路或数字化器驱动程序)
• 双:输出射频功率
输出射频功率,单位为 dBm。
outputPacketRate 数字化器:rfOutputStream[0].measuredPacketRate • NULL(SNNB 或 SNWB 以外的下行链路或数字化器驱动程序)
• 双:输出数据包速率
上行链路的测量数据包速率
gapCount 数字化器:rfOutputStream[0].gapCount • NULL(SNNB 或 SNWB 以外的下行链路或数字化器驱动程序)
• 双:间隔计数
上行链路的数据包间隔计数
modemLockStatus 调制解调器:carrierLockState • NULL(QRadio 或 QRx 以外的调制解调器模型;无法分析锁定状态枚举)
• 空字符串(如果指标读数为 null)
• 字符串:锁定状态
确认调制解调器已锁定。
commandsSent 调制解调器:commandsSent • NULL(如果不是上行链路和 QRadio)
• 双:已发送的命令数
确认在联系期间发送了命令。

事件使用者

可以使用事件使用者编写简单的使用者应用从事件中心接收事件。 请参阅以下文档,了解如何使用多种语言发送和接收事件中心事件:

更改日志

2024-04-17 - 更新了架构来为 TLE 包括可能的 NULL,为 QRX 添加了 EsN0,并添加了关于 Microsoft 天线在开始联系的第一秒可能具有字段值 NULL 的简介。 2023-10-03 - 引入版本 4.0。 已更新架构,包括正在使用的上行链路数据包指标和基础设施名称(地面站、天线、航天器、调制解调器、数字化器、链接、通道)
2023-06-05 - 已更新架构,在通道(而不是链接)下显示指标。

后续步骤