ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FOC驱动板调试:FDCAN与栅极驱动验证全记录

FOC驱动板调试:FDCAN与栅极驱动验证全记录 一个人闷头调板子的时候总是想找一个明确的节点升魂浩荡这个代号就是我手头这块FOC驱动板固件版本的命名听着有点中二但在测试记录里确实好认。这块板子目标是驱动高速PMSM走无感FOC方案目前阶段最烧心的事有两件——把FDCAN调试链路彻底跑稳把栅极驱动这一级别的波形和时序全部验干净。这篇文章本来只是自己测试时的流水账整理了一下发现里面不少内容对刚入坑电机驱动的人应该有用。尤其是几个热搜词一直有人问FOC电流采集为什么要做在下桥、FOC电调能不能开同步整流、无感FOC启动怎么切闭环、三环频率怎么配。这些恰好都是这次测试里绕不开的点。我把实测过程中踩过的坑、验证过的参数以及判断依据全部展开写清楚给正在做类似项目的朋友一个可以直接参考的版本。1. 项目定盘先搞清楚这块板子到底要干什么1.1 从项目代号看设计定位升魂浩荡是我给这个FOC驱动板固件起的代号项目背景很简单做一个48V到72V输入、额定电流30A左右的电机驱动器目标负载是高速无感PMSM日常运行转速会在20000rpm以上。这个定位直接决定了板子在硬件架构上的几个选择——开关频率不能太低、死区不能太大、母线电压检测和电流采样必须足够快、与上位机通信的链路必须低延迟且抗干扰。很多人一开始会把注意力全部放在FOC算法上想着怎么把电流环调高、把观测器写稳但实际测试下来真正限制性能上限的往往是硬件链路里的两个环节——栅极驱动和通信总线。栅极驱动决定桥臂能不能按时按质完成开关动作FDCAN决定调试数据能不能实时、完整地被拽出来看。这次标题里写测试fdcan和栅极驱动不是随便挑两个模块验一下而是把整块板子能不能继续往下推进的关键路径先打通。1.2 FOC驱动板的整体硬件架构这块板子的硬件链路可以分成几个层级主控MCU负责FOC算法、FDCAN通信和故障处理栅极驱动芯片负责把MCU输出的PWM信号转换成足够强的门极驱动电压三相全桥由6颗MOS管组成功率级电流采样采用三电阻下桥采样方案信号经过运放放大后再回到MCU的ADC。主控用的是带FDCAN外设的STM32H7系列选择这颗芯片的主要原因就是它集成了两个FDCAN控制器可以直接用CAN-FD做调试通信不需要外挂CAN收发器芯片之外的额外桥接。PWM输出走高级定时器的互补通道带硬件死区插入这样MCU侧只要保证占空比正确死区时间由硬件保证能在最大程度上避免上下管直通的风险。1.3 先测通信和驱动的理由在FOC算法进场之前必须先回答两个问题FDCAN链路能不能稳定工作在目标速率错误率是否为零数据包在电机会产生强烈电磁干扰的情况下会不会丢帧栅极驱动电路能不能在额定母线电压和最大负载电流下输出干净、无振铃、无直通的开关波形这两件事有一个共同特点——它们都是底层基础。基础不稳后面FOC算法调得再好也没有意义。比如栅极驱动如果存在过大的关断振铃干扰到了电流采样信号那电流环的反惯数据本身就有问题PI参数怎么调都是白费力气。FDCAN同理如果通信延迟不稳定上位机读回来的速度曲线就是一堆毛刺根本无法判断真实控制效果。所以整个测试策略很明确先把FDCAN和栅极驱动两个模块验到长测不报错的程度再开始跑电机闭环。下面分别详细讲。2. 栅极驱动最容易炸管子也最容易藏问题的一环2.1 驱动方案选型集成预驱还是独立栅极驱动芯片栅极驱动这一级行业里通常有两种做法一种是直接用集成三路半桥预驱的芯片比如DRV8353这类内部集成了三个半桥驱动、自举电路和部分保护逻辑另一种是用独立的半桥栅极驱动芯片比如IRS2101这类一颗管一个半桥三相共三颗电路设计相对分散但灵活性更高。我手上这块板子用的是独立半桥栅极驱动方案好处是每一相的驱动回路可以独立布局功率地和控制地分离更彻底而且单个芯片失效时更换成本低。但坏处也很明显——三颗芯片的布局必须对称否则三相的寄生参数不一致会导致三相开关波形不对称进而产生额外的三相电流谐波。实测中发现如果A相的栅极走线比B相长了5mm左右在20kHz开关频率下关断尖峰就会有接近20V的差异。选型时要重点关注的参数包括峰值驱动电流、传输延迟、共模瞬变抑制能力和死区时间的匹配。尤其对于没有硬件死区插入的MCU或者使用外部PWM隔离方案的场景栅极驱动芯片本身的传播延迟指标一定要看准。数据手册上的传播延迟通常是一个典型值但实际是有偏差范围的两相之间的传播延迟偏差如果过大会直接吃掉设定死区极端情况下就是炸管。2.2 死区时间、自举电容和栅极电阻的工程取值死区时间的设置是栅极驱动调试里第一个要算清楚的参数。死区太小上下管存在直通风险死区太大会增加电流谐波、降低电压利用率同时电机噪音会明显变大高速运行效率也会掉。我这边先按一个偏保守的初始值来设然后根据实测波形逐步往下压。具体过程是先看驱动芯片的传播延迟偏差和功率MOS管的关断延迟时间两个加起来留出至少20%以上的余量作为初始死区。手头MOS管的典型关断延迟是40ns栅极驱动芯片的传播延迟偏差在正负50ns左右所以初始死区设在400ns实测波形后逐步压到了250ns此时逆变器效率约提升了0.3个百分点但关断尖峰明显变大于是最终停在300ns。自举电容的选择也容易被新手忽略。高压侧驱动需要自举电容来提供栅极电荷容值太小会导致栅极电压在高占空比工况下跌落容值太大则充电时间过长。上桥续流建立的时间窗口决定了自举电容在死区期间能充多少电常规取值在0.22uF到1uF之间。我在一块板子上测试了100nF和1uF两种取值100nF在占空比超过85%时明显出现Vgs偏低的迹象而1uF在满载时压降小于0.3V最终选的1uFX7R材质耐压50V紧贴芯片的BOOT引脚放置。栅极电阻的选择是另一个容易踩雷的地方。栅极电阻主要作用是抑制开关振铃和限制dV/dt但电阻太大会让开关速度变慢、开关损耗增大太小则振铃明显甚至会造成桥臂直通。这里推荐把开通电阻和关断电阻分开。我用10欧姆开通、4.7欧姆关断的组合反向并联一个快恢复二极管来实现。开通慢一点可以限制上桥开通时对自举电容的冲击和抑制dv/dt噪声关断快一点则可以减少关断损耗和Miller平台持续时间实测这个组合在30A负载下关断尖峰控制在母线电压的15%以内波形比较干净。2.3 下桥电流采样为什么是主流方案严格来说这次调试的电流采样设计从一开始就定了下桥三电阻采样方案。为什么电流采样放在下桥而不做上桥采样或直接用电机相线上的电流传感器核心原因有几个正好一起说清楚。FOC控制需要的是三相电流的实时值最理想的方式当然是每一相都直接测量但从成本和可靠性角度考虑下桥三电阻是性价比最高的方案。下桥电阻采样利用的是MOS管下桥开通时电流流过采样电阻产生压降的原理。下桥采样最大的便利是采样参考点是功率地低端运放就能直接处理信号不需要昂贵的差分隔离放大器。这是它取代上桥采样成为主流的最直接原因。上桥采样之所以麻烦是因为采样电阻上的共模电压会随着母线电压高频跳变常常是几十伏的跳变叠加在微小的采样信号上对运放的共模抑制比要求极高。即使采用差分运放PCB布局稍有不当噪声就会淹没有效信号。而下桥采样在桥臂下管导通时采样电阻两端压差只有几十到几百毫伏处理起来容易得多。但下桥采样有一个先天性的时序约束——必须在PWM下桥导通期间完成采样。对于中心对齐的PWM模式电流纹波在PWM周期的中心点是最小的所以最佳采样点就在下桥导通的PWM中心时刻。这就要求ADC采样窗口必须落在下桥可靠导通区间内不能太靠近PWM切换沿否则采到的是毛刺而不是电流。构建采样电路时运放带宽至少要做到5MHz以上驱动能力也够不能让运放输出在ADC采样期间发生较大压降。实际板上用的运放压摆率在10V/us以上采样窗口设定在PWM周期的正中心窗口宽度1us左右。这样可以保证在20kHz的PWM频率下每一次PWM周期都能同步采样到三路相电流满足FOC电流环的同步采样需求。2.4 栅极波形实测盯波形就是在盯命栅极驱动调试最核心的手段就是示波器测量。实际上板后需要盯的波形主要是四个上下管的Vgs波形、Vds波形、自举电容上的电压波形以及栅极驱动芯片输出端的波形。第一次上电时不要直接跑闭环先用一个很低的直流母线电压比如12V或者24V做开环测试给固定的占空比逐个观测每个桥臂的波形。重点检查以下几个方面死区时间是否真的如配置值一样出现在互补PWM之间上下管Vgs是否存在同时为高的时刻Vgs波形在开通和关断沿是否存在明显的振铃振铃频率是否落在功率管的开关频率附近Vds电压尖峰距离MOS管最大耐压的余量是否足够。我遇到过一个典型问题——Vgs波形在关断时出现了一个很深的负压尖峰接近-8V。后来排查发现是栅极驱动芯片的功率地和控制地在PCB布局上有一个细长的回路寄生电感过大导致的。把地线回路加粗、缩短之后这个负压尖峰降到了-3V以内。这种问题在仿真里很难发现只能靠实测波形一步步逼出来。所以我的习惯是每次改板之后第一件事不是跑算法而是把这几个关键波形全部重测一遍确认没有异常再往下走。3. FDCAN调试链路都比UART强在哪3.1 调试链条里FDCAN解决的实际问题电机控制调试的时候最痛苦的事情是数据回传跟不上。以前用UART的时候115200波特率一帧速度数据加一帧电流数据就得花几百微秒等上位机画出示波曲线看到的都是严重滞后的历史数据。开关频率20kHz电流环是20kHzUART根本不可能稳定地把所有调试数据都拉回来看。FDCAN就是来解决这个问题的。CAN-FD的数据段最高可以跑到5Mbps以上远高于标准CAN的1Mbps也远超UART的实际吞吐能力。理论上一毫秒发一帧8字节的数据数据段5Mbps的时候帧本身传输时间只要几十微秒留给MCU处理的时间非常充裕。这意味着可以做到真正意义上的实时监控——每1ms刷新一次电流、速度、母线电压、温度、状态标志上位机看到的就是一条几乎没有延迟的曲线。另外FDCAN在工业环境中抗干扰能力很强差分信号对共模噪声有天然抑制能力比单端的UART可靠得多。这次测试是在电机满载运行的情况下同时跑FDCAN实测通信误码率为零这是UART很难做到的。3.2 FDCAN参数配置与终端电阻FDCAN配置里最基础但最容易出错的是波特率。CAN-FD有一个仲裁段和一个数据段仲裁段是标准CAN兼容的部分负责总线仲裁数据段是FD新增的快速段速度可以单独设置。我这边典型配置是仲裁段1Mbps数据段5Mbps采样点75%。采样点是一个很值得说的参数。FOC控制里电机转动会产生强烈的电磁干扰如果采样点落在信号边沿附近很容易采到一位错误的电平导致CRC错误。对于1Mbps的仲裁段采样点75%意味着在比特时间的3/4处采样这是权衡了传输延迟和抗干扰之后的常见取值。实际使用中我还测试过60%和80%两个值80%在长线缆作动的时候会出现偶发错误帧60%能正常跑但总线负载较高时延迟略大最终还是稳定在75%。终端电阻也需要特别注意CAN总线两端需要各接一个120欧姆终端电阻。我之前犯过一个错误在测试桌上用短跳线以及短网络连接两个节点时把两个120欧姆终端电阻都接上了导致总线电阻只有60欧姆波形明显畸变帧错误率暴涨。解决办法很简单直接拆掉一端终端电阻。但是当总线线缆比较长时两端都必须接终端电阻否则会有反射。所以要根据实际的线缆长度来决定。3.3 FDCAN报文协议设计实例参数配好后还要设计好报文协议。这次定义了几类报文周期状态帧、故障帧、在线调参帧和离线数据记录帧。周期状态帧1ms周期发送8字节数据包含当前速度、母线电压、低速时的Id/Iq电流、温度、状态字。故障帧当检测到过流、过压、欠压、栅极驱动故障时立即发送一帧带故障码的报文。这帧的优先级设成最高确保它在总线竞争中能最快拿到发送权。在线调参帧上位机下发的PID参数和占空比、启动策略等参数不需要重新编译固件就能修改是FOC调参过程中的刚需功能。离线数据记录帧在电机运动过程中把关键数据打包成多帧发送方便后期回放分析。报文ID的规划也很关键。CAN总线是CSMA/CA的机制ID越小优先级越高。故障帧用最小的ID周期状态帧次之调参帧再次载波数据记录帧优先级最低。这样一旦发生故障故障帧能第一时间抢占总线避免被其他周期性数据拖住能显著提高故障响应的实时性。3.4 FDCAN实测错误帧和电磁干扰实测过程中我在50%负载和满载两种工况下分别跑了FDCAN长测。满载时候发现一个问题——当电机运行在某个特定转速时上位机偶尔会收到错误帧。把示波器探头挂在CAN_H和CAN_L之间看到波形上出现了明显的振铃振铃幅值超过2V而且与PWM切换沿对齐。这个问题的根源是功率级的开关噪声通过地回路耦合到了CAN收发器。处理办法有三个方向一是把CAN收发器的电源加一个LC滤波避免母线噪声直接灌入收发器电源二是把CAN总线远离功率级的走线区域减少空间辐射耦合三是把CAN收发器的参考地做成单独的分割地再通过磁珠或者单点接到功率地。三管齐下之后错误帧率降到了零。在2000rpm到20000rpm的全程扫描测试中连续运行30分钟没有收到任何错误帧。实际项目里电磁环境和实验室差异会很大审核一下FDCAN的共模抗干扰能力、错误处理机制自动重传和bus-off恢复在正式产品里很有必要。4. FOC控制调试从三环频率到无感启动4.1 电流环、速度环、位置环的频率怎么搭配FDCAN和栅极驱动验完终于可以跑FOC算法本体。很多人直接上手就调PI参数但先要把三环的频率关系理顺。三环频率的搭配原则很简单——内环必须比外环快5到10倍以上否则外环更新一次内环还没来得及收敛整个系统就会发散或者震荡。我实际用的配置如下电流环20kH z速度环2kH z位置环1kH z。电流环的频率和PWM频率对齐用的是中心对齐模式在每个PWM周期的谷点和峰点各采样一次电流做一次电流环运算这样的好处是响应快、纹波小。速度环2kH z是电流环的十分之一位置环1kH z是速度环的一半级联关系从频率上去看比较合理。电流环带宽的整定一般是关键。经验上电流环带宽设置为PWM频率的十分之一到二十分之一是比较安全的范围。20kHz的PWM频率电流环带宽可以做到2kHz左右再高就会受到采样延迟和控制延迟的限制出现相位裕度不足的问题。实测中把电流环带宽从1kHz拉到2kHz速度波动明显改善但超过2.5kHz后负载突变时机容易出振铃最后稳定在2kHz。4.2 同步整流开还是不开关于FOC电调是否会开同步整流这个问题确实是热搜词里出现频率比较高的。所谓同步整流本质上是让续流阶段由MOSFET的沟道导通来代替体二极管续流。体二极管的正向压降大、反向恢复慢导通损耗明显MOSFET沟道导通时压降等于导通阻值乘以电流在电流较大时损耗远小于体二极管。但是同步整流在FOC电调上要谨慎开启主要原因是无感FOC方案里判断哪一相需要续流的时机很关键。如果换相时序判断错了在应该关断的MOSFET上开启了同步整流轻则电流畸变重则直接短路炸管。如果控制器不知道转子的准确位置同步整流就是拿命在赌。我这边测试中在转速超过5000rpm、观测器收敛稳定之后才把同步整流使能打开。开启后满载效率提升了约1到2个百分点发热明显下降。但在低转速启动阶段反电动势太小、观测器误差较大我选择强制关断同步整流让管子回到普通续流模式。建议的做法是做成一个可配置的选项低速阶段关闭进入高速稳定状态后根据观测器置信度自动开启。4.3 无感FOC的启动与闭环切换无感FOC最难的环节永远是启动。高速PMSM在零速和极低速时反电动势为零或者很小全靠反电动势做位置估计的观测器根本不起作用。所以业界习惯用三段式启动——转子预定位、开环强拖、切换闭环。预定位阶段给某一相通电让转子转到已知位置这个位置不需要绝对精确但能保证后面启动力矩方向是对的。强拖阶段位置电角度按一个很小的递增斜率累加定子磁场拖着转子慢慢转起来转速从零开始逐步增加。等到反电动势足够大、观测器能准确跟踪转子位置时再把给定位置来源从程序累加切换为观测器估算位置同时把电流环从开环指令值改成闭环调节值。切换是整个启动过程里最容易翻车的点。如果开环角度和观测器角度存在较大误差切换瞬间会出现一个角度跳变表现为明显的转矩脉动甚至过流。我的经验是在切换前实时对比开环累加角度和观测器角度当两者误差连续保持小于5度电角度、同时转速稳定在预设值附近时再执行切换。这个条件要卡得足够严否则切换成功率会非常低。观测器方面尝鲜过滑模观测器SMO也试用过龙伯格观测器和简化版PLL位置跟踪器。SMO对参数变化适应性比较强在高速段表现够用低速段则依赖高频注入或者开环强拖过渡。目前项目在量产阶段选用的是带自适应增益的SMO因为它的实现相对简单鲁棒性也够用。4.4 常见问题与排查技巧速查调试FOC控制的过程中我整理了一张经常遇到的故障排查表放在这里可以直接参考故障现象可能原因排查方法电流环发散电流瞬间打顶电流采样极性反了或采样窗口不对确认三电阻采样和PWM时刻的对应关系检查运放输出极性电机嗡嗡响但转不起来强拖角度步进太快卡死或初始位置错误加大预定位时间减小强拖角度步进率高速加减速时出现角度失步观测器带宽不足或速度环带宽过低适当提高速度环带宽检查观测器增益是否饱和减速时母线电压飙升再生制动能量没有回路吸收增加泄放电阻/泄放控制逻辑或限制减速斜率FDCAN偶发错误帧功率级开关噪声耦合到收发器给收发器电源加LC滤波改善CAN布局检查地平面分割栅极Vgs关断出现负压尖峰驱动回路寄生电感过大缩短栅极驱动回路增大关断电阻改进地回路三相电流静态不平衡三路采样电路增益和偏移不一致做一次离线校准保存每相的增益和偏移系数其中电流采样极性问题最容易踩而且在代码和硬件里都不好定位。如果接上电机后一启动就过流保护优先把PI参数调成纯比例且给一个小增益看占空比方向和电流方向是否一致不一致就说明采样极性反了。5. 最后再分享几个实操经验我整理这份测试记录时最大的体会是硬件和通信的验证优先级一定要排在算法前面。这次如果先把FOC算法调得再好再回头发现栅极驱动波形有振铃、FDCAN有错误帧那前面调参数的时间基本都要推倒重来成本太高。下面几个建议是我长期以来测试过程中沉淀下来的测试前先画好一张验证流程图把每个模块的通过标准定死。比如栅极驱动波形要满足什么条件才算通过、FDCAN要跑多久错误帧为零才算通过尽量不要差不多就行后续排查问题的时候这些标准帮你快速定位是哪一环节挂掉了。任何修改后都要回归测试。改了一处栅极电阻就必须重新看六个管子的波形改了一条FDCAN报文就必须重新跑一遍长测。忽视回归测试的代价往往不是当场暴露而是在后面某一次完整调试中突然冒出来那时候定位成本高很多。做好参数记录。在项目推进过程中参数改动会非常频繁没有记录的话换一种方案之后想回退到一个稳定候选点都很难。我现在会习惯把所有参数改动做成一张带时间戳的表格。这里不推荐大家用纸笔记录缺少别名和分类管理建议直接写在工程配置区里统一管理同样需要严格审核。多留调试接口。设计板子的时候就要考虑留出SPI或者UART的调试口给示波器、逻辑分析仪以及留出一路可以作为FDCAN数据回传的命令通道。等到真正遇到问题的时候多一个调试点就可能省一个晚上的排查时间。FOC这条路上没有太多捷径波形测到位、帧发得稳、状态切得清后面的路才走得顺。希望这份测试记录能给正在做类似项目的你提供一个参考。
返回列表