news 2026/10/3 2:07:28

Pixhawk固定翼TECS调参指南:从能量控制原理到实战日志分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Pixhawk固定翼TECS调参指南:从能量控制原理到实战日志分析

1. 为什么固定翼飞控绕不开TECS:从一次惨痛炸机说起

先讲个我早年的真实案例。那时候我刚从多旋翼转固定翼,第一次用Pixhawk飞一套自组的1.4米塞斯纳,当时对TECS完全没有概念,只按多旋翼那套思路调PID。结果起飞后一加油门,飞机猛烈抬头,我下意识推升降舵压机头,速度反而越来越快,紧接着又因为速度太大拉飘,整个飞机在50米高度上画着正弦波,最后迎角过大失速,直接拍在地上。事后回看日志,油门和升降舵全程在打架——油门推了升降舵就压,升降舵拉了油门就收,两个通道互相干扰,能量全消耗在"内耗"上了。

这次炸机让我明白一件事:固定翼的控制逻辑和多旋翼有本质区别。多旋翼可以独立控制四个电机转速,升力和姿态天然解耦;但固定翼只有油门和升降舵两个主要能量相关通道,而速度、高度、姿态全都耦合在一起。你推升降舵抬头,不仅变高度,还会因为阻力增大而减速;你加油门,不仅变速度,还会因为升力增加而改变高度。如果我们还用"高度误差→升降舵"、"速度误差→油门"这种独立的PID闭环,两个回路必然冲突。

TECS(Total Energy Control System,总能量控制系统)就是为解决这个问题而生的。它的核心思想非常直白:别再分别盯着速度和高度了,把飞机看作一个能量系统,油门负责总能量,升降舵负责能量分配。油门决定"飞机有多少能量",升降舵决定"这些能量是变成高度还是速度"。这在数学上彻底解决了油门和升降舵的耦合问题。

Pixhawk从ArduPilot 3.x时代开始就把TECS嵌入到了固定翼的固定高度飞行模式(FBWA、CRUISE、AUTO等)中,只要你在用这些模式做航线飞行、自动降落,TECS就在全程工作。你即使不调它,它也按默认参数在工作——但默认参数只保证"能飞",不保证"飞得好"。

这篇教程,我会从能量控制的数学原理讲到Pixhawk里TECS的具体参数,再到实飞日志怎么分析,尽量让零基础的朋友也能看懂。内容会涉及一些公式,但我会用通俗的方式去讲,不会让你卡死在微积分上。

如果你想手工把固定翼调得既稳又准,或者正在被"高度振荡""速度忽快忽慢""油门和升降舵互相较劲"这类问题困扰,这篇应该能帮到你。

2. 先把总能量的概念掰开揉碎:TECS到底在算什么

2.1 一架飞机在空中,藏着两个能量账户

TECS的理论根基最早可以追溯到1980年代NASA兰利研究中心针对运输机的研究。当时研究人员发现,把速度控制和高度控制分开做,在强风切变、发动机推力大范围变化等工况下效果很差,于是提出把飞机看成一个能量系统来整体控制。

具体来说,一架飞机在空中的"总能量"由两部分构成:

  • 动能:决定速度。
  • 势能:决定高度。

你可以把这两个能量想象成两个银行账户。油门(推力)是往这两个账户里存钱的动作,升降舵不是存钱或取款的动作,而是决定钱存到哪个账户里的操作——它是转账,不是存取。

数学表达式是这样的:

[ E = \frac{1}{2}mV^2 + mgh ]

其中 (E) 是总机械能,(m) 是质量,(V) 是空速,(g) 是重力加速度,(h) 是高度。

但从控制角度,我们更关心的是能量随时间的变化率,因为飞控最终输出的是油门大小和舵面偏转量,这些是"每秒做什么"的问题。对时间求导后,两边同时除以 (mV)(注意这一步在能量控制里是常规操作,因为能量变化率正比于比功率),得到比能量变化率的一条关键公式:

[ \frac{\dot{E}}{mV} = \dot{V} + \frac{g\dot{h}}{V} ]

等式右边第一项是速度变化率,第二项是高度变化率除以速度并乘以重力加速度。这个式子告诉我们:总能量的变化率 = 速度的变化率 + "折算"后的高度变化率。

为什么要除以 (V)?因为不同速度下,同样的高度变化对应的能量变化是不同的。150km/h巡航时掉10米高度损失的势能,换算成速度变化,和80km/h慢速飞行时掉10米是完全不同的。除以速度后,两个物理量才有可比性。

2.2 还有一个"能量分配"账本:为什么升降舵只管能量的分配

光有总能量还不够。总能量控制解决了"油门和升降舵不打架"的问题,但两个账户之间也可能失衡——比如速度正常、高度偏低,这时候总能量是够的,你不需要猛推油门,只需要把一部分动能"转"成势能,让飞机爬升一点,同时保持总能量不变。

TECS引入第二个变量,叫能量分配(也成为能量平衡差),定义为动能变化率减去"折算后"的势能变化率:

[ B = \dot{V} - \frac{g\dot{h}}{V} ]

当速度偏高、高度偏低时,(B > 0),说明能量太多地集中在动能账户里,需要升降舵把一部分动能转化为势能——也就是向后拉杆抬头爬升。当速度偏低、高度偏高时,(B < 0),需要升降舵推杆低头,把势能转换为速度。

所以TECS的控制逻辑一句话就能概括:

  • 油门控制总能量,总能量误差大就加油门,总能量盈余就收油门。
  • 升降舵控制能量分配,动能太多就抬头消耗掉,势能太多就低头换回速度。

听起来是不是很简单?但这套逻辑在传统PID框架下很难实现,因为传统的"高度误差→升降舵、速度误差→油门"是直接拿误差信号去驱动执行机构,耦合关系完全没处理。

2.3 从公式到控制律:TECS的两个控制通道

Pixhawk中TECS的实际实现,是在上述能量公式基础上做了进一步细化。整体的控制律可以拆成两个主通道:

左端——油门通道(总能量控制)

[ \delta_T = k_{Tp} \left( E_{error} \right) + k_{Ti} \int E_{error} , dt + k_{Td} \frac{dE_{error}}{dt} + \text{前馈} ]

其中 (E_{error}) 是总能量设定值与实际值之间的误差,(k_{Tp})、(k_{Ti})、(k_{Td}) 对应油门PID参数。前馈部分会基于当前的油门设定值和需求加速度做预测,这在大油门大幅机动时非常重要。

右端——升降舵通道(能量分配控制)

[ \Delta_e = k_{Bp} \left( B_{error} \right) + k_{Bi} \int B_{error} , dt + k_{Bd} \frac{dB_{error}}{dt} + \text{俯仰姿态前馈} ]

(B_{error}) 是能量分配误差。升降舵还混入了俯仰姿态阻尼信号,这个在ArduPilot里面叫 pitch damping,目的是抑制俯仰振荡。

这里有一个特别容易搞混的点:TECS中的升降舵通道最终不是直接输出舵面偏角,而是先输出一个目标俯仰角(target pitch angle),再由后级的内环PID(通常是Pitch控制器)去跟踪这个目标俯仰角。所以TECS是外环,Pitch控制器是内环。外环管能量,内环管姿态跟踪。

提示:你调TECS的时候如果发现飞机虽然能量控制对了但姿态波动大,问题可能出在内环俯仰PID上,而不是TECS本身。这是很多人的认知误区,后面我会专门讲怎么区分。

3. 从飞行模式到实际效果:Pixhawk中的TECS长什么样

3.1 你猜TECS什么时候在工作?

很多飞友以为TECS只在"自动飞行"里才起作用,其实这是个常见的误解。在ArduPilot固定翼中,只要有以下几个条件,TECS就在后台运行:

  • 飞行模式使用了航向/高度导航,比如 FBWA(Fly By Wire A)、CRUISE、AUTO、GUIDED、RTL、LOITER。
  • 没有手动直接油门模式(比如手动模式、STABILIZE模式下油门是手动控制的,就不走TECS)。

也就是说,你只要在天上开着 FBWA 飞,油门杆的物理位置其实并不直接控制电机转速,而是作为TECS的一个"速度/油门偏移"参考。你推油门杆,TECS会理解为"我想飞得更快"或"允许使用更多推力",然后由TECS内部算法决定实际油门输出。

具体到ArduPilot代码里,TECS模块会生成四个核心输出量:

  1. throttle_dem:期望油门百分比。
  2. pitch_dem:期望俯仰角。
  3. aspeed_estimate:估算空速(如果有空速传感器)。
  4. height_estimate:估算高度(融合气压计、GPS等)。

这四个量再交给后续的姿态控制器和内环PID。所以你在Mission Planner的状态页面看到TS:、TP:之类的字段,就是TECS在"汇报工作"。

3.2 TECS工作流程的阶段拆解

TECS的内部计算流程,大致可以分为三个阶段。理解这个流程对参数调试特别有帮助,因为你会知道某类参数影响的是哪个阶段。

阶段一:期望值生成

飞控根据当前飞行模式的任务(高度、空速设定)生成期望高度 (h_{sp}) 和期望空速 (V_{sp})。这些期望值不是突变跳跃的,TECS内部有速率限制器(climb rate limit)和加速度限制器(accel limit),防止飞控发出过于剧烈的指令。

比如你在AUTO模式里设了巡航高度120米,当前高度80米,TECS不会立刻要求飞机以最大的爬升率冲上去,而是按照你设定的爬升率限制(默认 2.5 m/s 左右)生成一条平滑的高度曲线。这个设定直接关系乘客舒适度——虽然咱们的飞机没有乘客,但剧烈的高度指令会让舵机、结构件承受很大应力。

阶段二:误差计算与能量分配

TECS计算当前总能量和能量分配值,与期望值对比,得到两个误差信号。这个阶段同时会做一些滤波和限制,比如对空速和高度信号做低通滤波,以减少传感器噪声对控制量的影响。

阶段三:PID控制与前馈综合

两个误差信号分别进入两组PID控制器。同时,前馈环节会根据期望加速度/期望爬升率,提前计算一部分控制量输出。前馈的意义在于"提前行动"而不是"事后矫正"。

比如你期望飞机以 3 m/s 爬升,仅靠误差驱动的PID需要先看到高度误差增大才会加油门,响应自然滞后。而前馈会知道"要达到3 m/s爬升,需要额外多少推力"并直接加上去,油门响应快一大截。ArduPilot中对应的参数是TECS_THR_DAMP和TECS_PITCH_DAMP,这两个"阻尼系数"本质上就起到了前馈/能量转换作用。

3.3 默认参数到底靠不靠谱:一个容易复习的参考表

ArduPilot的TECS默认参数是经过大量测试得出的,对于一架常规布局、常规动力配置的固定翼(翼载荷不大、推重比适中、巡航速度合理),默认参数大部分时候"能飞"。但注意,"能飞"和"飞得好"是两码事。

下面几个核心参数,我会在第四章逐一讲解调优逻辑,这里先给一个速览表:

参数名默认值作用调节方向
TECS_CLMB_MAX5.0 m/s最大爬升率爬升能力不足时适当增大
TECS_SINK_MAX2.0 m/s最大下降率下降太慢时可以增大
TECS_TIME_CONST5.0 s总能量时间常数控制响应快慢,越大越柔和
TECS_THR_DAMP0.3 s油门通道阻尼/前馈增益过大油门振荡,过小响应迟钝
TECS_PITCH_DAMP0.4 s俯仰通道阻尼/前馈增益影响俯仰姿态响应
TECS_PITCH_MAX20.0 deg最大俯仰角限制限制机动幅度
TECS_PITCH_MIN-20.0 deg最小俯仰角限制防止抬头过大或低头过猛
TECS_ALT_ACCEL1.0 m/s²高度通道加速度限制防止高度修正过猛
TECS_INTEG_GAIN0.1积分增益处理稳态误差,过大易振荡

我对初学者的建议是:先按默认参数飞几次,记录问题,再有针对性地调。不要一上来就动一堆参数,因为TECS各参数之间的关联性很强,改一个可能牵动另一个,乱改最后会把自己绕晕。

4. 手把手调参:从飞机特征出发的TECS参数整定思路

4.1 调参之前,先回答三个问题

在打开Mission Planner的参数页之前,你要先搞清楚三个关于自己飞机的问题。这三个问题的答案直接决定TECS参数的大致量级,也决定飞机能否在空中被稳定控制住。

问题一:这架飞机动力冗余大不大?也就是最大推力与飞机重量之比。如果是像冲浪者、塞斯纳这种用3S/4S锂电带八九寸桨的常规飞机,推重比大约0.6~1.0,属于"正常动力"。如果像有些竞速机、飞翼,推重比超过1.5甚至2,动力冗余大,油门通道要更保守地调,否则一点油门误差就会带来很大的高度/速度变化。反之,像某些老式像真机,推重比只有0.4,油门响应"迟钝",需要把时间常数调小一点、增益调大一点,才能让TECS及时响应。

问题二:翼载荷大不大?翼载荷是翼面积和起飞重量之比。翼载荷大(比如超过 80g/dm²)的飞机,速度范围窄,失速速度快,对速度控制要求高,高度调整时需要更大的俯仰角、更快的响应;翼载荷小的滑翔机,速度范围宽,能量存储能力强,TECS可以调得比默认更"懒"一点。

问题三:有没有靠谱的空速传感器?这是很多人容易忽略的一点。TECS的核心变量是空速和高度,如果飞机只靠GPS地速和气压计估算空速,在风大的时候误差会很大,TECS会出现"看起来一切正常但实际能量控制不正确"的情况。

如果你暂时没有空速计,也不是不能飞,Pixhawk会用GPS地速去代替空速做估算,但风大的时候控制品质会变差,这点要有心理准备。我个人强烈建议玩固定翼至少装一个便宜的皮托管空速计,一个空速计对飞行品质的提升非常明显。

4.2 油门通道调优:先保证"能量充放"跟得上

油门通道对应的参数主要是TECS_TIME_CONST、TECS_THR_DAMP和TECS_INTEG_GAIN。

第一步:设置时间常数TECS_TIME_CONST

这个参数的单位是秒,含义是TECS校正总能量误差的响应速度。默认为5秒,意思大约是在5秒内校正掉63%的能量误差(类似一阶惯性系统的时间常数)。时间常数越大,响应越慢越柔和,适合飞得比较保守的飞机;时间常数越小,响应越快越敏感,适合机动性强、推力大的飞机。

从我的经验看:

  • 常规泡沫机、新手练习机:6~8秒比较舒服,修正柔和,油门不容易抽风。
  • 飞翼、竞速机、需要快速能量响应的飞机:3~4秒比较合适。
  • 大型像真机、低速滑翔机:8~10秒也不为过。

判断过大的表现是:高度偏离后,飞机会慢悠悠地回补,半天回不到目标高度,甚至看起来"懒得管"。 判断过小的表现是:油门频繁剧烈变动,电调容易过热,飞行轨迹前冲后仰,“像个不会开车的司机一直在修方向盘”。

第二步:设置油门阻尼/前馈TECS_THR_DAMP

这个参数的单位也是秒,默认0.3。它的物理意义是:当飞机需要变化一个单位的动能时,需要在多少秒内通过油门完成。实际上ArduPilot会用它来计算油门对速度误差的前馈。

数值取大的时候,油门响应更激进(因为前馈增益更大),爬升/加速更快,但更容易出现油门振荡;数值取小的时候,油门响应更温和,但可能感觉动力"跟不上"。

我在调的时候有一个经验:先用默认0.3,观察飞行日志中油门曲线的振荡情况。如果油门曲线在平飞时持续高频抖动,试着每次降0.05,直到抖动消失;如果油门响应太慢,速度稳定要很久,试着每次加0.05。

第三步:积分增益TECS_INTEG_GAIN

默认0.1。这个参数负责消除稳态误差,比如飞机以恒定的速度误差持续飞行、高度误差一直存在等。积分增益太大,会出现周期性的"油门呼吸感"——油门一上一下、飞机高度跟着波浪形起伏。太小则可能有固定偏差,比如巡航空速设定30m/s,实际稳定在28m/s就回不去了。

