跳转至

地面站、遥测、串口与外设通信异常

“地面站连不上”可能是供电、接线、电平、串口资源、波特率、协议、消息调度、射频链路、驱动、网络或应用权限问题。一次端到端失败不能说明故障在哪一层。

本节使用分层替换和双端计数定位链路边界,避免同时改端口、协议、波特率和硬件。

通信链路分层定位

前提条件

  • 飞行器拆桨并固定;
  • 已保存当前端口、外设、消息率和协议配置;
  • 已知两端设备型号、固件、接口电平和供电要求;
  • 已完成原始机载和地面端日志保全;
  • 接线操作全部断电进行;
  • 测试仪器与接口电压、速率和总线类型兼容;
  • 不在事故原件上先重刷固件或恢复出厂设置。

七层模型

层级 要回答的问题 典型证据
1 供电与参考地 两端是否稳定供电并共用正确参考 电压、电流、地线和重启
2 物理连接 引脚、方向、连接器和线束是否正确 接线图、连续性、照片
3 电气信号 电平、极性、边沿和噪声是否满足接口 示波器或逻辑分析仪
4 串行/总线参数 波特率、反相、单双工、地址是否一致 两端配置和原始字节
5 协议帧 帧格式、校验、版本和序列是否正确 解码结果、CRC和错误计数
6 消息与资源 消息率、队列、带宽和端口占用是否合理 字节率、丢包、负载和冲突
7 应用与展示 地面站、驱动、网络和界面是否正确解释 应用日志、版本和权限

应先证明低层通过,再解释高层。

先画实际链路

示例:

飞控UART
→ 电平/接口转换
→ 数传电台
→ 无线链路
→ 地面数传
→ USB驱动
→ 操作系统端口
→ 地面站

对于控制器局域网(CAN,Controller Area Network)、集成电路总线(I2C,Inter-Integrated Circuit)、串行外设接口(SPI,Serial Peripheral Interface)、以太网或Wi-Fi,应画出对应总线、终端、地址、交换和网络层。不要把所有外设都称为“串口”。

固定身份与配置

记录:

  • 飞控端口和引脚;
  • 通用异步收发器(UART,Universal Asynchronous Receiver/Transmitter)或其他总线实例;
  • 外设接口类型和电压等级;
  • TX/RX方向、地线、供电和流控;
  • 波特率、数据位、校验、停止位;
  • 反相、单双工和协议版本;
  • CAN节点、比特率和终端;
  • I2C地址、上拉和总线速率;
  • 消息类型、流率和优先级;
  • 射频频段、功率、空口速率和网络标识;
  • 地面端USB设备、驱动、端口和应用版本;
  • 最近硬件、固件或配置变化。

“配置看起来一样”不能替代两端导出值。

从供电开始

检查:

  • 外设启动和稳定电压;
  • 飞控供电与外设供电是否形成不安全反灌;
  • 高负载时外设是否重启;
  • USB供电与主电源供电时行为是否不同;
  • 地线是否可靠;
  • 外设电流是否超出端口或稳压能力;
  • 启动顺序是否影响枚举。

通信错误与电源重启同步时,先处理供电。

物理层

断电核对:

  • 引脚定义与方向;
  • TX接RX、RX接TX,或总线规定的同名连接;
  • 电压和逻辑电平兼容;
  • 连接器插合、压接、焊点和屏蔽;
  • 线长、布线和高电流线束间距;
  • 差分总线极性与终端;
  • 共享端口是否被其他功能占用。

不要仅凭线色判断信号。

电气信号

使用合适仪器检查:

  • 空闲电平;
  • 实际波特率;
  • 幅值和边沿;
  • 反相;
  • 发送是否存在;
  • 接收端是否看到相同帧;
  • 噪声、反射和总线争用;
  • 故障发生时是否有电源跌落。

探头接地错误可能造成短路。测量前确认设备是否隔离、地是否共地以及仪器额定范围。

协议与消息层

检查:

  • 两端协议版本;
  • 帧头、长度、校验和序列号;
  • 地址、系统ID或组件ID;
  • 收发字节和包计数;
  • 循环冗余校验(CRC,Cyclic Redundancy Check)、帧、超时和重试错误;
  • 消息请求与实际发送率;
  • 关键消息是否被低优先级流量挤占;
  • 处理器、串口和无线带宽;
  • 重连后的状态恢复。

只要有字节流不代表协议正确;地面站显示心跳也不代表全部必要消息都在正常更新。

命令来源、认证与重放

