资讯详情

资讯详情

PMSM直接转矩控制Simulink仿真:四种DTC模型详解与调试指南

做电机控制的人十有八九绕不开直接转矩控制DTC。尤其是永磁同步电机PMSM这种磁场和转矩高度耦合的机种想实现快速动态响应DTC往往和FOC并列成为第一选择。我最近把一套“PMSM直接转矩控制Simulink仿真模型”完整过了一遍里面不是单个Demo而是从原理到工程落地的四套模型经典滞环开关表DTC、SVPWM定频DTC、无位置传感器DTC、模型预测DTC。如果你正在准备毕业设计、入门电机控制或者在公司做算法预研这篇文章的梳理思路可以直接拿过去用。我先说结论这套东西真正的价值不在“能转”而在“四套模型放在一起看的时候能让你直观理解DTC的痛点是怎么一层一层被解决的”。下面从DTC的底层逻辑讲起再拆四套模型的差异最后把Simulink里最容易翻车的环节和排查经验一次说清。1. 直接转矩控制的核心逻辑磁链和转矩才是控制目标1.1 定子磁链是“被电压矢量推着走”的DTC和FOC最大的区别在于控制变量。FOC控制的是电流id、iq通过电流内环间接控制转矩DTC则是直接控制定子磁链幅值和电磁转矩。这个思路在原理上非常直白PMSM的电磁转矩可以写成Te 1.5 × p × (ψα × iβ − ψβ × iα)也可以从磁链角度理解成幅值和夹角的形式转矩由定子磁链幅值、转子磁链幅值以及两者夹角转矩角δ决定。转子磁链来自永磁体基本不变所以控制转矩本质上就是控制定子磁链幅值和转矩角。定子磁链不是想变就变的它由定子电压方程决定ψs ∫(Us − Rs × Is)dt忽略定子电阻压降时定子磁链矢量的变化方向约等于施加的电压矢量方向。也就是说逆变器输出哪个电压矢量磁链端点就往哪个方向走。DTC的核心思路就是靠“选电压矢量”来推着磁链走需要增加磁链时选径向分量大的矢量需要增大转矩时选能让磁链往前进方向多走一步的矢量。听起来像开关控制实际上它就是开关控制。1.2 DTC 和 FOC 差在哪很多新手一上来就纠结“DTC是不是比FOC高级”。其实两者只是路线不同。FOC走的是“解耦连续调制”转子磁场定向之后把电流拆成励磁和转矩两个分量用两个PI环去跟踪再用SVPWM输出正弦电压。优点是好理解、开关频率固定、电流波形好缺点是动态响应受电流环带宽限制而且对转子位置信息的依赖很强。DTC走的是“限幅查表”路线不需要电流内环不需要Park反变换把磁链误差和转矩误差丢给两个滞环比较器再结合当前磁链所在扇区从开关表里挑一个电压矢量直接驱动逆变器。动态响应非常快结构上对电机参数依赖也少。代价就是开关频率不固定、转矩脉动偏大、低速时候磁链观测容易出问题。对比项FOCDTC电流内环需要PI连续调节不需要滞环比较器调制方式SVPWM或其他连续调制开关表/SVM/MPC动态响应受电流环带宽限制快直接选矢量转矩脉动较小经典结构较大开关频率固定经典结构不固定对参数依赖依赖电感和磁链参数依赖定子电阻和磁链初始值这张表里最值得注意的一项是“对参数依赖”。DTC的磁链观测用电压模型理论上只依赖定子电阻转矩估算用的是电流和磁链的叉乘不依赖电感。这是它在参数鲁棒性上比FOC有优势的根本原因。但代价是低速时反电动势太小积分器容易漂移这也就是后面无位置传感器那一版模型要重点解决的问题。2. 四种模型怎么选从经典DTC到MPC这四套模型我建议按“演进顺序”来看而不是随手打开一个就跑。因为后一版都是在补前一版的短板。2.1 模型一经典滞环开关表DTC模型一是最原始的DTC结构磁链滞环、转矩滞环、扇区判断、开关表再加一个可选的速度外环。低层没有一个连续的调制器逆变器开关信号直接由开关表输出。它的开关逻辑可以抽象成一张相对矢量表。设当前定子磁链扇区为n磁链误差需要增大时取“超前矢量”需要减小时取“滞后矢量”转矩误差的取舍再往旁边偏一个矢量。滞环比较器的宽度决定了磁链脉动和开关频率。这套模型最直观适合用来建立“电压矢量-磁链轨迹-转矩变化”三者之间的映射关系。2.2 模型二SVPWM定频DTC模型一把滞环和开关表整体拿掉换成“转矩PI磁链PI”或者“转矩误差-磁链误差合成电压矢量”的方式最后用SVPWM合成目标电压矢量输出。这个结构的本质还是DTC控制目标仍然是磁链幅值和转矩不再追求固定开关频率但是输出的电压是连续参考电压由SVPWM以固定载波频率调制。DTC的动态响应优势基本保留但转矩脉动和开关频率抖动被压下来了。代价是引入了PI调节器和SVPWM环节结构和调参都变复杂了。2.3 模型三无位置传感器DTC模型三把编码器去掉速度反馈不再来自电机轴上的传感器而是通过滑模观测器从定子电压电流里估算转子位置和转速。DTC本身其实对转子位置没有FOC那么敏感因为磁链观测是电压模型转矩估算用的是αβ静止坐标下的量。但速度闭环必须要转速反馈所以无位置传感器DTC的核心工作不在DTC本体而在“如何把转速和转子位置从反电动势里抠出来”。滑模观测器最常见的做法是构造定子电流的状态方程用开关函数把观测电流收敛到实际电流然后从等效控制量里提取反电动势再用锁相环估计转子位置。低速下反电动势很小估算误差会明显放大所以这套模型对低速工况的限制比前两套更严格。2.4 模型四模型预测直接转矩控制模型四是目前论文和工程里都很有热度的一种MPDTC。它不再用滞环也不用PI调电压矢量而是对逆变器全部可能输出的候选电压矢量逐一做一步预测用离散化电机模型预测施加各个矢量后的磁链和转矩然后带入代价函数g (Te* − Te)^2 λ × (|ψs*| − |ψs|)^2每个控制周期选择一个使代价函数最小的矢量直接输出。候选矢量一般考虑六个非零矢量和两个零矢量所以计算量不大但比查表复杂。这个结构的优势是控制灵活可以很容易地加入开关频率限制、电流限幅、共模电压抑制等约束条件转矩脉动比经典滞环DTC明显更小。2.5 四套模型的对比与适用场景模型开关频率转矩脉动是否用编码器实现难度适合场景经典滞环DTC不固定大用低入门、原理验证SVPWM-DTC固定较小用中工程驱动、降低噪声无感DTC不固定中不用中高无位置传感器应用模型预测DTC变化但可控小用高控制性能优化项目如果你只是想快速跑通DTC先看模型一如果你想做工程上的定频驱动模型二最实用如果想拿创新点模型三是可靠方向模型四是热门方向。四套模型共用同一个电机、逆变器和测量模块我实际搭的时候发现共用母版替换控制器的做法能让对比实验非常省时间。3. Simulink搭建的关键环节与参数计算3.1 电机的参数设置先给出一套我实际搭建时用过的小功率表贴式PMSM参数四套模型可以共用参数数值说明Rs2.875 Ω定子相电阻Ld / Lq8.5 mH表贴式取Ld Lqψf0.175 Wb永磁体磁链极对数 p4机械角与电角之比J0.001 kg·m²转动惯量B0.001 N·m·s阻尼系数Vdc310 V直流母线电压参数设置有个坑Simulink里的PMSM模块如果填的是线电压幅值常数那要和磁链、反电动势常数的单位严格对应。我建议要么统一用国际单位标幺值换算要么全部用实际单位不要混填。转矩估算模块输出的是电磁转矩不是机械转矩单位是N·m别在波形窗口里当成功率或电流去看。定子磁链幅值给多少表贴式PMSM在额定工况附近通常直接给定为永磁体磁链ψf因为额定电流产生的电枢磁链相对不大磁链幅值给得太高反而容易进饱和。我在这套模型里取ψs* 0.175 Wb和ψf一致。3.2 坐标变换与定子磁链观测Simulink里一般先用三相电流和线电压做Clarke变换得到αβ轴分量iα (2/3) × (ia − 0.5 × ib − 0.5 × ic)电压模型磁链观测是最容易出问题的地方。理论上很简单ψα ∫(uα − Rs × iα)dt ψβ ∫(uβ − Rs × iβ)dt但积分器在仿真里只要有一点直流偏置就会漂移磁链圆会出现偏心甚至发散。工程上常用一阶高通替代纯积分也就是让磁链观测器传递函数变成H(s) s / (s ωc)ωc取5到20 rad/s左右时能滤掉直流漂移又不至于让基波幅值和相位损失太多。仿真模型里还有一个更省事的做法用带输出限幅的积分器并给初始条件。PMSM启动前定子磁链应该等于初始转子磁链所以初始化成ψα(0) ψf × cos(θ0) ψβ(0) ψf × sin(θ0)θ0是转子初始电角度。很多第一次搭DTC的人没设这个初始条件磁链从零开始建立启动那一下电流冲击特别大还以为是PI参数不对其实根子在磁链初值。3.3 转矩估算磁链估算出来之后转矩直接用叉乘公式Te 1.5 × p × (ψα × iβ − ψβ × iα)这个公式用的是αβ静止坐标系不需要转子位置所以DTC的转矩反馈天生就避开了一部分位置依赖。Simulink里可以直接用Fcn模块写表达式也可以拆成增益、乘法器和求和器搭出来。我建议用Fcn模块少放元件逻辑清晰排查问题的时候一眼就能看出公式有没有写错。需要注意电流方向和符号。PMSM模块的电流方向定义、逆变器的输出方向、示波器里看到的ia符号三者只要一个方向反了转矩估算就会出现“给定正转矩、实际出负转矩”的情况。转速反向、磁链圆反向扫一下基本都能定位到是坐标变换还是符号问题。3.4 滞环比较器与开关表经典模型里磁链和转矩误差分别送入Relay模块。磁链滞环宽度比如取±0.005 Wb转矩滞环宽度取±0.1 N·m当然具体看电机额定值。滞环越窄磁链轨迹越圆但开关频率越高滞环越宽开关频率降下来但转矩脉动变大。模型一里这两个宽度可以直接作为调节开关频率和脉动的两个“旋钮”。开关表在Simulink里有三种常见做法二维查表、MATLAB Function、Stateflow。最灵活的是MATLAB Function。下面给一个示例逻辑function [Sa,Sb,Sc] dtc_switch_table(flux_up, torque_up, sector) % 基本电压矢量编号1V1(100)2V2(110)3V3(010) % 4V4(011)5V5(001)6V6(101) % flux_up1表示磁链需要增大torque_up1表示转矩需要增大 % sector为当前磁链所在扇区(1~6) vectors [1 0 0; 1 1 0; 0 1 0; 0 1 1; 0 0 1; 1 0 1]; % 相对矢量偏移按磁链/转矩误差组合选择 selector flux_up * 2 torque_up 1; switch selector case 1 % 磁链减小、转矩减小 offset 4; case 2 % 磁链减小、转矩增大 offset 5; case 3 % 磁链增大、转矩减小 offset 6; case 4 % 磁链增大、转矩增大 offset 1; end idx mod(sector - 1 offset, 6) 1; Sa vectors(idx, 1); Sb vectors(idx, 2); Sc vectors(idx, 3); end这里要提醒一句不同文献的扇区编号起点、电压矢量编号方式可能不一样所以这张相对矢量表不是唯一标准。关键是你的扇区判断、矢量编号、磁链初始角三者必须保持一致。我排查过最离谱的一个问题就是扇区从0开始编号而矢量表从1开始编号导致正常运行十分钟的模型在某一个扇区边界突然转矩跳变。3.5 速度环和参考值生成四套模型都带速度外环的话速度环PI的输出就是转矩给定。速度PI建议加上积分限幅和反计算抗积分饱和。DTC的转矩响应很快如果速度PI积分项不加限制启动时转矩给定会冲到顶电流保护逻辑没做好很容易过流。速度环PI我一般先不加积分只加比例让系统在稳态附近振荡观察振荡频率然后给一个较小的积分时间常数逐步往下压直到稳态误差为零且超调可接受。不要一上来就按教科书公式算Kp、Ki那是理论路径实际仿真里总有不那么理想的滤波和延迟先试凑再微调更快。转矩给定限幅也要留意。对上面那台电机额定电流大概5A额定转矩约TeN 1.5 × 4 × 0.175 × 5 ≈ 5.25 N·m启动瞬间把转矩限幅放在2倍额定值左右是合理的但别长时间让转矩参考值超额定那会把波形拉出很明显的平顶看起来像饱和其实已经过流了。3.6 仿真步长与求解器设置DTC模型和普通连续系统PID仿真不一样它有功率变换器逆变器开关是离散事件。我用的是固定步长离散求解器步长一般取1e-6到5e-6秒。步长太大滞环比较器的触发时刻不准转矩脉动会被数值噪声放大步长太小仿真速度慢尤其是模型四跑起来特别难受。模型四的预测控制是在每个采样周期内对多个电压矢量做预测采样周期可以放宽到20e-6到50e-6秒。但要注意预测模型用的是一阶欧拉离散化步长放得越宽预测误差越大。我实际测试下来Ts20e-6秒是性能和速度的平衡点。4. 常见问题与排查技巧实录下面这些问题是DTC仿真里最常见的我按现象把排查顺序列出来。遇到问题先对号入座别急着改PI参数。4.1 磁链圆不圆甚至发散先看磁链观测器。如果是纯积分器非常容易出现直流偏置。处理办法就是前面说的用一阶高通替换纯积分或者给积分器加限幅和初始条件。再看定子电阻是否填对。磁链观测器唯一依赖的电机参数就是Rs电阻随便填的话低速时误差会非常明显。4.2 低速时转矩出不来低速时反电动势小电压模型磁链观测的等效信噪比很低这是原理性短板。低速工况下建议改用电流模型磁链观测器也就是用id、iq和电感、永磁体磁链重建磁链ψd Ld × id ψf ψq Lq × iq代价是依赖电感和转子位置。这也解释了为什么模型三虽然是无感结构但低速性能会比模型一更紧张。工程上很少要求DTC从零速到高速全程高精度运行一般允许低速段切换到其他控制策略。4.3 开关频率过高或过低经典DTC的开关频率由滞环宽度决定和电机转速、反电动势、母线电压都有关系。转速高的时候磁链变化率大同样滞环宽度下开关频率会自然升高。这时候不要只调滞环带宽还要看母线电压裕量。母线电压太低电压矢量推磁链的速度跟不上转矩环就会持续处在误差上边界。4.4 扇区边界误选矢量磁链扇区判断要根据ψα和ψβ的反正切结果。扇区切换瞬间由于数值离散和延迟磁链角度刚好卡在一个扇区和下一个扇区之间时开关表可能输出一个“只维持一个采样周期”的短脉冲导致转矩小尖峰。这种问题在低速时相对少见高速时会被放大。我常用的处理办法是给扇区判断加一个很小的滞环也就是磁链角在边界附近时不立刻切换扇区等角度越过边界一定量后再换。这个叫“扇区滞后判断”实现简单对转矩尖峰抑制效果很明显。4.5 MPC模型仿真速度慢模型四计算量大主要不是因为预测本身而是因为每一步要对多个候选电压矢量重复做坐标变换和欧拉预测。我建议把预测部分写成向量化运算不要用循环逐个写if。另外Simulink里如果把MATLAB Function采样步长设置成inf可能会在整个仿真周期内反复触发速度更慢。采样周期必须显式设置成Ts。4.6 速度环调不稳DTC转矩响应快速度环如果调太高容易和机械振荡耦合。我遇到过“速度给定从0拉到1000rpm转速超调30%”的情况最后不是把Kp降下来而是把转矩限幅从2倍额定降到1.5倍额定就好了。速度环调参不是只调PI限幅在很大程度上决定了系统的约束动态。5. 参数调试与结果判断经验模型跑起来之后别急着看转速稳不稳先看三个底层波形第一是磁链轨迹。打开ψβ对ψα的XY图圆越圆、半径越稳定说明磁链环工作正常。经典滞环DTC的磁链轨迹不会特别光滑会有滞环宽度带来的锯齿状边界这正常。如果轨迹严重偏心优先怀疑积分漂移。第二是转矩波形。阶跃给一个转矩参考比如从0跳到3N·m看响应时间。DTC的转矩响应在几个毫秒甚至更短如果发现转矩上升很慢大概率是开关表的矢量方向不对或者滞环带宽太大。第三是开关管开关脉冲。看逆变器S相开关信号经典DTC会明显看到脉冲密度随转速变化这是正常现象SVPWM-DTC的脉冲密度则是均匀的。如果两个波形看起来一样那模型二可能还没真正实现定频调制。我实际调试时还有一个小技巧四套模型共用同一个电机参数、初始条件和仿真步长调好模型一之后直接把控制器模块替换成模型二到模型四的控制器观察同一个加载波形下的响应。这种“母版换核”的做法比每个模型从头搭一遍省太多时间也能更公平地比较不同控制算法的性能差异。DTC仿真真正做到后面你会发现一个很有趣的事实最难的不是把模型跑出来而是让每个环节都经得起“为什么这样做”的追问。比如为什么磁链初始条件要等于转子磁链为什么扇区判断需要滞后为什么滞环宽度不能直接取0这每一个问题背后都对应一个真实的物理约束。把这层逻辑吃透这套仿真模型就真的变成你自己的东西了。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →