Skip to content

飞控与电调接口控制文档

字段内容
文档编号ICD-01-V0.1
版本V0.1
状态草稿
作者产品团队
日期2026-04-14
审核人
接口双方飞控系统 (FC) ↔ 电调系统 (ESC × 8)

修订记录

版本日期修订人修订内容
V0.12026-04-14产品团队初稿
V0.22026-04-16产品团队构型修订:CAN总线挂载设备8→4个ESC(V1四旋翼),预留8路扩展

1. 概述

1.1 目的

本文档定义飞控系统(FC)与电调系统(ESC)之间的接口规范,包括物理层连接、通信协议、消息帧格式、时序要求和安全约束。作为飞控固件和电调固件开发、联调测试的接口依据。

1.2 适用范围

  • 适用于飞控系统与4个独立ESC之间的CAN总线通信(V2扩展为8个)
  • 本文档定义的协议为自定义CAN协议(非标准MAVLink)

1.3 关联文档

文档编号文档名称关系
SUB-FC-V0.1飞控系统PRD接口一方
SUB-ESC-V0.1电调系统PRD接口另一方
PRD-MASTER-V0.1总体产品需求文档上位需求

1.4 术语定义

术语定义
FC飞控系统(Flight Controller)
ESC电子调速器(Electronic Speed Controller)
CAN控制器局域网络(Controller Area Network)
CAN 2.0BCAN标准,支持29位扩展帧标识符
CAN FDCAN灵活数据速率(Flexible Data-rate),支持更大数据帧
DLC数据长度码(Data Length Code)
RPM每分钟转数(Revolutions Per Minute)
心跳周期性发送的存活确认消息

2. 物理层

2.1 接口类型

参数规格
总线标准CAN 2.0B(标准帧/扩展帧)
波特率1 Mbps(标称)
电平标准ISO 11898-2(高速CAN,差分信号)
终端电阻总线两端各120Ω终端电阻

备注:若后续数据量需求增大(如增加电机振动数据回报),可考虑升级至CAN FD(最高8Mbps数据域),但V1.0版本以CAN 2.0B为基线。

2.2 线束规格

参数规格
导线双绞线(CAN_H + CAN_L),截面积≥0.22mm²(AWG24)
屏蔽推荐带屏蔽层,屏蔽层单端接地(飞控端)
线缆最大长度单ESC至飞控距离≤2m(机臂长度决定)
总线总长度≤5m(含所有分支)

2.3 连接器

参数规格
连接器类型[TBD — 待硬件团队确认,建议GH1.25-4P或同等防水连接器]
引脚定义Pin1: CAN_H, Pin2: CAN_L, Pin3: GND, Pin4: VCC(5V供电,可选)
防护要求连接器应具备防水密封(匹配IP56),且耐振动
锁紧机构应具备机械锁紧,防止振动脱落

2.4 接线拓扑

                         CAN总线主干
    ┌────────────────────────────────────────────────────┐
    │                                                    │
  [120Ω]                                              [120Ω]
    │                                                    │
  [FC]──┬──[ESC1]──[ESC2]──[ESC3]──[ESC4]──[ESC5]──[ESC6]──[ESC7]──[ESC8]

     飞控端

拓扑方案:单总线型

参数规格
拓扑结构单条CAN总线,V1共4个ESC菊花链或T型短截线连接(V2扩展为8个)
终端电阻位置飞控端(总线起始)和最远端ESC(总线末端)各120Ω
短截线长度每个ESC的分支线(stub)长度≤30cm

替代方案(保留):如果单总线负载过高(8节点+高频通信),可考虑分两路CAN总线:CAN1挂ESC1~4(机臂M1/M2侧),CAN2挂ESC5~8(机臂M3/M4侧)。V1.0先按单总线实现,测试后决定是否拆分。


3. 协议层

3.1 CAN消息ID分配规则

采用CAN 2.0B 标准帧(11位ID) 格式,消息ID编码规则如下:

  Bit[10:8]   Bit[7:4]      Bit[3:0]
  ┌────────┐ ┌───────────┐ ┌─────────┐
  │ 优先级  │ │ 消息类型   │ │ 节点ID   │
  │ (3bit) │ │ (4bit)    │ │ (4bit)  │
  └────────┘ └───────────┘ └─────────┘

