Simulink 自动代码生成电机控制——永磁同步电机参数获取

文章介绍了电机参数测量的重要性,包括极对数、电阻(Rs)、电感(Ld和Lq)的测量方法,以及磁链的计算。提供了使用电桥测试仪和时间常数法的详细步骤,并强调参数准确性对电机控制的影响。总结中提到,不同方法的误差虽存在,但正确测量能提高电机运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

前言

极对数测量

电阻测量(Rs)

电感测量(Ld和Lq)

磁链测量

总结


前言

在建模之前或者需要更换一个新电机,需要获取目标电机的电气参数,如果参数不对,对于电流环参数的整定,无传感观测器角度观测会有很大影响,曾经有同学问我说仿真都挺好的但是在实际电机上跑的时候角度观测器发散,不管怎么调参数都会有问题。最后问他的电机参数怎么来的,有些是猜的,有些是凑的,有些是用ST的电机参数识别出来的,反正五花八门。不管怎么得到的电机参数,一定要保证建模电机的基本参数和实际参数不要有太大差别,不要超过两倍,越接近实际电机参数越好。但限于测试条件,有些手上没有电桥测试仪,不好获取电机参数,这里就总结一些获取电机参数的方法。当然如果电机厂家可以直接提供电机参数就更好了,这时候最好还是测量一下确保厂家给的电机参数是正确的,毕竟曾经踩过坑。

极对数测量

有些时候电机看不到有几对极,这时候可以用外加电压法来测:

1. 将电机的其中一相线缆连接在直流电压源的正接线柱,另外相线缆连接在直流电压源的
负接线柱上。
2. 将电源的电流限制设定为电机额定电流的 10%,可缓慢往上加,手动转动转轴,以便让
转轴转向在一个稳定的角度位置。
3. 在转子转动后的每个稳定位置做个标记。
4. 转子极对数即等于稳定位置的个数,也就是感觉顿了几次,极对数就是顿的次数。

电阻测量(Rs)

电阻测量的话直接用万用表可能精度不一定够,对于mR级的测量用精度高一些的万用表测量线电阻再除以2就可以了。用电桥测试仪的话直接测直流阻抗,如果用测电感的频率测试电阻会和实际偏差过大。这里实验用的小电机电阻还是比较大的,测出来的Rs=13.8/2=6.9R

电感测量(Ld和Lq)

 电机控制需要Ld和Lq, 需要测量出线电感,任意两端的电感,用电桥测试仪测试出Lab,Lac,Lbc,其中最大的除以2就是Lq, 最小的除以2就是Ld。也可以缓慢转动,找到最大和最小除以2即可。对于三角开接法就乘1.5就可以了。

 如果没有电桥测试仪就可以用 时间常数法来测试,下面举例对比一下:

前面已经测量出了电机的电阻Rs=6.9R,通过电桥测试仪测试出来的感量分别是:

Ld=0.00629H

Lq=0.00704H

接下来通过时间常数来测试并比较

根据一阶惯性环节的性质,当dq轴电流从0上升到稳态值的63.2%时,所经历的时间t刚好等于时间常数Ls/Rs,在得到定子电阻(Rs)值,可根据时间常数t得到电感(Ls)值

D轴电感测试接线:

顺序从上到下定义为abc, 测试D轴电感时,电流从a进b出,c悬空

Q轴电感测试接线 

顺序从上到下定义为abc, 测试Q轴电感时,电流从c进,a和b接一 起,接电源负

 

 施加电压后需要用示波器读取电流和电压,需要测量的时间就是从施加电压开始到电流稳态的63.2%。如下图:

在施加电压的时候需要注意:

1.根据电机的电阻值,合理施加对应的电压,如刚刚测试的电机阻值是6.9R,妄加的电压就可以放到13.8V,保证电流不要太大。电流也不要太小,影响精度。

2.用稳压电源的时候不要用稳压电源的开关来控制施加的电压,需要电压输出稳定直接接触电机的相线,稳压电源在开机的时候会给电容充电,时间单位可能是几十ms的量级