实际中我通常把这个值设成 0.1~0.15,很少超过0.2。

4.3 升降舵通道调优:让"能量转账"更利落

升降舵通道对应TECS_PITCH_DAMP、TECS_PITCH_MAX、TECS_PITCH_MIN以及TECS_ALT_ACCEL。

TECS_PITCH_DAMP默认0.4。它相当于俯仰前馈增益,决定了高度变化时飞机会以多大的俯仰角度去响应。这个值调大,飞机抬头/低头更积极,高度修正更快;但太大时飞机会频繁点头抬头,机身在航线中走出一条S形轨迹。调小则修正柔和,但会出现"高度不对但飞控不太管"的感觉。

一个值得注意的点是:TECS_PITCH_DAMP 和 TECS_THR_DAMP 需要配合。理想状态下,飞机高度误差修正时,应该尽量借助油门改变总能量,同时借助升降舵改变能量分配。如果油门阻尼调得大、俯仰阻尼调得小,飞机在高度低的时候会通过猛加油门的方式爬升,升降舵只是轻微抬头,这样速度会先增加再慢慢转为高度,修正过程长且轨迹不直。反过来,油门阻尼小、俯仰阻尼大,飞机倾向于用抬头的方式换高度,速度会掉得比较多,容易失速。

TECS_PITCH_MAX/TECS_PITCH_MIN是俯仰角的硬限幅,默认±20度。如果飞机满油飞行时抬头太多,或者俯冲加速时低头太多,都可能导致不可控制。原则上,新手飞机我建议限制在±15度以内,防止迎角过大失速。飞翼、坡航这类机动型可以放宽到±25度。不过要注意:俯仰角限制不能过小,否则高度修正能力会被严重削弱,在大风天气里可能航迹维持不住。

TECS_ALT_ACCEL默认1.0 m/s²,这是高度修正时的垂直加速度限制。这个值限制飞机"以多猛的方式"去回补高度误差。值越大,修正越猛,适合小翼载荷飞机;值越小,修正越柔和,适合大翼载荷或结构较脆弱的飞机。太猛时会在回补高度时出现拉G过大的情况,对翼梁和舵机都有额外应力。

4.4 爬升率和下降率限制:这是被很多人忽略的安全阀

TECS_CLMB_MAX和TECS_SINK_MAX分别限制最大爬升率和最大下降率,这个参数组对安全性的影响非常大。

我见过有些朋友为了让飞机快速爬升到巡航高度,把 TECS_CLMB_MAX 从默认5.0调到9.0,结果飞机每次从低高度往高高度回补时都是全油门爬升,空速掉得很厉害,在迎角大、速度低的状态下很容易失速。

我的建议是:对绝大多数常规飞机,爬升率上限设置在 3~5 m/s 就足够了。翼载荷大、动力弱的飞机甚至要设到 2~3 m/s,这样TECS会提前开始爬升,而不是到了目标高度附近才猛拉。下降率也一样,TECS_SINK_MAX默认2.0 m/s,建议别超过4.0,否则高高度下大下滑角会让空速迅速增加,对结构压力很大。

注意:这两个参数是安全阀,也是前置规划器。TECS会依据这两个限制规划期望高度曲线,所以合理的慢速爬升/下降设定能让整个修高过程平滑进行,避免"冲过头"的过冲和振荡。

4.5 参数联动:为什么不能单独只调一个

TECS最考验人的地方在于参数关联。我画个简化的"关系图":

  • TECS_TIME_CONST 越小 → 误差校正越快 → 对油门和俯仰的响应需求越高 → 需要 THR_DAMP / PITCH_DAMP 同步加大。
  • TECS_THR_DAMP 加大 → 油门响应快 → 能量输入快 → 高度回补可能过冲 → 可能需要加大 ALT_ACCEL 限幅让它不要冲太猛。
  • TECS_PITCH_DAMP 加大 → 俯仰响应快 → 高度修正快 → 但速度波动可能变大 → 要确认 TIME_CONST 是否匹配。
  • 最大爬升率/下降率限制加大 → 允许更快的能量变化 → 对前馈增益的要求更高。