优先级定义:

优先级值含义说明
0 (000)紧急紧急停机等安全关键指令
1 (001)常规控制指令(油门/转速)
2 (010)状态反馈数据
3 (011)配置/诊断/升级

消息类型定义:

类型值方向含义
0x0FC→ESC油门/转速指令
0x1FC→ESC电机测试指令
0x2FC→ESC电机校准指令
0x3FC→ESC紧急停机指令
0x4FC→ESC配置参数写入
0x5FC→ESC固件升级数据
0x8ESC→FC转速/电流反馈
0x9ESC→FC温度/电压反馈
0xAESC→FC故障码上报
0xBESC→FC心跳/状态
0xCESC→FC配置参数回读
0xDESC→FC固件升级应答

节点ID定义:

节点ID节点
0x0飞控(FC),广播目标
0x1~0x8ESC 1~8(对应电机M1~M8)
0xF广播(所有ESC)

3.2 CAN消息ID分配表

消息ID (Hex)方向消息名称周期/触发DLC说明
0x100+NFC→ESC转速指令(单个ESC)周期:2.5ms(400Hz)8N=1~8,对应ESC编号
0x10FFC→ESC转速指令(广播,全部ESC)周期:2.5ms(400Hz)8同时下发4个ESC转速(V1),V2扩展为8个
0x110+NFC→ESC电机测试指令事件触发8地面测试用
0x120+NFC→ESC电机校准指令事件触发8行程校准
0x030FC→ESC紧急停机(广播)事件触发2最高优先级,所有ESC立即停机
0x140+NFC→ESC配置参数写入事件触发8写入ESC参数
0x150+NFC→ESC固件升级数据事件触发8Bootloader模式下使用
0x280+NESC→FC转速/电流反馈周期:20ms(50Hz)8N=1~8
0x290+NESC→FC温度/电压反馈周期:500ms(2Hz)8N=1~8
0x2A0+NESC→FC故障码上报事件触发8N=1~8,故障时立即发送
0x2B0+NESC→FC心跳/状态周期:1000ms(1Hz)4N=1~8
0x2C0+NESC→FC配置参数回读事件触发8N=1~8
0x2D0+NESC→FC固件升级应答事件触发8N=1~8

3.3 消息帧格式定义

3.3.1 转速指令帧(FC→单个ESC)

CAN ID: 0x100+N(N=1~8)
方向: FC → ESC
周期: 2.5ms(400Hz)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0-1target_rpmuint16RPM0~15000目标转速,0=停止。大端序(MSB在前)
2control_modeuint80/1/20=转速模式,1=油门百分比模式,2=停机
3throttle_pctuint80.5%0~200油门百分比(仅control_mode=1时有效),实际值=字段值×0.5,范围0~100%
4reserved_1uint80保留,填0
5reserved_2uint80保留,填0
6sequenceuint80~255序列号,循环递增
7checksumuint8Byte[0]~Byte[6]异或校验

3.3.2 转速指令帧(FC→广播全部ESC)

CAN ID: 0x10F
方向: FC → 所有ESC
周期: 2.5ms(400Hz)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0throttle_1uint80.5%0~200ESC1油门百分比,实际值=字段值×0.5
1throttle_2uint80.5%0~200ESC2油门百分比
2throttle_3uint80.5%0~200ESC3油门百分比
3throttle_4uint80.5%0~200ESC4油门百分比
4throttle_5uint80.5%0~200ESC5油门百分比
5throttle_6uint80.5%0~200ESC6油门百分比
6throttle_7uint80.5%0~200ESC7油门百分比
7throttle_8uint80.5%0~200ESC8油门百分比

注意:广播帧使用油门百分比模式(1 byte/ESC,V1为4个ESC使用4字节,V2扩展为8个ESC使用8字节数据帧)。高精度转速控制场景使用单播帧(0x100+N)。

3.3.3 紧急停机指令帧(FC→广播)

CAN ID: 0x030(最高优先级)
方向: FC → 所有ESC
触发: 事件触发(紧急停机按键、安全状态机EMERGENCY状态)
DLC: 2 bytes

Byte字段名称数据类型单位范围说明
0cmd_typeuint80xE0固定值0xE0,表示紧急停机
1confirmuint80x5A确认码0x5A,双字段校验防误触发

安全要求:ESC收到此帧后必须在**≤10ms**内停止所有输出。此帧应连续发送3次以确保所有ESC收到。

3.3.4 电机测试指令帧(FC→ESC)

CAN ID: 0x110+N(N=1~8)
方向: FC → ESC
触发: 事件触发(地面维护/调试模式下使用)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0test_cmduint80~30=停止测试,1=低速旋转,2=指定转速旋转,3=转向测试
1-2test_rpmuint16RPM0~3000测试转速(仅test_cmd=2时有效)
3durationuint80~60测试持续时间,0=持续直到手动停止
4-7reserved0保留,填0

安全约束:电机测试指令仅在飞行器处于地面且未解锁状态时可执行。飞控应在发送前校验飞行状态。

3.3.5 电机校准指令帧(FC→ESC)

CAN ID: 0x120+N(N=1~8)
方向: FC → ESC
触发: 事件触发(校准流程中使用)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0cal_cmduint80~20=取消校准,1=油门行程校准,2=电机参数识别
1cal_stepuint80~255校准步骤序号
2-7cal_data校准参数数据(步骤相关)

3.3.6 转速/电流反馈帧(ESC→FC)

CAN ID: 0x280+N(N=1~8)
方向: ESC → FC
周期: 20ms(50Hz)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0-1actual_rpmuint16RPM0~15000实际转速,大端序
2-3phase_currentuint160.01A0~65535相电流,实际值=字段值×0.01A,范围0~655.35A
4-5bus_currentuint160.01A0~65535母线电流,实际值=字段值×0.01A
6esc_statusuint8位域bit0:运行中, bit1:故障, bit2:过温预警, bit3:过流预警, bit4:堵转, bit5~7:保留
7sequenceuint80~255序列号,循环递增

3.3.7 温度/电压反馈帧(ESC→FC)

CAN ID: 0x290+N(N=1~8)
方向: ESC → FC
周期: 500ms(2Hz)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0-1mos_tempint160.1°C-400~1500MOS管温度,实际值=字段值×0.1,范围-40~150°C,大端序
2-3bus_voltageuint160.01V0~65535母线电压,实际值=字段值×0.01V
4-5motor_tempint160.1°C-400~2000电机温度(如有传感器),无传感器填0x7FFF表示无效
6fw_versionuint80~255固件版本号(主版本.次版本,高4位.低4位)
7hw_versionuint80~255硬件版本号

3.3.8 故障码上报帧(ESC→FC)

CAN ID: 0x2A0+N(N=1~8)
方向: ESC → FC
触发: 事件触发(故障发生时立即发送,连续发送3次确保送达)
DLC: 8 bytes

Byte字段名称数据类型单位范围说明
0-1fault_codeuint16位域故障码位域(见下表)
2-3fault_valueuint16故障触发时的关联数值(如过流时的电流值)
4-7timestampuint32msESC内部时间戳

故障码位域定义:

Bit故障类型说明
0过流(OC)相电流超过保护阈值
1过温(OT)MOS温度超过保护阈值
2堵转(STALL)电机堵转检测
3欠压(UV)母线电压低于安全阈值
4过压(OV)母线电压超过安全阈值
5通信异常(COM)CAN总线通信异常
6传感器异常(SENSOR)温度/电流传感器异常
7硬件异常(HW)MOSFET/驱动电路异常
8~15保留预留扩展

3.3.9 心跳/状态帧(ESC→FC)

CAN ID: 0x2B0+N(N=1~8)
方向: ESC → FC
周期: 1000ms(1Hz)
DLC: 4 bytes

Byte字段名称数据类型单位范围说明
0esc_stateuint80~40=INIT, 1=IDLE(就绪), 2=RUNNING(运行), 3=ERROR(故障), 4=BOOTLOADER
1uptime_minuint8分钟0~255ESC运行时间(分钟),溢出归零
2boot_countuint80~255ESC启动次数(掉电重启计数)
3reserveduint80保留

4. 心跳与超时机制

4.1 飞控→ESC 心跳

飞控通过周期性发送转速指令帧(0x100+N0x10F,400Hz)作为隐式心跳。ESC不需要额外的心跳帧即可判断飞控在线状态。

