尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Simplorer-Maxwell联合仿真提速:SVPWM步长设置与三大优化技巧

Simplorer-Maxwell联合仿真提速:SVPWM步长设置与三大优化技巧 1. 联合仿真为什么慢先搞清楚时间到底花在哪做电机控制或者电磁阀驱动开发的朋友大概率都经历过这样的场景Simplorer里搭好了SVPWM控制逻辑Maxwell里建好了电机或电磁阀的有限元模型点下运行然后去泡杯咖啡回来发现进度条才走了不到十分之一。一个电周期仿真跑几个小时甚至过夜迭代几次设计下来一周就没了。我最早接触Simplorer-Maxwell联合仿真做永磁同步电机矢量控制时一个0.2秒的工况跑了整整6个小时。当时以为是电脑配置不够换了工作站发现提升有限才意识到问题不在硬件而在仿真架构本身。联合仿真的时间消耗主要来自三个层面Maxwell有限元求解的计算量、Simplorer与Maxwell之间的数据交换开销、以及控制算法步长与电磁场求解步长之间的匹配关系。这三个因素相互耦合任何一个设置不合理都会导致仿真时间成倍增加。这篇文章面向的是已经能跑通Simplorer-Maxwell联合仿真、但被速度问题困扰的工程师。我会把实测有效的三个提速技巧拆开讲清楚同时把SVPWM周期与步长设置里最容易踩的坑一并说明。每个技巧都附带具体的参数设置和原理分析你可以直接对照自己的模型调整。1.1 联合仿真的数据流与时间消耗分析先理解Simplorer和Maxwell在联合仿真时是怎么交互的。Simplorer负责求解控制系统的微分方程Maxwell负责求解电磁场的有限元方程。两者通过一个叫FSIField-Circuit Interface的接口交换数据Simplorer把绕组电流或电压传给MaxwellMaxwell把反电动势、电磁力、电感等参数回传给Simplorer。这个数据交换不是每个Simplorer步长都发生的。Maxwell有一个自己的求解步长通常比Simplorer的步长小得多。比如Simplorer的控制步长可能是1微秒而Maxwell为了捕捉磁场变化步长可能设到0.1微秒甚至更小。每经过一个Maxwell步长有限元方程就要重新组装和求解一次这才是真正的计算大头。实测数据一个2D瞬态磁场模型网格节点约5万单个时间步的求解时间大约0.3到0.8秒取决于非线性迭代次数。如果Maxwell步长设0.1微秒仿真0.01秒就需要100个步长光Maxwell求解就要30到80秒。而Simplorer那边10000个控制步长的计算可能只需要几秒。所以时间几乎全花在Maxwell上。1.2 三个提速技巧的整体思路基于上面的分析提速的核心就是减少Maxwell的求解步数、降低单步求解时间、以及减少不必要的联合仿真数据交换。三个技巧分别对应这三个方向技巧一合理放大Maxwell求解步长在保证精度的前提下减少步数技巧二优化Maxwell模型本身降低单步计算量技巧三调整联合仿真接口设置减少数据交换开销下面逐个展开。2. 技巧一Maxwell求解步长的合理放大策略这是最直接、效果最明显的提速手段。很多人把Maxwell步长设得极小觉得这样精度高但实际上对于SVPWM控制的电机仿真过小的步长带来的精度提升微乎其微时间却成倍增加。2.1 步长与SVPWM周期的关系推导SVPWM的载波周期决定了逆变器开关频率。假设开关频率为10kHz那么PWM周期就是100微秒。在一个PWM周期内SVPWM会输出两个非零电压矢量和一个零矢量每个矢量的作用时间由扇区判断和中间变量计算得出。关键问题是Maxwell的步长需要小到什么程度才能准确捕捉这些电压矢量的切换根据采样定理要准确还原一个周期为100微秒的PWM波形采样步长至少需要小于50微秒。但实际中PWM波形不是正弦波而是方波含有大量高次谐波。如果步长太大Maxwell会漏掉电压切换的细节导致电流波形失真。我的经验是Maxwell步长取PWM周期的1/20到1/50比较合适。对于10kHz开关频率步长取2到5微秒。这个范围既能捕捉PWM切换的主要特征又不会产生过多的求解步数。但这里有个坑Simplorer里的SVPWM模块输出的电压是连续变化的而Maxwell需要的是离散的步长点。如果Maxwell步长和PWM周期不成整数倍关系会出现电压采样点落在PWM切换瞬间的情况导致数值振荡。注意Maxwell步长最好设为PWM周期的整数分之一比如PWM周期100微秒步长取5微秒1/20、2.5微秒1/40或2微秒1/50。避免取3微秒这种非整数倍关系。2.2 不同步长下的精度与耗时对比我在一个额定功率5.5kW的永磁同步电机模型上做了对比测试。工况转速1500rpm负载转矩10N·m仿真时长0.05秒约3.75个电周期。SVPWM开关频率10kHz。Maxwell步长求解步数仿真耗时相电流THD转矩脉动峰峰值0.5微秒1000008小时12分3.2%0.45N·m2微秒250002小时05分3.5%0.52N·m5微秒1000050分钟4.1%0.68N·m10微秒500025分钟6.8%1.12N·m从数据可以看出步长从0.5微秒放大到5微秒耗时降到原来的1/10而电流THD只增加了不到1个百分点。步长继续放大到10微秒精度开始明显恶化。所以5微秒是一个比较理想的平衡点。2.3 自适应步长的设置方法Maxwell支持自适应步长可以根据求解误差自动调整步长。在瞬态求解器的Mesh Options里可以设置Initial Time Step、Minimum Time Step和Maximum Time Step。我的建议是Initial Time Step设为PWM周期的1/20Minimum Time Step设为PWM周期的1/100Maximum Time Step设为PWM周期的1/10。这样在电压矢量切换时步长会自动缩小在零矢量作用期间步长会自动放大兼顾精度和速度。但要注意自适应步长会增加求解器的判断开销如果模型本身不大固定步长可能更快。我一般先在固定步长下跑通确认精度满足要求后再尝试自适应步长看能否进一步提速。3. 技巧二Maxwell模型精简与网格优化步长放大有极限再大精度就不够了。这时候要从Maxwell模型本身入手降低单步求解时间。3.1 对称性利用与模型简化电机模型通常具有对称性。如果是整数槽绕组可以利用周期性边界条件只建一个极或一个单元电机。比如8极48槽的永磁同步电机可以只建1/8模型网格量和求解时间直接降到1/8。设置方法在Maxwell的Modeler里用DrawRegionSplit切出对称区域然后在Boundaries里指定Master和Slave边界。注意Master和Slave边界的网格必须匹配否则会报错。对于电磁阀模型如果是轴对称结构直接用2D轴对称求解器比3D快一个数量级。我做过一个比例电磁阀的仿真3D模型单步要12秒换成2D轴对称后单步只要0.8秒。3.2 网格剖分的关键参数网格是有限元求解的核心。网格太粗精度不够太细计算量爆炸。几个关键设置Surface Approximation在Mesh Operations里设置控制曲面的离散精度。对于电机定子槽的圆角设置最大偏差为0.1mm左右就够了不需要追求极致。Length Based Refinement在气隙、永磁体边缘、槽口这些磁场变化剧烈的地方加密网格。气隙网格一般至少3层每层厚度约0.2mm。永磁体边缘的网格尺寸不超过0.5mm。Inside Selection对于绕组区域如果只关心电流密度分布网格可以粗一些尺寸设1到2mm即可。实测一个5.5kW电机模型初始网格约8万节点单步求解1.2秒。经过上述优化后网格降到3.5万节点单步求解0.45秒精度几乎不变。3.3 非线性迭代与求解器设置Maxwell瞬态求解器默认使用Newton-Raphson非线性迭代。每次迭代都要重新组装刚度矩阵这是单步耗时的主要来源。几个可以调整的参数Nonlinear Residual默认0.001可以放宽到0.005迭代次数会明显减少。对于电机仿真0.005的残差完全够用。Maximum Nonlinear Iterations默认10次如果经常达到上限说明网格或步长有问题不要盲目加大。Linear Solver默认直接求解器对于2D模型可以换成ICCG迭代求解器内存占用更小速度更快。3D模型建议保持直接求解器。提示在Solve Setup里勾选Use Adaptive Time Stepping后非线性残差可以适当放宽因为步长会自动调整来补偿精度。4. 技巧三联合仿真接口与Simplorer侧优化前两个技巧针对Maxwell第三个技巧针对联合仿真的接口和Simplorer侧设置。这部分最容易被忽视但优化空间不小。4.1 联合仿真数据交换的步长匹配Simplorer和Maxwell的步长不需要一致。Simplorer的控制步长通常比Maxwell小因为控制算法需要更高的时间分辨率。但两者之间有一个通信步长决定了多久交换一次数据。在Simplorer的Maxwell组件里可以设置Time Step参数。这个参数如果设得太小数据交换频繁开销大设得太大Maxwell拿到的电压电流更新不及时控制效果变差。我的经验通信步长设为PWM周期的1/10到1/5。对于10kHz开关频率通信步长取10到20微秒。这样每个PWM周期内Maxwell能收到10到5次电压更新足够反映SVPWM的切换。4.2 Simplorer求解器设置要点Simplorer的求解器设置里有几个参数影响联合仿真速度Relative Tolerance默认1e-3可以放宽到1e-2。联合仿真时Simplorer的精度不是瓶颈Maxwell那边才是。Maximum Step Size设为通信步长的1/2到1/5保证在两次数据交换之间有足够的求解点。Solver Type对于电力电子系统选Backward Euler比Trapezoidal更稳定虽然精度略低但不容易振荡。4.3 SVPWM周期与步长设置的避坑指南这是标题里特别提到的部分也是实际中最容易出问题的地方。SVPWM的周期和步长设置涉及三个层面PWM载波周期、Simplorer控制步长、Maxwell求解步长。三者之间的关系如果没理顺会出现各种奇怪的问题。坑一PWM周期不是控制步长的整数倍SVPWM模块内部有一个三角载波周期为T_pwm。如果Simplorer的控制步长不能整除T_pwm载波比较会出现误差导致输出电压矢量作用时间计算错误。表现为电流波形出现低频振荡。解决方法控制步长取T_pwm的整数分之一。比如T_pwm100微秒控制步长取1微秒、2微秒、5微秒都可以不要取3微秒。坑二扇区判断后的中间变量计算溢出SVPWM扇区判断后需要计算两个非零电压矢量的作用时间。中间变量X、Y、Z的计算涉及除法如果分母接近零会导致数值溢出。在Simplorer里表现为仿真突然报错或结果发散。解决方法在中间变量计算后加一个限幅环节把作用时间限制在0到T_pwm之间。同时给分母加一个极小值如1e-10防止除零。坑三零序注入与步长的相互影响如果使用零序注入SVPWM也叫SVPWM with zero-sequence injection注入的零序分量会改变相电压的波形。如果Maxwell步长太大零序分量的高频成分会被漏掉导致共模电压计算不准。解决方法使用零序注入时Maxwell步长要比普通SVPWM再小一倍。或者改用七段式SVPWM零序分量更平滑对步长不敏感。坑四初始角度设置与步长起点不匹配Maxwell的初始角度设置决定了转子位置。如果初始角度和SVPWM的起始扇区不匹配第一个PWM周期内会出现很大的电流冲击。这个冲击如果被步长漏掉会表现为仿真结果异常但又不报错。解决方法确保Maxwell初始角度与Simplorer里SVPWM的初始电角度一致。一般设转子d轴与A相轴线重合为0度SVPWM的起始扇区也对应0度。5. 实操过程从6小时到50分钟的完整调优记录下面用一个实际案例把三个技巧串起来。模型5.5kW永磁同步电机8极48槽SVPWM矢量控制开关频率10kHz仿真时长0.05秒。5.1 初始设置与基线测试初始设置Maxwell步长0.5微秒网格默认Simplorer通信步长5微秒控制步长1微秒。仿真耗时8小时12分相电流THD 3.2%。这个结果精度很好但时间不可接受。开始调优。5.2 第一步放大Maxwell步长把Maxwell步长从0.5微秒改为5微秒其他不变。耗时降到50分钟THD升到4.1%。转矩脉动从0.45N·m升到0.68N·m。对于控制参数整定来说这个精度完全够用。5.3 第二步网格优化在5微秒步长基础上利用1/8对称模型网格从8万节点降到3.5万节点。耗时进一步降到22分钟。THD基本不变。5.4 第三步接口与求解器调整通信步长从5微秒改为10微秒Simplorer相对容差从1e-3改为1e-2Maxwell非线性残差从0.001改为0.005。耗时降到15分钟。THD升到4.3%仍在可接受范围。最终结果从8小时12分降到15分钟提速约33倍。即使只算第一个技巧的贡献也从8小时降到50分钟接近标题说的砍半实际上砍了更多。5.5 关键参数速查表参数初始值优化值影响Maxwell步长0.5微秒5微秒耗时降10倍THD升0.9%网格节点数8万3.5万耗时降2倍精度基本不变通信步长5微秒10微秒耗时降30%控制略变慢非线性残差0.0010.005耗时降20%精度略降Simplorer容差1e-31e-2耗时降15%稳定性略降6. 常见问题与排查技巧实录联合仿真提速过程中会遇到各种报错和异常这里整理几个我实际踩过的坑。6.1 仿真中途卡死或报Time step too small这是最常见的问题。原因通常是Maxwell步长太小导致求解器无法收敛或者SVPWM输出异常导致电流突变。排查步骤先检查SVPWM的中间变量计算是否有除零风险再看Maxwell的网格是否有畸形单元。如果都没问题把Maxwell步长放大一倍试试。有时候是某个时间点电压矢量切换太剧烈自适应步长会不断缩小直到卡死。6.2 电流波形出现毛刺或振荡如果电流波形上有高频毛刺通常是通信步长和Maxwell步长不匹配导致的。检查两者是否为整数倍关系。另外Simplorer的求解器类型也会影响Backward Euler比Trapezoidal更不容易产生数值振荡。6.3 转矩脉动异常大转矩脉动大不一定是控制问题可能是Maxwell步长太大漏掉了电流细节。把步长缩小一半对比一下。如果缩小后转矩脉动明显改善说明步长是瓶颈。如果没改善检查网格是否太粗特别是气隙网格。6.4 联合仿真启动时报FSI link failed这是接口问题。检查Simplorer里Maxwell组件的路径是否正确Maxwell模型是否已经保存。另外Simplorer和Maxwell的版本必须一致混用版本会报这个错。6.5 常见问题速查表现象可能原因解决方法仿真卡死步长太小/网格畸形放大步长/检查网格电流毛刺步长不匹配设为整数倍关系转矩脉动大步长太大/网格太粗缩小步长/加密气隙网格FSI链接失败路径错误/版本不一致检查路径/统一版本结果发散SVPWM除零/初始角度错加限幅/对齐初始角度7. 几个容易被忽视的细节最后分享几个小技巧都是实际调试中总结出来的。技巧一先用小模型试参数。不要一上来就在完整模型上调参先建一个简化模型比如只有一相绕组跑通确认步长和SVPWM设置没问题再换完整模型。技巧二保存中间状态。Maxwell支持保存求解状态如果仿真到一半发现参数不对可以从保存点继续不用从头跑。技巧三用Simplorer的Scope先看控制波形。在联合仿真之前先在Simplorer里单独跑一下SVPWM控制逻辑确认输出电压波形正确。这样可以把控制问题和电磁场问题分开排查。技巧四Maxwell的电流泄露问题。如果发现绕组电流不守恒检查绕组的Terminal设置是否正确特别是并联支路数。这个设置错了会导致电流分配异常进而影响仿真速度。技巧五定期清理临时文件。Maxwell仿真会产生大量临时文件积累多了会拖慢硬盘读写。建议每次仿真前清理一下工作目录。这些细节看起来不起眼但实际调试中能省不少时间。我自己的习惯是建一个参数记录表每次调整都记下参数和结果这样能快速定位最优组合避免重复试错。
返回列表