系统ID或组件ID只是寻址字段,不是发送者身份认证。涉及微型飞行器链路(MAVLink,Micro Air Vehicle Link)或网络链路时还要保存:

  • 线上原始帧及其接收接口;地面站tlog可能已剥离签名块或签名标志,不能替代线上抓包证明签名状态;
  • MAVLink版本、签名是否启用和未签名消息接收策略;
  • SystemID + ComponentID + LinkID区分的接收顺序、最后接受签名时间戳、签名失败和拒绝计数;
  • 本地签名时钟、首次报文接受窗口、设备重启和防重放状态是否持久化;
  • 命令来源、目标系统/组件、序列和确认;
  • 网络监听地址、路由、访问控制和暴露范围;
  • 密钥配置是否存在、轮换和保管状态,但不得把密钥值写入共享日志。

支持MAVLink 2签名的平台应核对签名状态、防重放时间窗及错误签名报文的接受/拒绝策略。只能取得tlog时,将签名与防重放结论标为证据不足。未签名接收、伪造或重放假设只能在隔离的软件在环或硬件在环环境验证,禁止在飞行器、开放无线环境或生产密钥上注入。

带宽预算

对异步串口,以每个协议帧已经包含头部、载荷、校验和可选签名字节为前提,单方向最低线速率为:

[ R_{line}=\sum_i(L_i \times f_i \times b_{wire}) ]

其中:

  • (L_i):第(i)类完整协议帧长度,单位为字节/帧;
  • (f_i):发送率,单位为帧/秒;
  • (b_{wire}):每个字节在线路上占用的位数;8N1通常为10位/字节,其他格式按实际计算;
  • (R_{line}):所需线速率,单位为比特/秒。

全双工链路分别计算上行和下行;半双工链路还要合并双向流量、换向时间和占空限制。利用率为(U=R_{line}/B_{nominal}),其中(B_{nominal})为标称线路速率。

在公式已经计入协议帧长度和串口位开销后,还要为以下项目预留:

  • 重传;
  • 双向命令和确认;
  • 无线链路开销;
  • 突发消息;
  • 安全余量。

配置波特率是链路上限之一,不是可用有效载荷速率。长期接近上限会形成队列延迟和选择性丢包。不存在跨协议通用的安全利用率;测试卡必须在执行前根据驱动、无线模块和健康基线填入最大利用率、第95/99百分位(P95/P99)延迟、关键消息最大间隔、丢包率、队列深度、处理器负载和温度停止值。

固定诊断步骤

  1. 绘制端到端实际链路;
  2. 固定两端硬件、固件、端口和协议;
  3. 检查供电、重启和参考地;
  4. 断电核对引脚、方向、电平和终端;
  5. 观察两端是否实际发送和接收;
  6. 保存原始字节、包计数和错误;
  7. 核对协议版本、地址和校验;
  8. 计算消息率与带宽预算;
  9. 检查端口冲突、系统负载、命令认证和应用权限;
  10. 每次替换链路中的一个已知合格环节;
  11. 重复同一测试并记录故障是否随环节移动;
  12. 恢复原配置并做端到端回归。

分层替换

合理的替换顺序示例:

  1. 保持飞控和配置不变,更换已知合格线缆;
  2. 保持链路不变,使用本地串口监视工具确认原始数据;
  3. 保持飞控端不变,更换已知合格地面USB接口;
  4. 绕过无线段做短距离有线或环回测试;
  5. 保持物理层不变,使用兼容协议解码器;
  6. 最后才更换外设或飞控端口。

每次替换前后保存配置和计数。未经验证的“备用件”不能作为合格对照。

常见症状

完全无数据

从供电、端口占用、TX/RX方向、电平、波特率和协议依次检查。

间歇断连

关联:

  • 外设重启;
  • 电源跌落;
  • 接头振动;
  • 温度;
  • 射频质量;
  • 队列和带宽;
  • USB枚举;
  • 应用日志。

只有部分数据

检查消息流率、请求、权限、协议版本、带宽和地面站过滤。不能把“心跳存在”视为链路全功能通过。

数据冻结但连接仍显示在线

检查消息更新时间和序列号。应用保持端口打开不表示数据仍在更新。

数据值乱码或比例错误

检查协议、字节序、字段版本、单位和解码器;不要先校准传感器。

遥测与遥控不要混用

一些系统复用同一射频链路或物理模块,但上行控制、下行遥测和视频仍可能具有不同队列、速率与错误行为。必须分别记录:

  • 方向;
  • 消息类型;
  • 更新时间;
  • 丢包和延迟;
  • 重连行为;
  • 对飞控安全状态的影响。

四平台入口