所以调参的系统性做法是:先定时间常数骨架,再调油门/俯仰前馈,最后用限制器做安全兜底。每次只改一个参数,飞一个起落,看日志,再改下一个。一次性改多个参数出问题的时候,你根本不知道是哪个参数造成的。

5. 上层设定你以为无关紧要:空速、重量和巡航参数的隐形影响

5.1 重量参数错了,TECS能量估算全错

这是几乎每一个Pixhawk固定翼新手都会踩的坑。TECS计算能量时,公式 (E = \frac{1}{2}mV^2 + mgh) 里是有质量的 (m) 的!虽然在实际控制律中质量会被约掉一部分(我们在前面的推导中两边同除了 (mV)),但有些重量相关的参数(如重力补偿、最小油门限制等)仍然依赖你正确填写飞机重量。

更关键的是,ArduPilot 里有一个参数叫AHRS_TRIM_X、AHRS_TRIM_Y、AHRS_TRIM_Z,这是加速度计安装角度和重心的补偿。如果飞机重心靠后、安装角有偏移,TECS计算出来的能量误差会有系统偏差,导致平飞时油门忽大忽小。

所以当你发现TECS行为“奇怪”时,先检查:

  • 参数BATT_VOLT_PIN之类的电池参数有没有配好?电调输出对应的电压、电流是否正常?
  • 参数ARMING_REQUIRE相关的基础配置是否正确?
  • 最重要的是:有没有用 Mission Planner 做完整的加速度计校准和水平校准?
  • 重心位置有没有在厂商推荐范围内?

这些基础问题没解决之前,调TECS是事倍功半的。我见过很多飞友抱着参数页狂调,最后发现只是因为机头配重不对导致舵面要一直带偏转补偿,TECS看到的永远是"能量一直在偏"。

5.2 巡航空速设置:TECS的"期望值"从哪来

在 AUTO 和 CRUISE 模式中,期望空速一般来自TRIM_ARSPD_CM(单位是cm/s)或者航点任务里的DO_CHANGE_SPEED指令。这个参数决定了TECS认为的"巡航速度"是多少。

期望空速设置不合理,直接表现为:平飞时油门开度过大或过小。比如你设的巡航空速是18m/s,但飞机的经济巡航速度其实是14m/s,TECS会一直以为"速度不足",持续输出较高的油门期望,飞机飞行时整机带着多余能量,导致高度不好稳住。

更麻烦的是,在AUTO模式下如果你用了DO_CHANGE_SPEED更改航段空速,TECS会在每一个航点切换时重新计算期望能量。如果相邻航段的空速设定跳动大,TECS需要同时改变动能和势能,此时它的响应水平直接决定飞机的航迹品质。所以你设置的期望空速要和飞机的实际性能匹配:滑翔机可以设低一点,竞速机可以设高一点,要让TECS在能量控制上"有得玩"。

我用一个很直观的经验判断:巡航时油门应该稳定在40%~70%之间。如果平飞巡航油门长期超过80%,说明要么期望空速设太高了,要么飞机阻力太大动力不足;如果长期低于30%,说明期望空速太低或飞机动力过剩。这两种情况都需要调期望空速,让TECS工作在合理的能量区间内。

5.3 风的影响:TECS并不可怜——它需要空速真值

TECS不是一个抗风算法,它是一个能量管理算法。在强风中飞行,TECS需要准确区分"地速变化"和"空速变化"。

举一个具体的例子:逆风飞行时,地速可能只有15m/s,但空速是25m/s,飞机动能其实就是按25m/s算的;顺风飞行时地速30m/s,但空速只有20m/s,真实动能是按20m/s算的。如果没有空速计,TECS用GPS地速替代空速,它就会在逆风时低估动能、顺风时高估动能,能量分配随之出错,表现为:逆风时油门偏大、顺风时油门偏小,高度在风中起伏明显。

装上空速计以后,TECS的抗风性能会显著提升,因为能量控制重新基于真实的空速和气压高度。还在用GPS地速替代空速的朋友,如果你的飞机有多余的AUX口,强烈建议加一个空速计,几十块钱的东西,带来的飞行品质改善是立竿见影的。

