2026年电赛控制题,用国产FPGA做四轴无人机悬停,PID参数整定有没有比试错法更快的调试思路?

开放5 回答 55 浏览

今年电赛控制题想用安路FPGA做主控做四轴无人机,现在卡在PID调参上,手动试错法调了两天还是震荡,队友都快崩溃了。网上搜到的都是STM32的调参经验,FPGA这边感觉响应快很多,参数范围完全不一样。想问下有没有系统化的调参流程?比如先调内环还是外环,采样频率和PWM频率怎么配合,有没有办法用ILA抓波形来分析响应曲线?另外国产FPGA的浮点运算资源有限,PID用定点数实现的话Q格式怎么选才不容易溢出?

分享:

5 个回答

  • 逻辑小白

    先别急着动参数,把内环(角速度)单独拎出来调。用Ziegler-Nichols临界比例度法,先加比例让系统等幅振荡,记下临界增益和周期,再按表算P、I、D初值,比你瞎试快多了。FPGA响应快是好事,但采样率别设太高,和PWM频率匹配好,不然锯齿波会干扰你的判断。

  • Verilog小白学逻辑

    我建议你先把外环(角度)的期望值设成零,只给内环(角速度)加阶跃扰动,用ILA抓角速度反馈和PWM输出的波形。重点看两个东西:一是从阶跃到响应开始的时间,这决定了你的采样周期够不够;二是超调量和振荡次数,如果超过两次还没收敛,基本就是P太大或者D没起作用。定点数的话,我个人经验是先用Q15,但一定要在累加器里用Q31甚至Q39做中间量,最后再截断到Q15输出。安路的FPGA资源不算多,但DSP块做乘法还是够用的,关键是别在PID里用浮点除法,全部改成查表或者移位。另外提醒一句,电赛的四轴一般电机响应有延迟,ILA抓到的波形如果看起来像纯延迟加一阶惯性,那你的PID模型就选对了,别急着加二阶项。

  • 数字IC萌新

    我觉得你们现在最大的问题可能不是参数,而是没有把「振荡来源」分清楚。四轴悬停的振荡至少有三种:结构共振、电机响应延迟、PID增益过高。手动试错两天还震荡,大概率是前两种和第三种混在一起了。建议先做一次开环测试:把PID全关,直接给电机固定PWM,用ILA抓加速度计和陀螺仪的原始输出,看看有没有固定频率的尖峰。如果有,那是结构共振,先改机架减震或者降低PWM频率避开它;如果没有,再进入闭环调参。内环用临界比例度法找初值后,外环不要急着加I,先只用P,让角度能缓慢跟随就行,外环的响应周期应该是内环的5到10倍,否则两个环会互相激励。定点实现上,除了Q15,我建议你把误差项单独用Q24存,因为积分项最容易溢出,而且积分限幅一定要做,不然风一吹就发疯。另外,安路的FPGA有现成的Cordic IP,但PID里用不上,别浪费资源。最后给你个偏方:把PID输出限幅设成PWM满量程的70%,很多看似不收敛的震荡其实是输出饱和后在极限环上打转。你们现在用的安路具体是哪个型号?如果是EG4系列,DSP资源会比较紧张,可能需要把I项改成增量式来省乘法器。

  • 单片机初学者

    先别急着调PID,你们现在最该做的是把「响应快」这个错觉纠正过来。FPGA是控制周期快,但电调和电机本身响应没那么快,你采样快了反而容易把噪声当信号。建议先把控制频率定在1kHz左右,PWM频率16kHz到20kHz,用ILA抓一次阶跃响应,先确认你的模型是几阶的再说调参。

  • 芯片验证新人

    我来说个可能不太中听但很现实的点:电赛四轴悬停,真正卡人的往往不是PID算法,而是你的姿态解算延迟和电机响应不一致。FPGA跑PID再快,如果IMU数据经过滤波延迟了10毫秒,那整个环路看起来就是一团糟。所以先检查你的姿态更新率是不是稳定,ILA抓一下陀螺仪原始数据和滤波后数据的延迟,如果延迟抖动超过一个控制周期,那PID怎么调都是白搭。定点数方面,Q15确实够用,但要注意你的误差量级——如果角度误差用度表示,那Q15的精度是0.001度左右,完全够;但角速度误差如果用度每秒表示,可能到几百的量级,Q15就溢出了,这时候得用Q12或者Q10。还有个技巧:把PID的P、I、D参数本身也做成定点查表,调试的时候在PC上算好float值,再转成定点写进寄存器,这样改参数不用重新综合,ILA里直接改寄存器值就行,能省很多编译时间。你们现在是用软核跑还是纯逻辑写PID?如果是纯逻辑,建议加一个调试用的串口寄存器组,方便在线改参数,不然每次改都要重新布局布线,心态真的会崩。

登录后可在本页底部提交回答

提问者

FPGA学号5查看主页
浏览「其他」

描述场景与已尝试方案,更容易获得有效解答

相关问题

同分类

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位