Betaflight 2026.6.2

  • 保存Ports、接收机、遥测、外设和资源映射;
  • 核对串口是否被MSP、接收机、GPS、遥测或其他功能冲突占用;
  • 使用CLI完整导出验证界面配置;
  • Blackbox或调试字段只能作为已配置情况下的补充;
  • 端口改动后先做拆桨输入、模式和输出回归。

INAV 9.1.0

  • 保存端口、GPS、接收机、遥测和外围设备配置;
  • 区分MSP、导航传感器、接收机和遥测的数据路径;
  • 对导航外设同时检查传感器健康与串口通信;
  • 固定配置器和固件版本。

ArduPilot Copter 4.7.1

  • 保存串口协议与波特率、网络、遥测和CAN参数;
  • 对齐DataFlash、地面站tlog和外设自身日志;
  • 检查消息率、端口实例、系统/组件ID和错误;
  • 使用固定版本文档解释SERIAL、CAN和消息流配置。

PX4 v1.17.0

  • 保存MAVLink实例、串口、网络、uORB日志和QGroundControl控制台信息;
  • 检查MAVLink模式、速率、端口和实例;
  • 对外设总线结合驱动状态、事件和传感器实例;
  • ULog正常不证明遥测链路正常,地面站在线也不证明机载记录完整。

低风险复现

环回与已知数据

使用协议允许的环回或已知测试帧验证单一链路段。不得把输出端直接短接到不兼容输入。

固定消息率测试

逐级增加已批准消息流,记录:

  • 实际发送和接收率;
  • 延迟;
  • 丢包;
  • 错误计数;
  • 处理器和端口负载;
  • 重连行为。

达到测试卡预填的任一停止值立即回退,不继续压满链路;没有数值、单位、来源和测量窗口时不得开始负载测试。

振动与温度关联

若只在动力或温度条件下断连,先检查连接、供电和器件,再在专用台架施加可量化条件。不通过敲击飞行器或带桨飞行寻找接触故障。

通过标准

  • 实际链路和各层接口已绘制;
  • 两端配置、协议和版本已固定;
  • 供电、物理、电气、帧、消息和应用层逐项分流;
  • 收发计数、错误、延迟和消息率可量化;
  • 故障通过单一环节替换或可重复条件定位;
  • 命令来源、签名/未签名策略、重放保护和网络暴露已审查;
  • 纠正后端到端功能和异常恢复均通过;
  • 端口改动后完成输入、模式、安全和日志回归;
  • 仍无法定位时保留未知,不以重刷或全换件代替结论。

本篇通过只表示通信链在当前隔离、无桨和负载范围内完成诊断与回归,不签发装桨、解锁或复飞授权。

停止条件

  • 接口电压、电平、引脚或地关系不明确;
  • 仪器连接可能短路或形成地环路;
  • 外设过热、反复重启或异常耗流;
  • 测试将占用接收机、执行器或安全关键端口;
  • 需要同时改变端口、协议、波特率和消息率;
  • 带宽达到测试卡上限或关键消息开始延迟;
  • 需要真实飞行复现通信中断;
  • 工具准备自动升级或写配置。

恢复措施

  1. 断电后撤销临时诊断接线,回到旧批准接线作差异核对;
  2. 撤销临时端口、协议、速率和消息配置;
  3. 重启并回读全量配置;
  4. 做拆桨端到端通信、接收机、模式和日志测试;
  5. 更换线束、天线或外设时按影响分析回到A/B2;
  6. 涉及导航或失效保护链路时回归05和08;
  7. 若旧基线本身含故障,另建纠正候选,不重新投入运行;
  8. 未通过回归和独立签署前保持阻断

诊断记录模板

以下分域字段必须与统一证据模型合并使用:

端到端链路:
两端硬件/固件/配置:
供电和参考地:
物理与电气检查:
收发字节与包计数:
协议、校验与序列:
签名、命令来源、重放保护与网络暴露:
消息率和带宽预算:
测试卡停止值与实测值:
错误、延迟和重连:
H1及反证:
H2及反证:
单一替换:
纠正与回归:
日志适用性:Q0 / Q1 / Q2 / Q3
因素清单(逐项填写角色、证据状态、证据索引、反证和纠正状态):
残余限制:
当前飞行批准:阻断 / 部分恢复 / 恢复
批准范围、批准人与到期条件:

检查理解

  1. 为什么地面站显示在线不能证明所有消息正常?
  2. 通信错误与电源重启同步时应先查哪一层?
  3. 为什么波特率不等于可用消息载荷速率?
  4. 如何通过分层替换避免一次更换整套设备?
  5. 串口改动后为什么还要回归接收机、模式和安全状态?

主要参考