我个人在风力超过8m/s时调参的经验是:适当减小TECS_TIME_CONST(从默认5调到3.5左右),让能量校正更快;同时把TECS_PITCH_MAX适当放宽一点,让飞机有更多俯仰权限去对抗风的扰动。

6. 实战日志分析:看懂这三条曲线,你就能精准定位问题

6.1 飞行日志里的TECS关键信号在哪里

Mission Planner 的 Flight Data 界面里,下拉菜单选择TECS组或者直接搜TS、TP、THR等关键词,就能看到TECS相关的数据。但很多人打开日志后一脸懵,不知道看什么。

我的建议是,你最需要关注三组曲线:

第一组:期望高度 vs 实际高度(TECS_SPEED、TECS_ALT 相关)

如果期望高度曲线是平的,而实际高度一直在它上下波动,说明TECS在反复过度校正——典型表现是高度超调。这时应该增大TECS_TIME_CONST,让校正速度放缓;或者检查TECS_ALT_ACCEL是否过大。

如果实际高度曲线在期望高度下方像"爬坡"一样缓慢接近,迟迟不汇合,说明响应太慢,应减小TECS_TIME_CONST或增大TECS_PITCH_DAMP。

第二组:期望空速 vs 实际空速

注意,期望空速信号是TECS_SPEED或ARSPD_DEM。如果实际空速经常比期望空速高不少,而油门已经很低,说明期望空速设低了,飞机一直在"滑翔减速";如果实际空速经常低于期望,油门一直高企,一是可能期望空速设高了,二是可能TECS_THR_DAMP前馈不足。

第三组:期望油门 vs 实际油门输出

期望油门是TECS计算的throttle_dem,实际油门一般看CTUN_ThrOut或RCOU的输出值。如果这两条线高频抖动,说明PID增益或阻尼配置偏激进,先降增益再看。

6.2 一个实战案例:高度振荡问题的完整排查链路

我最近调一架2米翼展的飞翼,现象是:AUTO模式下,高度设定80米,实际高度在70~90米之间反复穿越,航迹像个正弦波。

排查链路是这样的:

第一步:看高度和空速的曲线对应关系。发现高度波峰处空速最低,波谷处空速最高——这说明飞机在用"俯仰换高度"的过程中,能量没有被油门通道及时补偿。典型的特点是"牺牲速度换高度再掉回来",说明油门通道响应慢或者前馈不足。

第二步:看期望油门曲线。发现期望油门在高度波峰之后才开始增加,滞后明显。这印证了前馈不足的判断。于是我把TECS_THR_DAMP从默认0.3加到0.45,再飞。

第三步:复飞后的日志。高度振荡幅度从原来的±10米减小到±3米,但出现了一个新问题:油门曲线开始高频抖动,看起来像"油门在快速喘息"。

第四步:把TECS_INTEG_GAIN从0.1降到0.05。高频抖动明显缓解。

第五步:把TECS_TIME_CONST从5.0降到4.0。整体响应快了一拍,高度追踪更紧,振荡完全消失。

整个过程经历了三个起落、六次参数修改。每一次只改一个参数,而且每次改完以后看完整段日志再决定下一次改动。这就是调TECS的标准流程,急不来。

6.3 容易误判的"假故障":当问题出在内环而不是TECS

前面反复提过:TECS的输出是期望俯仰角,而实际舵面偏转由内环俯仰控制器完成。所以当你看到"高度控制变差"时,要先确认是不是内环跟踪出了问题。

怎么看?对比期望俯仰角(如ATT_PitchDem或CTUN_PitchDem)和实际俯仰角(ATT_Pitch)这两条曲线。如果两者贴合得很好,说明内环正常,问题在TECS外环;如果两者偏差大,尤其在机动时,说明内环俯仰PID参数不合适,这时调TECS也白搭。

我遇到过一架飞机,TECS参数怎么调都振荡,最后发现是升降舵舵量太大、俯仰内环增益过高,飞机对俯仰指令响应过灵敏,造成了"级联振荡"。这个例子说明:排查问题时一定要先分清问题发生在控制回路的哪一级。

