ARTICLE DETAIL

资讯详情

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

双电机实时仿真与硬件在环测试:从建模到故障注入完整实践

双电机实时仿真与硬件在环测试:从建模到故障注入完整实践 这两年做电驱系统的人聊得最多的就是双电机控制。从电动工程机械的双泵协调到乘用车的四驱前后轴解耦再到特种装备的双电机冗余驱动控制器里跑的核心算法早就从“控制一台电机转起来”变成了“让两台电机配合着干活”。但难题也接踵而至双电机动态耦合、转矩分配逻辑、容错切换策略这些在实物台架上试错成本高、风险大很多极限工况根本不敢真机去撞。我这几年一直在做电机控制器的硬件在环测试手头这套双电机实时仿真项目就是从零搭起来的这篇文章就把整个应用过程、模型细节、接口配置和踩过的坑完整捋一遍希望对搞电控测试和电机控制的朋友有实际参考价值。1. 双电机系统为什么必须上实时仿真1.1 双电机系统的应用场景与测试难点双电机的形态很多但本质上分两类一类是机械耦合式比如双电机通过齿轮箱或传动轴共同驱动一个负载工程机械的左右行走泵、风电变桨的冗余驱动都是这种结构另一类是独立驱动式比如电动汽车的前后轴各一台电机通过整车控制器做转矩分配电气上完全解耦但运动学上通过车身动力学强耦合。无论哪种形态测试的难点都集中在三个地方第一动态耦合问题。机械耦合时一台电机转速波动会直接带动另一台电机负载突变转矩分配稍有偏差轴系就会出现扭振。这类问题在实物台架上复现起来很痛苦因为机械系统的惯量、阻尼、间隙等参数改一个都得重做机械结构。第二极限工况与故障注入。双电机系统的容错逻辑是关键卖点——某台电机传感器失效、某条PWM通道丢失、逆变器功率管短路系统要能在毫秒级切换策略。这些故障场景在实物上做轻则炸管烧板重则机械损坏风险和成本都不可接受。需要一种方式能安全地把这些故障“喂”给控制器看它到底怎么反应。第三覆盖率和重复性。实物台架做一轮工况测试需要换台架、调负载、等温度稳定一天跑不了几个用例。而且同一工况在不同环境温度下测出来的曲线还漂移回归测试的置信度上不去。仿真环境里做工况遍历、参数扫描、自动化回归效率和一致性都是碾压级的。1.2 实时仿真与实物台架的取舍逻辑很多人会问既然有实物台架为什么要上实时仿真我的答案是两者根本不是替代关系而是上下游关系。实时仿真把控制器和软件算法验证做到尽可能充分等代码质量足够高的时候再上实物台架做最终的标定和验收。这样实物台架主要是用来“验收”而不是用来“试错”。实时仿真和普通离线仿真最大的区别在于“实时”两个字。控制器的电流环周期通常是100微秒甚至10微秒它通过硬件接口输出的PWM脉冲、读入的电流电压信号都是真实物理信号。实时仿真器必须在固定的微小步长内完成整个电机模型的解算并且通过高速IO把结果物理输出去这个闭环中间不能有任何卡顿和延迟抖动。你做Simulink离线仿真跑几步停一下无所谓但实时仿真不行计算结果晚出来一微秒控制器的ADC采样到的就是错误数据整个测试就废了。所以从需求倒推双电机实时仿真测试解决的核心痛点就是三层安全地测极限工况、快速地做自动化回归、可控地注入故障。这三件事是实物台架很难同时满足的也正是它存在的根本价值。2. 双电机实时仿真建模从数学方程到可执行模型2.1 电机本体数学模型选型与参数获取我们这套系统用的是表贴式永磁同步电机PMSM在实时仿真中建模基本都是基于经典的d-q轴旋转坐标系方程。别被这些公式吓到实时仿真器里的电机模型本质就是一坨微分方程关键是方程形式和解算步长匹配。在同步旋转坐标系下PMSM的电压方程和磁链方程如下Ud Rs*Id Ls*dId/dt - ωe*Ls*Iq Uq Rs*Iq Ls*dIq/dt ωe*(Ls*Id ψf) Te 1.5*p*ψf*Iq dωm/dt (Te - TL - B*ωm) / J其中Ud、Uq是d轴和q轴电压Id、Iq是电流Rs是定子电阻Ls是定子电感表贴式近似认为LdLqψf是永磁体磁链p是极对数Te是电磁转矩TL是负载转矩J是系统转动惯量B是阻尼系数。这些参数看起来简单但真正填入模型时会发现电机手册给的参数和实际运行参数常常对不上。比如电感手册写的是额定工况下的值但实际电机在不同电流下电感会饱和变化磁链也会随温度漂移。做实时仿真的参数整定时我建议把电机参数表做成一个独立的配置页面并且用实验数据做标定修正。常用的方法是对拖试验用测功机拖动被测电机分别测堵转状态和空载状态的电压电流关系反算出Rs和Ls再做不同转速下的空载反电动势测试计算出ψf。这一轮标定做完模型在中低转速段的精度就能达到95%以上。2.2 双电机机械耦合模型的三类接法双电机的模型不能简单地把两个独立的PMSM模型拼在一起就完事。关键在于负载与耦合模型怎么建立这决定了仿真结果能不能反映真实系统的动态行为。以机械耦合的双电机驱动为例设电机1和电机2的电磁转矩分别为Te1、Te2转速相同为ωm刚性联轴则总的机械运动方程是(J1J2) * dωm/dt Te1 Te2 - TL - B*ωm但如果两台电机之间通过弹性联轴器或齿轮啮合就要考虑轴系扭振。这时需要引入一个扭转弹性系数Kc和一个阻尼系数Dc建立电机1轴端和电机2轴端的独立转速微分方程中间用扭转力矩连接。这种二阶模型的固有频率如果计算不对仿真结果就会“晃荡”看起来像实际系统的扭振其实是模型参数没配对。在搭建模型时候还要仔细处理负载模型。独立的负载转矩可以用函数发生器去给定任取任意工况曲线但如果模拟真实的工程机械泵负载负载转矩往往与转速和压力相关这时可以建模成一个查表模型把转速-负载转矩曲线以二维表格形式输进去实时仿真器在每一仿真步长插值查表。实测效果很好比单纯用恒定负载或者斜坡负载真实得多。一个重要经验如果两台电机在物理上是机械连接的模型里一定要把机械方程合并或并联起来而不是各自独立建自由负载模型。曾经见过同事为了省事把两台电机模型独立跑每台电机各带各的负载结果仿真出来的动态响应完全不对控制器算法评估直接失真。这个细节直接决定模型的可用性。2.3 逆变器与PWM通道的模型精度步长是生死线电机模型再准确如果逆变器模型的开关脉宽表达不出来电流谐波就是错的控制器里的谐波抑制算法就没法验证。双电机实时仿真要面对的核心问题是PWM分辨率和解算步长的冲突。控制器输出的PWM频率一般是10kHz到20kHz载波周期50到100微秒。如果实时仿真用CPU单独解算整个模型步长很难低于50微秒那么一个PWM周期内只有1到2个采样点占空比的变化根本分辨不出来模型输出的电流会是严重失真的锯齿波。解决这个问题的标准做法是FPGA承担电气模型解算。在常见的实时仿真平台上电机模型、逆变器模型、PWM捕获都在FPGA层运行步长可以做到纳秒级。PWM信号通过板卡的数字输入接口进入FPGAFPGA以几十兆赫兹的时钟去捕获每一路PWM的上升沿和下降沿精确测量占空比和开关频率然后以微小时间片逐段解算电流回路。这样即使在10kHz载频下每个开关周期也有成百上千个解算点电流波形就能做到与实物非常接近。选型上的经验是双电机系统至少需要FPGA资源能同时跑两套电机模型。有些入门级实时仿真器FPGA资源不够只能跑一套那就得把这台仿真器拆成“一台仿真器一台辅机”的组合或者降低模型阶数不推荐。多电机仿真对FPGA资源的需求确实是必须先确认的硬指标。3. 测试台架架构与硬件接口配置3.1 实时仿真器与被测控制器的闭环拓扑整个双电机HIL测试系统的物理拓扑简单描述就是被测控制器通过真实线束连接到实时仿真器的IO板卡实时仿真器通过FPGA解算电机模型把电流、电压、转速信号通过模拟量输出口送还给控制器的采样电路控制器根据采样结果运算后重新输出PWM形成闭环。在整个链路里被测控制器实际是一个双MCU控制器两块驱动板各自闭环完全不知道自己掌控的是一台仿真器里的虚拟电机。它看到的、听到的都是真实的模拟电平信号、真实的PWM回馈通道、真实的旋变解码信号。这就是硬件在环测试的核心价值——被测对象是真实硬件只有被控对象是虚拟的。我们采用的处理器方案是CPUFPGA的异构实时系统。CPU上跑机械负载模型、工况管理脚本和上位机通讯FPGA上跑两台PMSM的电气模型、逆变器模型以及PWM捕获和信号发生逻辑。各自的载荷设计都有冗余空间建议CPU负荷率控制在60%以下FPGA资源占用控制在70%以下留出故障注入和模型扩展的余量。这套架构撑住了绝大多数测试需求。3.2 信号接口与电平转换最容易翻车的地方HIL测试接线这块我踩过不少坑最典型的就是电平匹配。常见的控制器IO信号大致有数字量输入给仿真器的信号PWM驱动信号一般3.3V或5V电平数字量输出从仿真器给控制器的信号故障指示、使能状态、转速方向等常见是12V或24V模拟量输入从仿真器给控制器的信号电机相电流、直流母线电压等一般是±10V或0-5V模拟量输出控制器给的指令信号某些系统里控制器会输出转矩指令或转速指令模拟量同样需要电平匹配位置传感器接口旋变激励、旋变正余弦信号回传或者编码器脉冲信号。做接线配置前先查清楚所有IO板卡的输入输出范围和被测控制器的信号电平一个不匹配就直接干烧端口。我们项目上专门做了一组信号调理板把仿真器的IO信号统一调理到控制器能接受的电平范围。这里有个细节值得提旋变信号模拟不能省事旋变的激励频率和幅值、正余弦信号的相位误差都要按真实旋变更精确地模拟出来否则控制器的角度解码算法一开始就走偏后面全废。3.3 CAN/CANFD总线通讯的配置双电机控制器和上位机或者整车控制器之间通常用CAN总线通讯报文的周期、数据长度、ID定义都要跟实车一致。在实时仿真环境里仿真器一般通过自带通讯板卡接入CAN总线网络。配置通讯时有三个关键点第一报文调度。双电机系统通常有两条CAN网络一条动力网两台电机控制器跟上位机通讯一条诊断网。两路CAN要分配好哪一路走控制指令、哪一路走状态反馈避免报文周期错乱导致总线仲裁延迟。建议控制报文周期固定在10ms或20ms诊断报文可以放长一些。第二CAN FD支持。新项目基本都是CAN FD了要注意仿真器板卡是否支持到2Mbps以上、64字节数据场。如果板卡只支持经典CAN而控制器已经配了CANFD通讯就通不了。第三总线负载率。加太多调试报文和捕获报文会让总线负载率飙到70%以上仲裁延时变大控制链路不稳。做性能测试的时候把总线负载率监控起来超标的时候优先砍掉非关键报文。4. 测试工况设计与典型用例实录4.1 分阶段推进先单电机后双电机双电机系统测试我建议走一个严格的推进路线不能一上来就双电机一起跑不然后续定位问题会非常痛苦。第一步单电机单独跑通。先让A电机在实时仿真环境里闭环转起来验证PWM链路、电流采样链路、旋变解码链路全部正常。然后再让B电机单独闭环同样验证。这个阶段重点检查的是相同的控制器硬件切换控制对象后是否都能正常工作有没有硬件通道不兼容。第二步双电机同时运行但各自独立负载。两台电机模型都运行但负载互不干涉。这一步用来确认FPGA资源充沛、两套模型实时性都够CPU上没有发生任务调度阻塞。实测时重点看两台电机的电流波形是否都干净有无相互干扰引起的高频噪声。第三步双电机耦合运行。把机械耦合方程带上两台电机通过虚拟轴系联动。这时才能开始测试真正的双电机协调控制逻辑转矩分配、主从控制、转矩限制优先级。第四步故障注入测试。在双电机正常运行的基础上注入各类故障信号观察控制器的容错响应。之前我们注入了一个A电机电流传感器断线故障控制器的响应是立即把A电机转矩清零把全部需求转矩切换到B电机同时设置A电机降级状态字。这种测试在实物台架上很难做因为传感器断线往往会造成真实的电流失控甚至炸驱动但仿真环境里我们可以放心地让故障“发生”并观察全过程。4.2 典型测试用例一览与判据用例编号测试场景操作内容核心观察参数合格判据TC01零速满载启动双电机同时0转速输出额定转矩电机电流、转矩响应时间两种电机转矩爬升时间小于标称值如50ms无振荡TC02转矩阶跃响应从20%阶跃到80%额定转矩d/q轴电流、转速跌落超调量10%稳定时间100msTC03双电机负载不平衡电机1带60%负载电机2带40%负载同一转速下两电机转矩分配转速偏差2%转矩分配误差5%TC04通讯丢帧在上位机模拟CAN报文随机丢帧控制器有无进入保护状态丢帧率5%时无故障停机TC05相间短路故障注入对电机1的AC相间注入短路信号直流母线电压波动、短路保护时间保护电路在50μs内响应另一台电机不受扰动TC06旋变信号故障旋变正余弦信号幅值异常控制器是否误判角度、是否进入安全状态控制器在10ms内识别故障并执行安全策略在实施测试时把每个用例的仿真模型状态做快照这样任何用例跑挂了都能精确恢复到故障前一刻的状态这个功能对定位复现问题非常有用。4.3 数据记录与自动化报告双电机系统的测点非常多两台电机的三相电流、直流母线电压、转速、转矩、各路PWM占空比和频率、CAN报文加起来上百个信号。实时仿真器通常在软硬件上都提供了示波器功能但我们项目的经验是不要过度依赖示波器尽量把数据记录做成自动化脚本。做法是把整个测试工况预先编成脚本序列每个用例自动执行、自动采集数据、自动抓取判据然后自动生成HTML或PDF测试报告。例如做双电机转矩分配工况扫描我让上位机自动给定一系列转矩组合0%、10%、20%……100%按矩阵扫描每个组合跑5秒钟采集稳态数据自动汇总成转矩分配误差表和转速偏差曲线。整个扫描过程全自动完成跑完一批数据就形成一份可交付的测试报告不需要人一直盯在屏幕前。这个功能不仅提升效率还让测试结果更加规范化、可追溯。5. 常见问题与调试经验实录5.1 数字发散先查步长和模型刚性实时仿真里第一个遇到的“翻车”场景一定是模型发散电流波形炸成雪花或者速度曲线变成刺猬状。排查顺序我建议这样先看解算步长和PWM载波频率的比值关系一个PWM周期至少要有10个以上的解算点再看模型的电气时间常数如果步长远大于L/R的数值数值积分必然不稳定最后查看是否在模型里用了不合适的延迟环节或滤波器这些模块容易引入额外相位滞后导致发散。举个例子我们某次在模型里加了一个低通滤波器时间常数设成了0.5ms但FPGA解算步长是250ns相当于每步都让信号衰减到0.9995倍虽然也能跑但波形明显延迟严重。后来把滤波器的时间常数加大到5ms并把数字滤波器放到CPU层运行波形就正常了。这类问题在纯数字仿真里容易被忽略但在实时仿真里会直接表现为“仿真结果与实测对不上”。5.2 通电后电流波形总是不对PWM捕获配置的坑如果所有软件配置看上去没问题但电流波形依然不对大概率出在PWM捕获通道配置。最容易犯的错是PWM捕获的极性配置反了或者把高边和低边的PWM通道接反了。双电机系统里有两套三相六路PWM通道非常容易混淆接错之后模型里看似正常实际电流畸变严重控制器会反复报过流。排查办法就是做静态电平测试把控制器输出固定占空比比如50%通过IO板卡监控每一路PWM的电平状态和捕获时间确认六对通道一一对应没有交叉。这一步虽然耗时但能避免后面费更多时间排查电流畸变。我们发现通道接错其实非常好检查将占空比设定为固定值如果捕获到的占空比和设定值相差不到1%说明通道正确否则交叉概率很大。5.3 工具链配合离线仿真与实时仿真的一致性团队很多算法的开发起步于离线仿真转到实时仿真时经常发现模型的行为不一致。排除人为配置错误后通常是两类原因一是步长不一致导致的数值积分误差累积。离线仿真用的变步长求解器精度很高而实时仿真固定步长是微秒级别某些高频动态在模型中被截断。解决这个问题的经验是在离线仿真中同样改为固定步长并把步长设为实时仿真相同值先让离线仿真和实时仿真对齐再做HIL测试。二是接口环节差异。离线仿真中信号是纯内部的而实时仿真中信号经过IO板卡的DA转换、调理板等环节必然有信号延迟和电平量化误差。这些差异要在合理范围内通常在模型前级加入等效电气延迟做补偿。5.4 实用排查速查表现象可能原因排查方向与解决措施启动后电流飙升到限幅值旋变信号异常或PWM通道接反静态测试PWM通道映射检查旋变信号幅值与相位双击运行后仿真器CPU过载模型步长过大引起任务丢失或负载模型查表过大增大仿真步长或改用小步长FPGA模块缩小查表复杂度波形存在固定频率振荡机械轴系扭转模型阻尼过小增大阻尼系数Dc或把耦合刚度Kc调到真实值附近转矩指令响应存在明显异常CAN控制报文调度周期不匹配检查报文周期是否与控制器逻辑周期匹配必要时减小通讯频率两台电机模型负载运行时一台电流波形正常一台畸变FPGA资源分配不均或IO通道配置不一致检查FPGA资源占用情况单独验证每台电机的PWM捕获5.5 从仿真结果到最终交付的个人体会这套双电机实时仿真测试平台搭建完成并稳定运行后我们的测试效率提升了不止一个量级。过去在实物台架上做一个极限工况测试要准备一周现在在仿真环境里一个上午就能把所有异常工况跑完。更重要的是很多故障注入场景让我们发现了控制器底层逻辑里的缺陷而这些缺陷如果直接放到实物现场去暴露代价可能就是炸掉一台驱动器和一两千块的电机。最后分享一个自己总结的实用小技巧在做双电机实时仿真的时候给每台电机模型的负载转矩入口加一个可远程配置的数据记录脚本会省很多力。不管是在做转矩分配优化还是做容错算法标定都能直接在界面上调整每台电机的负载参数不需要反复改模型重新编译。这个小改动虽然不复杂但整个测试流程的灵活度一下子提高很多。做实时仿真测试最怕的不是模型精度差而是搭好了平台却不知道如何高效地跑起来。希望这篇文章能把双电机实时仿真从建模到测试的实现路径讲清楚帮大家避开那些让人头疼的坑。如果有朋友正搭这类系统欢迎交流各自的接口配置和故障注入经验。
返回列表