4.2 ESC→飞控 心跳

参数规格
心跳帧0x2B0+N,周期1000ms(1Hz)
超时判定飞控连续3秒未收到某ESC心跳,判定该ESC离线/故障
故障响应飞控将该ESC标记为故障,触发安全状态机预警→启动电机失效降级逻辑

4.3 ESC指令超时保护

参数规格
超时阈值ESC连续100ms未收到飞控转速指令,判定通信丢失
第一阶段响应(100~500ms)ESC将目标转速按10%/100ms速率线性下降
第二阶段响应(>500ms)ESC将电机转速降至0并保持停止
恢复条件重新收到有效转速指令后,ESC恢复正常响应

4.4 总线错误处理

场景ESC行为飞控行为
CAN总线错误帧增多(Bus-off)ESC自动尝试恢复(CAN控制器自动恢复机制),恢复后继续通信飞控检测到ESC回报丢失,按心跳超时逻辑处理
单ESC CAN控制器Bus-off该ESC通信中断,其余ESC不受影响飞控标记该ESC故障
飞控CAN控制器Bus-off所有ESC按指令超时逻辑逐步降速停机

5. 上电时序

5.1 正常上电流程

时间轴 →
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[T0] 电池接入,供电开始

  ├─ ESC ① 上电自检(≤200ms)
  │       ├─ 初始化CAN控制器
  │       ├─ 初始化驱动电路
  │       ├─ 电机输出保持关闭(安全要求)
  │       └─ 开始发送心跳帧(状态=INIT)

  ├─ 飞控 上电自检(≤2s)
  │       ├─ 初始化传感器、CAN、存储
  │       └─ 扫描CAN总线,等待4个ESC心跳

[T0+3s] 飞控确认4个ESC全部在线
  │       ├─ 飞控发送配置帧(如需)
  │       └─ ESC心跳状态切换为IDLE(就绪)

[T0+5s] 系统就绪,等待用户解锁

[Tarm]  用户执行解锁操作(摇杆打杆/按键解锁)
  │       ├─ 飞控开始发送转速指令帧(400Hz)
  │       └─ ESC收到首条有效指令后状态切换为RUNNING

[Tfly]  电机起转,飞行器起飞
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.2 上电时序约束

约束项要求
ESC上电到心跳首发≤500ms
飞控上电到CAN就绪≤2s
全系统就绪(4个ESC均在线)≤5s(含飞控启动时间)
ESC上电后电机状态必须保持停止,直到收到飞控有效转速指令
解锁前ESC收到转速指令ESC应忽略解锁前的任何非零转速指令(安全冗余)

5.3 掉电与重启

场景行为
飞行中电池瞬断后恢复ESC应在≤200ms内重新初始化并恢复到IDLE状态,等待飞控指令
飞行中单ESC重启该ESC重启后回到INIT→IDLE,飞控重新检测到后可恢复控制
飞控重启(飞行中不应发生)所有ESC按指令超时逻辑降速停机

6. 安全约束

6.1 紧急停机

编号安全约束要求
ICD-01-S-001紧急停机信号端到端延迟从飞控发出紧急停机帧(0x030)到ESC关断电机输出,总延迟≤10ms
ICD-01-S-002紧急停机帧发送策略飞控应连续发送3次紧急停机帧(间隔1ms),确保所有ESC收到
ICD-01-S-003紧急停机帧优先级CAN ID 0x030 为总线上最高优先级消息,仲裁时必赢
ICD-01-S-004紧急停机帧校验ESC收到紧急停机帧时须校验cmd_type=0xE0且confirm=0x5A,双字段匹配才执行,防止误触发

6.2 单ESC故障隔离