提示:ArduPilot固定翼内环俯仰PID参数主要是PTCH2SRV_P、PTCH2SRV_I、PTCH2SRV_D。调TECS之前,先确认这几个参数在你的飞机上表现正常。

7. 进阶玩法:TECS和自动降落的配合,以及后续可以怎么扩展

7.1 自动降落时TECS的"能量走廊"逻辑

TECS在自动降落阶段的表现最值得研究。ArduPilot的自动降落(AUTO模式带LAND航点)中,飞机会在进场阶段按照下滑道(通常3度)下降,此时TECS需要同时管理动能和势能,让飞机沿着下滑道精准飞行。

如果TECS参数不合适,常见的问题有两种:一种是在下滑道上"点头"——飞机反复低头加速再抬头减速,航迹呈现波浪;另一种是进场速度不稳——时快时慢,最后接地位置发散。

正确的调节思路是:在自动降落前,先把TECS_CLMB_MAX和TECS_SINK_MAX设成合理的值(建议下滑阶段下降率不超过2~3m/s),然后用油门通道控制总能量沿下滑道衰减,用升降舵维持迎角和攻角。很多飞友在自动降落时喜欢把TECS_PITCH_MAX限制得特别小,怕飞机抬头失速,结果TECS为了维持下滑道不得不频繁调整油门,反而让速度不稳。

7.2 从TECS到更广阔的能量控制思路

TECS的价值不仅限于固定翼。在多旋翼的垂直起降固定翼(VTOL)中,TECS同样被用于前飞阶段的能量管理。在倾转旋翼、复合翼等构型的过渡飞行中,TECS负责协调升力面和推力的能量分配。如果你吃透了TECS的核心思想,再看这些更复杂的构型控制,会发现底层逻辑是共通的。

另外,如果你对航迹规划感兴趣,TECS还提供了很好的"期望值规划"思路——通过限制速率、加速度生成平滑的期望曲线,让后级控制器有更好的参考。这种"前馈规划+误差反馈"的结构,在现代飞行控制里应用极广,不光是TECS,L1导航、LQR航迹控制也都沿用了类似思路。

7.3 排障自查清单:如果TECS仍然让你头疼

最后,我把自己这些年在群里帮人排查TECS问题时的检查清单列出来,给大家做一个速查手册:

  1. 加速度计校准了吗?水平校准、安装方向对不对?
  2. 重心对吗?机头是否过重或过轻?有没有带着配重飞行?
  3. 空速计校准了吗?零风速下读数是否为0?安装位置会不会被螺旋桨滑流影响?
  4. 期望空速设得合理吗?平飞巡航时油门是否在40%~70%?
  5. 电池电压和电量充足吗?低电量下动力不足,TECS的期望能量可能达不到。
  6. 舵机行程和舵量够吗?升降舵最大偏角是否达到飞控要求(通常建议±25度以上)?
  7. 俯仰内环跟踪好吗?期望俯仰角和实际俯仰角是否贴合?
  8. 是只调了一个参数吗?每次改参后有没有充分验证?
  9. 是不是用的默认机架类型?ArduPilot里固定翼机架类型(FRAME_TYPE)不同,默认参数也有差异。

如果以上都排查过了还是有问题,那就把日志完整发出来,让别人看看。但如果你能自己看懂TS、TP、期望油门这几条曲线,绝大多数问题都能自己定位。

固定翼的控制从来不是"调好一个参数就行",而是一个系统性的工程。TECS作为这套系统里的核心模块,值得每一个玩Pixhawk固定翼的人花时间理解。一旦你把能量控制的思维内化了,再看飞控参数时,你看到的就不再是一堆数字,而是飞机在空中的每一次能量流动。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 2:03:51

ACD/Labs核磁数据分析实战:从谱图处理到结构验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 2:03:28

野外油气计量间油气参数远程监测系统设计:从架构到实施

干油气田自动化的人&#xff0c;应该都对“野外计量间”这三个字有点复杂情绪。先说这个系统到底是干什么的&#xff1a;把分散在井场、管线旁边的计量间内温度、压力、流量、液位、可燃气体浓度这些油气参数&#xff0c;在无人值守的状态下实时采集上来&#xff0c;通过4G无线…

作者头像 李华