这里由于手上没有电流钳(有电流钳直接上),这里用的是采样电路来进行测试的,把采样电阻两端引出来,串到测试电路中。TP5接一个示波器的电压探头。然后观察施加电压过程TP5电压的变化 。

 

 测试结果:

这里只测试了TP5的电压(等效测试电流)

D轴电流波形:

稳态664mv, 664*0.632=420mv,标记一下,测试0-420的时间

 940us. 这就是需要测试出来的时间,进而可以算出电感。

L=940/10^6*Rs=0.006486H 对比电桥测试出来的结果,相差不是很大

 Q轴的测试同理

磁链测量

到这一步,电机的电感和电阻已经测试完成了,最后就是磁链参数,磁链和反电动势系数可以互相换算。先测试出电机的反电动势,示波器电压探头接其中两根相线,把电机拖动起来,测量以下参数:

计算一个周期的速度和对应的峰值电压,如下一个周期是8.696Hz,根据极对数,可以算出当前的转速是60*8.696/P=260.88RPM

 此时对应的峰值电压是2.2V。此时就可以算出电压常数Ke=1000/260.88*2.2=8.4329Vpeak/RPM

 1000RPM对应的角速度We = 2*Pi*(1000*p/60)=209.4 rad/s

                                            

 磁链就可以算出了来了:8.4329/(1.73*209.4)=0.0232V.s

不想一步步计算?直接上Matlab,前面计算出了

Ke=1000/260.88*2.2=8.4329Vpeak/RPM,打开PMSM模型,可以利用电机参数计算的模块,1000RPM对应的峰值电压计算出来填写进去就行了。可以看到计算出来的磁链和刚刚计算出来的一样。

总结

   以上介绍了如何测量计算电机参数,从实际测试效果来说,不管用电桥测试还是时间常数,都会因为测量有一定的误差,不过误差较小,不要太离谱的话正常跑电机是没有问题的, 通过不同的方法可以互相验证参数的可靠性,参数越接近实际电机参数,运行效果越好。可以根据实验条件自行选择,总比猜来得靠谱。

### 使用Simulink生成电机控制代码的方法 #### 创建和配置Simulink模型 为了使用Simulink生成用于电机控制的C语言代码,首先需要创建一个合适的Simulink模型来表示所期望的控制系统。这通常涉及选择适合特定应用类型的控制器组件,如PID控制器或更复杂的模型预测控制(MPC)[^1]。 对于永磁同步电机(PMSM),建立其精确的数学模型至关重要,该过程可能涉及到定义电机的具体参数及其动态行为特性,并将其转换为适用于仿真的形式——即所谓的传递函数。 ```matlab % 定义PMSM参数示例 Ld = 0.002; % d轴电感 (H) Lq = 0.002; % q轴电感 (H) R = 0.5; % 绕组电阻 (Ω) Ke = 0.1; % 反电动势常数 (V/rad/s) J = 0.01; % 转子惯量 (kg*m²) B = 0.001; % 阻尼系数 (Nm/(rad/s)) ``` #### 设计与验证控制策略 利用Control System Designer工具可以帮助完成对电流环路和其他关键部分的设计工作;此阶段还包括调整增益值直至达到满意的性能指标为止。此外,在实际部署之前应当充分测试整个闭环系统的响应情况以确保稳定性和准确性。 #### 设置Code Generation环境 一旦确认了设计方案的有效性,则可转向准备自动化编码流程: - 导航至“Hardware Implementation”页面指定目标硬件平台详情; - 切换到“Code Generation”标签页开启必要的选项以便支持后续编译链接步骤[^2]。 #### 实施代码生成 当上述准备工作完成后,便可以通过点击菜单栏中的相应按钮启动正式的代码生成功能。此时MATLAB/Simulink会依据预先设定好的规则自动生成对应的源文件(.c,.h等)供嵌入式开发人员进一步集成处理。 ```bash set_param('YourModelName', 'RTWVerboseBuildCommand','on'); slbuild('YourModelName') ``` #### 测试与优化生成后的代码 最后一步是对新产生的程序片段进行全面的功能检验,必要时还需针对具体应用场景做出针对性改进措施,比如减少不必要的计算负担从而加快实时运算效率[^4]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡洛斯伊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值