编号安全约束要求
ICD-01-S-005单ESC故障不影响总线单个ESC硬件故障(如CAN控制器Bus-off)不应导致整条CAN总线瘫痪,其余7个ESC通信应不受影响
ICD-01-S-006ESC故障上报及时性ESC检测到自身故障后应在≤5ms内发送故障码帧(0x2A0+N
ICD-01-S-007飞控故障响应延迟飞控收到ESC故障码后应在≤50ms内启动降级飞行逻辑(对应FC-S-002/003)

6.3 数据完整性

编号安全约束要求
ICD-01-S-008指令帧校验转速指令帧(0x100+N)包含XOR校验字节,ESC应校验后再执行
ICD-01-S-009序列号连续性检查ESC应监测序列号连续性,连续丢失≥5帧时上报通信异常告警
ICD-01-S-010非法指令过滤ESC应拒绝超出范围的转速值(>15000RPM)或非法控制模式值

7. 总线负载分析

7.1 周期性消息负载计算

CAN 2.0B 标准帧结构:帧头(1)+仲裁域(11+1)+控制域(6)+数据域(0~64bit)+CRC(16)+ACK(2)+帧尾(7)+帧间隔(3) = 约 111~135 bit/帧(8字节数据域取130bit估算)。

消息类型方向数量频率每帧bit数(估算)总带宽 (bit/s)
转速指令(广播)FC→ESC1400 Hz13052,000
转速/电流反馈ESC→FC850 Hz13052,000
温度/电压反馈ESC→FC82 Hz1302,080
心跳/状态ESC→FC81 Hz100800
合计(周期性)≈107,000

CAN总线带宽: 1 Mbps = 1,000,000 bit/s

周期性负载率: 107,000 / 1,000,000 = ≈10.7%

7.2 负载余量评估

指标数值
周期性消息负载率≈10.7%
事件触发消息预留≈5%(故障上报、配置等突发消息)
总预估负载率≈15.7%
推荐安全阈值≤30%(CAN总线经验推荐值)
余量充足,无需拆分双总线

结论:V1.0单CAN总线方案负载率约15.7%,远低于30%安全阈值,满足通信需求。若后续增加电机振动数据等高频回报,可考虑拆分双总线或升级CAN FD。


8. 待决事项 (TBD)

编号事项描述责任人期望决定日期影响范围
TBD-ICD01-001CAN连接器具体型号待硬件团队确认硬件工程师2025-052.3 连接器
TBD-ICD01-002ESC指令超时阈值(当前设定100ms)需通过飞行测试验证合理性飞控/电调工程师2025-064.3 指令超时保护
TBD-ICD01-003是否需要支持CAN FD以预留扩展空间(V1.0以CAN 2.0B为基线)系统架构师2025-062.1 / 全文
TBD-ICD01-004配置参数写入帧(0x140+N)和固件升级帧(0x150+N)的详细数据格式待定义电调工程师2025-063.3
TBD-ICD01-005单总线 vs 双总线拓扑决策需在8节点联调测试后最终确定飞控/电调工程师2025-062.4 / 7.2
TBD-ICD01-006堵转保护的检测时间阈值需确定后同步至协议文档电调工程师2025-053.3.8 故障码
TBD-ICD01-007电机温度传感器是否配备(影响温度反馈帧motor_temp字段是否有效)硬件工程师2025-053.3.7

附录

附录A:CAN消息ID速查表

CAN ID (Hex)方向名称频率优先级
0x030FC→ALL ESC紧急停机事件最高
0x100+NFC→ESC(N)转速指令(单播)400Hz
0x10FFC→ALL ESC转速指令(广播)400Hz
0x110+NFC→ESC(N)电机测试事件
0x120+NFC→ESC(N)电机校准事件
0x140+NFC→ESC(N)配置写入事件
0x150+NFC→ESC(N)固件升级事件
0x280+NESC(N)→FC转速/电流50Hz
0x290+NESC(N)→FC温度/电压2Hz
0x2A0+NESC(N)→FC故障码事件
0x2B0+NESC(N)→FC心跳/状态1Hz
0x2C0+NESC(N)→FC配置回读事件
0x2D0+NESC(N)→FC升级应答事件

附录B:ESC节点ID与电机位置对应表

ESC节点ID电机编号机臂位置旋转方向
1M1右前[TBD-待确认]
2M2左前[TBD-待确认]
3M3左后[TBD-待确认]
4M4右后[TBD-待确认]
5M5[TBD][TBD-待确认]
6M6[TBD][TBD-待确认]
7M7[TBD][TBD-待确认]
8M8[TBD][TBD-待确认]

:V1四旋翼布局的电机编号M1~M4与机臂位置对应关系需参考结构设计确认。V2升级为8旋翼时扩展定义M5~M8。

菲航户外事业部产品知识库