ARTICLE DETAIL

资讯详情

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

FOC电机控制核心要点:电流采样、无感启动、三环与弱磁工程实践

FOC电机控制核心要点:电流采样、无感启动、三环与弱磁工程实践 做电机控制这几年我越来越觉得FOC不是一个靠看公式就能吃透的东西。很多朋友一搜“电机控制 FOC”第一反应就是找开源工程、抄电流环参数结果连电流采样为什么一定要放下桥、Clarke变换为什么只采两相电流都讲不清楚最后板子一通电不是抖就是啸叫。这篇文章我把做项目时被问得最多、也最容易踩坑的点从原理到实操串一遍。不是教科书式的逐条推导而是按我实际调电机时的思路来讲先搞懂FOC在干什么再处理电流采样然后回答无感启动、三环配合、弱磁、CAN多机协同这些工程问题。适合正在用STM32做FOC、或者准备用手头3508电机、达妙关节模组做项目的朋友。1. FOC到底在控制什么从换相思维到矢量思维的转变1.1 为什么BLDC和PMSM都离不开FOC先说一个很多人容易绕进去的点FOC并不是“无刷电机专用算法”。有刷电机用PWM调压就能控制转速因为它内部电刷天然把电流换向到合适位置你只需要给电枢一个电压转子磁场和定子磁场的关系由机械结构帮你保证。但BLDC和PMSM没有电刷定子绕组要通过电子换相主动产生磁场这时就必须回答一个问题电子换相的依据是什么传统BLDC的做法是“方波换相”靠霍尔传感器或者反电动势过零检测每隔60度电角度切换一次导通组合定子磁场是跳变的。便宜、简单但换相时刻转矩有波动高速时会明显听到“哒哒哒”的声音位置精度和转矩控制精度都不够。FOC的思路完全不同它不再把电机当成三个绕组分时导通而是把三相电流合成一个幅值、方向都连续可控的定子电流矢量再让这个矢量时刻和转子磁场保持特定关系。这样转矩可以做到非常平稳低速也能输出稳定力矩这也是机器人关节、伺服、高端电动工具都倾向用FOC的原因。用一句大白话说方波换相是“每隔一段就换一档”FOC是“每一瞬间都在无级调整”。它把三相电机的电流控制问题转换成了一个二维矢量的控制问题这个转换过程就是我们常说的坐标变换。1.2 iq和id一个电流怎么变成两个“角色”FOC算法里一定会看到id和iq这两个量。很多新手不明白为什么一个三相电机最终要控制的是两个直流分量这里的关键是Park变换。电机的三相电流Ia、Ib、Ic经过Clarke变换变成静止两相坐标系的Iα和Iβ再经过Park变换以转子角度为基准旋转到dq坐标系。旋转之后id是转子磁极方向上的电流分量iq是和转子磁极方向垂直的电流分量。iq就是真正产生转矩的“主力”。为什么永磁同步电机的转矩可以近似写成Te1.5pλ*Iq励磁磁链λ是常数极对数p是常数所以iq越大转矩越大。更形象地理解把转子的永磁体看成一个棒状磁铁定子电流合成出的磁场如果恰好和这个磁铁垂直那就是最“省磁”也最“出力”的方向这个垂直分量就是iq。实际控制中我们通过SVPWM把iq对应的电流指令反变换回三相电流最终在上桥臂和下桥臂的PWM占空比上体现出来。所以你会看到iq并不是凭空冒出来的它等于是我们给三相电流下了一个“相位和幅值”的指令让电流在各相绕组里按正弦规律流动从而合成一个垂直于转子的旋转磁场。id则是励磁分量。对表贴式永磁电机id通常控到0因为电机本身有永磁励磁不需要再额外增加id对内置式永磁电机或者需要弱磁高速运行的场合id要人为给负值用来削弱一部分气隙磁场。1.3 坐标变换不是数学游戏有朋友问过我做FOC是不是必须把Clarke、Park公式背下来我的建议是公式要能推导但更重要的是知道每一步做了什么以及误差从哪里来。Clarke变换把三相电流变成两相静止电流核心依据是三相对称负载的电流之和为零。Park变换则把静止坐标旋转到和转子同步旋转的坐标系。旋转角用的是转子电角度如果转子角度不准确id和iq就会互相串扰表现出来的问题就是输出力矩不够、电流波形畸变。这个“电角度”对旋转电机来说通常来自编码器或者无感观测器对直线电机控制它的逻辑是一样的只是把旋转角度换成了动子位置对应的电角度。直线电机的“极距”代替了旋转电机的极对数推力公式里对应的是推力常数不是转矩常数。所以你会看到很多做直线电机控制的朋友也在聊FOC因为它本质就是一个“励磁磁场和运动方向垂直”的控制问题。2. 电流采样为什么放在下桥采样窗口和PWM开关逻辑的工程约束2.1 采样电阻的位置决定了你能采到什么“FOC电流采集为什么要设置在下桥”这个问题搜索量一直很高。原因很现实电流采样电阻放的位置不同采集难度和成本会差一个量级。如果把采样电阻放在上桥臂也就是直流母线和上管源极之间需要对VS点进行高压侧差分放大一般要用隔离放大器或高共模抑制比差分放大器成本高信号的开关噪声也大。放在下桥就不一样了。下桥采样电阻通常串在低端MOSFET源极和功率地之间采样电阻两端对地电压很低可以使用低成本运放进行放大共模问题小也容易和单片机的ADC共地。更关键的是PWM开关逻辑。FOC使用互补PWM输出每个PWM周期里高边和低边MOSFET互补导通。当某一相下桥导通时该相电流会流经采样电阻ADC在这个时间窗口里才能采到真实的相电流。如果把采样电阻放上桥只有在对应上桥导通的窗口才能采到电流那这个窗口在高占空比时太短非常不好把握。2.2 三电阻、双电阻、单电阻怎么选电流采样方案直接影响硬件成本和算法复杂度。常见的三种三电阻采样每一相下桥都串一个采样电阻三个通道同时或分时采样。每个PWM周期里能获取完整的三相电流算法最简单抗扰动能力最强但成本、PCB面积、运放路数都要翻倍。双电阻采样只采两相电流第三相用基尔霍夫电流定律算出来也就是IaIbIc0。成本适中很多FOC开发板都是这个方案。单电阻采样在直流母线上串一个采样电阻通过PWM周期内不同开关状态的脉冲宽度来重构三相电流。成本最低但低速和高压降区经常出现无法采样的“盲区”需要做复杂的三段式采样或者移相PWM。从工程角度看初学者做项目首选三电阻或双电阻。三电阻虽然成本高但调试省心。我见过太多人在单电阻重构电流上折腾了两周换了三电阻板子半天就出波形了。这属于铁一样的教训。2.3 下桥采样实际调试中的“坑”确定了电阻放下桥不代表就万事大吉。采样窗口这一关很多人卡住就是因为没搞清PWM时序。FOC的SVPWM通常是中心对齐模式切换时刻发生在PWM计数器周期中央。三电阻采样时一般希望在当前时刻三个下桥都导通这样三相电流都能通过采样电阻形成回路。但实际PWM占空比接近0或者接近100%时必然有某一相下桥导通时间太短采样电阻上没有稳定电流ADC采到的就是噪声。解决办法有几种限制PWM占空比范围保证下桥导通时间至少大于1~2us。在占空比极端时用双电阻采样逻辑只用两个能采到的电流第三相算出来。用移相PWM把三相的开关时刻错开避免同时进入采样盲区。另外采样电阻的布局和滤波也不能忽视。我遇到过很诡异的问题电流波形在低频时正常高频时突然出现毛刺后来发现是采样电阻的PCB走线跨过了功率地和信号地之间的缝隙地平面被割裂了。采样电阻的地必须单独走一小段“星形接地”再连到功率地汇流点运放放大后的信号走线要尽量短靠近单片机ADC引脚。RC滤波时间常数不要拍脑袋选要和PWM频率匹配一般放在PWM周期的1/10到1/20之间太大会延迟电流信号太小又滤不掉开关噪声。还有一个容易忽略的点如果使用T型采样或内部比较器ADC触发的时刻必须落在下桥导通稳定之后。很多人把ADC触发点设置在PWM周期中央但没考虑死区时间导致采到的电流刚好处于开关振铃区间。实际调试时最好用示波器同时抓下桥的栅极驱动波形和采样电阻两端波形把ADC触发点尽量调到电压波形完全稳定之后再往后一点点这点余量能让电流环的收敛性明显变好。3. Clarke变换为什么只需要两相电流三相平衡约束和故障检测的隐藏逻辑3.1 第三相是“算出来”的不是“省掉”的这个问题来自很多人的直觉既然是三相电机为什么采样只采两相Clarke变换公式里也只出现了两相电流。原因是三相星形连接且没有中性线引出的电机三相电流之和一定为零。注意这里说的是理想基尔霍夫条件三相绕组共用同一个中性点中性点没有外部电流流出。所以只要你能采到任意两相电流第三相电流就等于负的这两相之和。工程上这样做绝不是为了省一个ADC通道那么简单。少采一路电流意味着采样电阻、运放、ADC通道都少一套成本和失效率都会降低。在双电阻方案里常见做法是采A相和B相C相通过Ic -Ia-Ib计算出来。如果你问“具体哪两相是否有要求”答案是任意两相都行但A相和B相最常用因为电角度为0时A相电流对应最大相电流方向信号幅度最有利。实际上你采B和C、或者A和C也一样只要把Clarke变换矩阵里对应的系数写对就行。3.2 Clarke变换的两种形式别搞混我在不同项目里见过两套Clarke系数初学者特别容易抄错。一套是等幅值变换Iα Ia Iβ (Ia 2*Ib) / √3另一套是等功率变换Iα Ia * √(2/3) Iβ (Ia 2*Ib) / √2两套变换只差一个系数但后面Park变换和SVPWM反变换的系数要配套。如果Clarke用等幅值Park也得用等幅值逆Park和SVPWM输出的占空比才一致。实际主流FOC代码大多用等幅值变换因为后续计算Id/Iq和转矩系数时比较直观。但这个不是死规矩你用等功率变换也能实现FOC只是所有系数都要跟着改。调试时最怕的就是混用比如Clarke用等幅值弱磁计算里却用了等功率的转矩公式结果力矩标定全偏。3.3 只采两相电流真的够安全吗只采两相是够用的但也带来一个隐患如果采样的那一相电流传感器发生偏移或者损坏算法无法通过三相之和来识别最终可能出现过流烧MOSFET。所以很多高可靠性的驱动方案会保留三电阻采样或者至少在下桥三个采样电阻都接上但只把其中两路作为Clarke输入第三路用来做故障诊断。比如对比实测的Ic和计算的Ic偏差超过阈值就立刻关断PWM。这个逻辑成本不高但对调试、保护非常有价值。另外还要注意电流采样零点漂移。运放总会有温漂ADC也总会有偏移。启动时电机静止理论上三相电流都是零这时候采样到的值就是偏置。每次上电后做一次偏置校准把这些偏置减掉再进Clarke变换。否则你会发现电流环静止时输出就不为0电机还没转就开始发热这就是典型偏置错误。4. 转子初始位置与无感FOC启动搜索频率最高的两个老大难4.1 为什么FOC必须先知道转子在哪有感FOC有编码器或霍尔启动时直接读角度就行。无感FOC没有位置传感器但FOC的Park变换必须要转子电角度角度错1度Id/Iq就混叠一点错到几千伏不会但力矩会显著下降到一定偏差就会失步。无感FOC低速启动时反电动势信号弱很多观测器算不出来位置。所以工程上无感FOC通常不是“全速度范围都无感”而是低速阶段用开环强拖、中高速才切入闭环观测器。这个切换过程如果处理不好电机就会猛烈抖动甚至反转。4.2 初始位置检测高频注入、脉冲矢量、预定位怎么取舍如果应用允许电机先转一个很小的角度预定位对齐是最简单的办法。随便把转子拖到一个已知电角度然后从这个角度开始闭环。缺点是如果负载摩擦力不够大转子可能没完全对齐或者对齐过程中负载会产生位移这在关节机器人里不能接受。不允许转子动的场景就要考虑高频注入法。PMSM转子磁路通常有凸极性d轴和q轴电感不同往定子注入高频电压信号通过感应电流的幅值相位就能反推转子位置。这个方法对表贴式电机效果有限因为交直轴电感差很小对内置式PMSM效果很好。但实现复杂度高要处理高频提取和滤波器延迟。还有工程上常用的脉冲矢量法按不同方向短时间施加固定电压矢量比较产生的电流峰值电流上升最快的方向通常就是转子N极所在方向附近。因为它利用了磁路饱和效应对表贴和内置式都适用但需要控制器有高速ADC和一定算法经验。我的建议是如果你用的是带编码器的关节电机比如3508配磁编码器老老实实用编码器零点对齐别挑战无感启动。如果做的是风机、水泵、电钻这类允许短暂反转或不需要带载启动的场合优先用预定位开环强拖简单可靠。4.3 无感FOC堵转检测怎么做才算“稳”“堵转检测”是很多无感FOC项目的拦路虎尤其像筋膜枪、割草机、抽水泵这类可能被卡住的设备。堵转的物理特征很明显指令速度大于0真实速度接近0电流迅速顶到限幅值。但真要去判断没那么简单。首先无感FOC的速度反馈来自观测器估算速度。堵转时反电动势几乎为0观测器估算速度可能乱飘所以不能只看估算速度。更稳的做法是多个条件同时满足速度指令持续大于设定阈值比如额定速度的5%。估算速度持续低于设定阈值维持时间比如50~200ms。电流环输出持续顶在限幅值。三个条件用“与”逻辑而不是只靠电流。因为电机正常重载启动时电流也会顶限幅但速度会缓慢上升只有堵转才会速度不上来。同时可以增加堵转解除判断速度回升到正常范围后再退出保护避免电机一恢复就被再次误杀。还有一个细节堵转检测的时间窗口要可配置。对高速小惯量电机检测时间短一点更安全对带大减速比关节的电机堵转时齿轮箱会吸收冲击检测时间太长可能损坏减速器。一般我习惯把堵转判定做成一个迟滞比较器进入堵转状态和退出堵转状态用不同阈值防止在临界点反复切换。4.4 开源代码和专用芯片怎么参考才不吃亏很多朋友搜“VESC FOC源代码”“朴人FOC”“SimpleFOC”总想直接抄。我的看法是开源工程适合让你理解整体框架不适合直接搬参数。VESC的代码工程化程度很高它处理了非常多的边界条件比如采样重构、死区补偿、各种保护逻辑但这些边界条件的代码耦合在具体硬件上直接挪到自己的板子上很可能跑不起来。专用无感FOC芯片比如FU6881这类内部集成了运放、比较器和FOC算法适合量产产品做方案开发周期短。但缺点是可定制性差很难做复杂的转矩控制或协同控制。我比较推荐的学习路线是先用开源工程把电流环跑明白再设计自己的电流采样和SVPWM最后再针对具体应用写无感启动和保护逻辑。这样出了问题你知道该看哪个模块而不是对着整个工程发懵。5. 三环控制和频率配置电流环带宽、速度环、位置环怎么搭配才算合理5.1 三环各自的物理意义FOC控制框架里最常见的结构是位置环套速度环速度环套电流环。电流环在最里面频率最高速度环在外面频率低一些位置环最外面频率最低。电流环控制的是Id和Iq实际值跟随指令值。它要求响应快因为电流变化直接产生转矩变化。速度环的输入是目标速度和反馈速度输出是Iq指令它要让电机在负载变化时保持速度稳定。位置环则根据目标位置和当前位置计算出目标速度给速度环。这个嵌套结构的核心逻辑是外层环路的输出是内层环路的指令内层环路必须足够快外层才有调节余地。如果电流环带宽太低速度环一增加Iq指令电流还没跟上速度环就会疯狂加大输出最终导致系统振荡。5.2 带宽分配到底怎么设带宽分配这事很多人喜欢背公式我提供一个取值范围和换算方法实际调的时候要根据机械刚性和负载特性调整。环路常见带宽范围与内环比例电流环1kHz~2kHz基准速度环100Hz~500Hz电流环的1/5~1/10位置环20Hz~50Hz速度环的1/5~1/10如果PWM频率是20kHz电流环一般可以跑到2kHz左右PWM频率只有8kHz的话电流环可能只能到800Hz~1kHz。速度环和位置环不需要和电流环同频运行。我在工程里经常用200kHz不错了经常用20kHz PWM电流环中断频率10kHz速度环1kHz位置环500Hz或者更低。具体做法是电流环在每个PWM周期都执行速度环用计数器做分频每10个电流环周期执行一次位置环再分频。这样CPU负载小代码逻辑也更清晰。5.3 电流环和速度环的参数整定经验电流环一般用PI控制器。P项决定响应速度I项消除稳态误差。整定电流环时可以先给一个较小的P然后逐渐增大直到Iq实际值能快速跟踪指令但不振荡。I项不要给太大否则电流波形会出现低频振荡听上去就是电机高频“嗡嗡”里夹杂“突突”声。速度环的PI参数和负载惯量关系很大。惯量越大P项越不能给太高否则电机一加速就过冲。工程上有一套“惯量比”概念很多伺服驱动器里都有惯量辨识功能其实就是通过给速度指令看电流响应反推负载惯量然后按惯量比设置速度环增益。手头资源有限时可以做简单的频率响应测试给速度环一个小幅方波信号或正弦扫频信号观察速度反馈的幅值和相位找到相位裕度合适的增益。位置环则少用I项。位置环的P相当于弹簧刚度P太大位置会过冲且伴随机械振动P太小则位置跟踪滞后。更高级一点的位置控制会加前馈把目标速度直接加到速度环指令上位置环只做误差修正。这样在连续轨迹运动时位置滞后可以明显减小。5.4 FOC电调会开同步整流吗搜索里有个问题很实际FOC电调会开同步整流吗先说结论用互补PWM模式的标准FOC电调等于一直都在开同步整流。所谓同步整流就是电流续流时让MOSFET导通而不是靠体二极管导流。FOC的SVPWM在很多零矢量阶段就是通过下桥全开或上桥全开来实现续流的这时候对应相的低边MOSFET导通电流流过导通电阻而不流过体二极管损耗自然更低。但这里有个容易踩的坑如果你为了省功耗把互补PWM关了改成单边PWM让体二极管续流那么下桥采样电阻在续流阶段就采不到对应的相电流FOC就可能失效。所以FOC场景下我不建议单独去“关闭同步整流”。反过来如果某些驱动IC没有死区插入功能你开同步整流但死区不够上下桥直通瞬间就会炸管。这也是为什么栅极驱动芯片要选带死区控制的型号。6. 从算法到工程STM32G4、达妙CAN总线与多电机协同6.1 为什么我推荐用STM32G4跑FOCSTM32F407ZGT6控制3508电机是我见到最多的问题组合。F407主频168MHz有FPU跑基本FOC是可以的。但要注意3508电机本身不带驱动也不带FOC控制器你需要外接ESC或者自己搭三相驱动桥。用F407采集相电流、编码器再输出SVPWM到驱动板这条路完全走得通。但如果你是新做项目我会更推荐STM32G4系列。它有几个专为电机控制设计的特性内部集成运算放大器和比较器电流采样可以不接外部运放PCB尺寸小很多。CORDIC和FMAC硬件加速单元做SVPWM和三角函数计算更快。高级定时器带互补PWM输出和硬件死区插入FOC常见的PWM错误中断、刹车功能都更好用。我整理过一个粗略对比特性STM32F407ZGT6STM32G4主频168MHz170MHz浮点运算FPUFPU三角函数加速软件计算CORDIC硬件内部运放无集成PWM死区硬件部分定时器支持高级定时器标配典型成本中等中等偏高如果你是学习FOC原理F407完全够毕竟很多开源项目都是在这上面跑的。如果要做产品原型G4能少很多模拟前端电路调参时也更省心。6.2 达妙电机通过CAN总线实现精准关节控制的通信思路达妙这类关节模组之所以受欢迎是因为电机、减速器、编码器、驱动器都集成好了上位机只需要通过CAN总线给指令电机就能完成电流环、速度环、位置环的闭环不需要自己搭控制板和控制算法。以我用到的那批达妙电机为例控制流程大概是这样的设置CAN通信波特率和电机ID。根据控制模式选择发送的数据内容。MIT模式下通常一帧8字节数据里打包位置、速度、Kp、Kd或力矩值有些协议还会分两个CAN帧前4字节发位置和速度后4字节发Kp/Kd或力矩。周期性接收电机反馈帧一般是电机的当前位置、速度、力矩和温度。关节控制时上位机做逆运动学或轨迹规划把关节目标位置和速度算好通过CAN周期性下发。实际调试中最容易出问题的不是CAN怎么发而是“实时性”和“数据抖动”。CAN总线是广播式总线如果总线上有多个电机一帧发出去所有节点都能收到但只有匹配ID的节点才会响应。多电机协同控制时CAN ID一定要规划清楚不能出现两个电机同一ID。另外要保证主站的下发频率和电机内部的控制周期匹配通常1kHz左右比较好。下发频率太低关节轨迹会不平滑太高CAN总线负载率飙升报文延迟抖动反而变大。发送力矩或位置指令前一定要做“斜坡”处理。我见过有人直接把目标位置从0直接写成90度电机瞬间全力猛冲减速齿轮直接被冲击损坏。正确做法是让目标位置按梯形速度曲线或S曲线逐步增加最大速度和加速度都设好限幅这样关节才能平滑运动。6.3 CSP多电机协同位置控制怎么理解“CSP多电机协同位置控制”里的CSP在工业现场总线里通常指Cyclic Synchronous Position mode也就是周期同步位置模式。它比“简单发一个目标位置”高级的地方在于所有电机跟随同一个同步周期在同一时刻周期性地接收各自的目标位置因此整机轨迹是协调的。多轴关节的CANopen实现一般是这样主站作为NMT管理和SYNC生产者周期性发送SYNC报文各从站电机收到SYNC后同步锁存命令和反馈。位置控制时主站规划好每个关节的目标位置在每一个SYNC周期内通过PDO把目标位置、目标速度、目标力矩发给对应电机。电机内部在自己的位置环周期里执行插值而不是主站直接逐帧发多个普通CAN消息。这里有一个重要的经验不要把多电机的轨迹规划放在每个电机里各自做除非它们之间有物理耦合和联锁。标准做法是主站统一规划各电机只做执行。因为只要主站能保证每个周期下发的目标位置始终对应同一条轨迹电机之间的协调性就靠SYNC周期保证。如果每个电机自己规划上电时刻稍微不同步整个机械臂姿态就会偏。6.4 CAN总线排错顺序我说一下自己调CAN多电机时固定的排错顺序适合新手直接套用先查物理层CANH和CANL有没有接反终端电阻在总线上是不是只有两边各一个120欧姆。没有终端电阻信号反射严重距离一长就掉线。再查波特率总线所有节点必须一致。很多人用逻辑分析仪抓包看到花屏数据多半是波特率没对上。查ID冲突节点上线后逐台发指令看反馈ID和数据长度是否匹配。最后查协议解析大端小端、有符号数编码、浮点数是否加偏移量。这类问题最容易出在“看起来发的是1.0电机反馈却是0.0几”。7. 弱磁控制与高速区FOC不是到额定转速就结束7.1 反电动势是高速运行的“电压墙”FOC控制最爽的是低速大扭矩但到了高速区你会遇到一个物理限制反电动势越来越高逆变器输出电压向量的能力却受限于母线电压。永磁同步电机的电压方程里转速越高反电动势越大当反电动势接近母线电压电流环就没有足够电压裕量去控制电流了。这时如果仍然强制增加电流PWM会进入过调制电流波形严重畸变甚至失控。这就是高速场合要做弱磁的原因。7.2 弱磁实现思路id前馈和电压误差调节弱磁的核心是给id一个负的电流指令。负的id产生的定子磁场方向和永磁体方向相反等效于削弱了气隙磁场于是反电动势降低电机能转到更高转速。这个原理就像他励直流电机弱磁调速磁场弱了反电动势系数低了相同母线电压下转速上限就高了。工程实现有两种常见方法前馈查表法根据当前转速查表得到id指令。优点是响应快、代码简单缺点是表格标定工作量很大受温度影响。电压闭环法实时计算电流环输出电压的幅值当电压幅值接近电压极限时通过一个PI调节器自动把id往负方向拉让电压回到限幅之内。这种方法不需要大量标定在项目里更通用。实际代码里我会先用电压闭环弱磁把高速跑通再在性能不够时叠加查表前馈。电压闭环弱磁的PI参数不能太快否则高速区id负向冲击很猛会有退磁风险。7.3 弱磁调试的注意点弱磁区最怕两件事过流和退磁。调试时必须把电流极限按电机规格书标定好尤其是Iq限制和Id下限。大部分钕铁硼永磁体的退磁曲线是线性的但如果负向id过大工作点可能低于退磁拐点造成不可逆退磁电机力矩永久下降。建议调试弱磁时逐步提高目标转速观察id是否平滑往负方向移动不要出现id阶跃。时刻监控母线电压和相电压幅值如果过调制持续时间太长立刻降转速。在高速区切换无感FOC时要留意观测器角度滞后。弱磁区电流相位变化快角度滞后会进一步拉高电压误差形成恶性循环。这时候常用办法是增加超前角度补偿或者用速度积分器预测角度。8. 我的调试顺序和几个容易翻车的细节按我自己的习惯一台新的FOC电机驱动板到手我不会直接上SVPWM闭环而是按下面这套顺序走电源和逻辑检查先确认PWM通道、死区时间、栅极驱动供电是否正常。不上电机只测三相输出电压波形。编码器零点和电角度对齐这一步很关键。电机在空载下给一个固定d轴电压把转子拉到零电角度位置然后标定编码器偏移。偏移不对之后所有电流环都是白调。电流采样标定电机不转测三相采样偏置。给一个小id指令观察Id/Iq反馈是否和指令一致符号方向对不对。电流环调试在低速开环给一个固定的Iq看电流波形是否干净再闭环保电流环。速度环调试给目标速度看速度反馈能不能平滑到达重点观察启动和停车瞬间的电流冲击。位置环/关节调试做梯形速度轨迹测试再上连续轨迹规划。还有一个很多人忽略的细节不要把Proteus仿真当成硬件验证。Proteus做电机控制逻辑仿真可以帮你把程序跑通但它无法模拟MOSFET死区、采样电阻噪声、运放摆率、反电动势尖峰这些真实物理现象。用仿真验证算法结构没问题但“仿真能跑板上就一定能跑”这个想法迟早会毁掉一个下午。最后再分享一个我自己用了很久的小技巧FOC调试时把电流环的Iq指令和实际反馈同时通过DAC输出或者用示波器看PWM调制出来的电流波形会比只看数值快很多。电流波形一眼能看出有没有振荡、有没有采样毛刺、有没有换相尖峰。等电流波形干净了再去调速度环和位置环效率最高。做电机控制很多时候靠的不是理论多深而是这套“先电流、再速度、最后位置”的调试纪律。
返回列表