这个例子说明了如何使用systune
基于频率响应估计(FRE)结果的永磁同步电机磁场定向控制(FOC)调优指令。
在这个例子中,磁场定向控制(FOC)的永久磁铁同步机(PMSM)在使用的Simulink™的Simscape电气™组件建模。万博1manbetx
mdl =“scdfocmotorSystune”;SignalBuilderPath = [mdl,'/ System_Inputs / Signal_Builder_Experiments'];
场定向控制的控制3相定子电流作为载体。FOC是基于预测,将变换3相时间依赖性和速度相关的系统为两坐标时不变系统。这些转换的克拉克变换,Park变换,以及它们各自的逆变换。这些转换实现为Controller_Algorithm子系统内的块。
使用FOC控制交流电机的优点包括:
扭矩和磁通直接控制和分开控制
准确的瞬态和稳态管理
性能与直流电动机相似
该Controller_Algorithm子系统包含所有三个PI控制器。外环PI控制器调节电机的速度。两个内环PI控制器分别控制的d轴和q轴电流。从外环PI控制器的命令直接供给到q轴到控制转矩。为d轴的指令是零PMSM因为转子磁通上固定有对这种类型的AC电动机的永久磁铁。
整定控制器之前,检查与原来的控制器的速度响应和仿真结果保存到MAT文件,SystunedSpeed.mat
。现有的速度PI控制器增益P = 0.08655, I = 0.1997。目前PI控制器的增益均为P = 1和I = 200。
scdfocmotorSystuneOriginalResponse
要收集频率响应数据,请以速度找到一个工作点150
rad/sec,指定线性分析点,定义输入信号,并估计频率响应。
断开原控制器,用VD和VQ命令仿真开环系统模型。为达到工作点,使用。为VD指定初始电压为-0.1 V, VQ指定初始电压为3.465 VctrlIniValues
结构。恒定电压指令块是通过在设定开关信号连接switchIniValue
结构。
switchIniValue.openLoopD = 1;switchIniValue.openLoopQ = 1;ctrlIniValues.voltageD = -0.1;ctrlIniValues.voltageQ = 3.465;
捕获模拟快照3.
秒作为频率响应估计的工作点。
signalbuilder(SignalBuilderPath,'activegroup'1);op = findop (mdl 3);
使用模拟快照工作点作为模型的初始条件。更改模型的初始值ctrlIniValues
使结构处于稳定状态。对于d轴电流控制器,电流ID为0
A. q轴电流控制器,当前IQ为0.1
A.外环速度控制器的参考电流为0.122
A的速度是150
rad / s。对于永磁同步电动机装置,将转子速度设为永磁同步电机
结构150
rad / s。
set_param(MDL,'LoadInitialState',“上”);set_param(MDL,“InitialState”,“getstatestruct (op) ');ctrlIniValues。currentDIC = 0;ctrlIniValues。currentQIC = 0.1;ctrlIniValues。speedIC = 150;ctrlIniValues。speedCurrent = 0.122;永磁同步电动机。RotorVelocityInit = 150;
在模型中加入线性分析点,进行频率响应估计。在VD和VQ上增加开环输入点。增加开环输出点的ID,智商,和速度。另外,在速度测量中增加了断路分析点。
IO = getlinio(MDL);
定义输入sinestream信号10
来万
rad/秒,采样时间为4 e-6
二、正弦信号的幅度为0.25
这个量级保证了植物在饱和限度内被适当地激发。如果激励幅值过大或过小,会产生不准确的频响估计结果。
在= frest.createFixedTsSinestream (4 e-6, {10 1 e4});在。幅值= 0.25;
估计在指定的稳态工作点的频率响应人事处
,用线性分析的点IO
输入信号在
。在完成频率响应估计之后,修改在所得模型的输入和输出信道名称,并绘制频率响应。
estsys = frestimate (mdl, op, io);estsys。InputName = {Vd的,'VQ'};estsys.OutputName = {“Id”,“智商”,“速度”};博德(estsys,“。”)
systune
从频率响应估计结果得到状态空间线性系统模型。属性设置的选项党卫军
函数,将用于该迭代参数估计的数值搜索方法设置为Levenberg-Marquardt最小二乘搜索。估计具有四个状态和一个周期的状态空间模型4 e-6
秒。
选择= ssestOptions (“SearchMethod”,'LM');optssest.Regularization.Lambda = 0.1;sys_singletune = ssest(estsys,4,“t”4 e-6选择);
为了调优PMSM FOC模型中的三个PI控制器,我们需要构建一个控制系统,如下图所示。
定义三个可调离散时间PID块和他们的I/Os为d轴电流控制,q轴电流控制,和速度控制。
Cd = tunablePID (“Cd”,“π”4 e-6);Cd.u =“Id_e”;Cd.y =Vd的;CQ = tunablePID(“Cq”,“π”4 e-6);Cq。u =“Iq_e”;Cq。y ='VQ';Cspeed = tunablePID (“Cspeed”,“π”4 e-6);Cspeed。u =“speed_e”;Cspeed。y =“Iq_ref”;
创建内进出反馈环的三个求和点。
sum_speed = sumblk('speed_e = speed_ref - speed');sum_id = sumblk ('Id_e = Id_ref - Id');sum_iq = sumblk ('Iq_e = Iq_ref - Iq');
定义输入,输出,以及用于控制器整定分析点。
输入= {'值Id_ref',“speed_ref”};输出= {“Id”,“智商”,“速度”};APs = {“Iq_ref”,Vd的,'VQ',“Id”,“智商”,“速度”};
最后,组装完整的控制系统,ST0
,使用这些组件。
ST0 =连接(sys_singletune、Cd、Cq Cspeed, sum_speed, sum_id, sum_iq,输入,输出,APs);
定义调优目标,包括确保命令跟踪的跟踪和循环形状目标,以及防止饱和的目标。对于速度控制器,将跟踪带宽设置为150
rad / s。这个带宽用于跟踪和环路形状目标。另外,将DC错误设置为0.001
反映的最大稳态误差0.1
%。设置峰值错误10
。对于d轴电流控制器,跟踪带宽设置为2500
rad/s,这是比外环速度控制器快得多。为了防止控制器饱和,指定目标来限制所有三个控制器的增益。
TR1 = TuningGoal.Tracking (“speed_ref”,“速度”, 2/150, 0.001, 10);TR2 = TuningGoal.Tracking ('值Id_ref',“Id”, 2/2500);LS1 = TuningGoal.LoopShape (“Id”, 2500);LS2 = TuningGoal.LoopShape (“速度”, 150);MG1 = TuningGoal.Gain (“speed_ref”,“Iq_ref”2);MG2 = TuningGoal.Gain (“speed_ref”,'VQ',50);MG3 = TuningGoal.Gain('值Id_ref',Vd的, 20);
调使用这三种PI控制器systune
所有调优目标都基于所构建的模型ST0
。为了提高发现满足所有设计要求的参数值,设置选项的可能性systune
运行五个额外优化从五个随机生成的参数值开始。
选择= systuneOptions (“RandomStart”5);rng (2);[相约,fSoft] = systune (ST0 (TR1、TR2 LS1, LS2, MG1, MG2, MG3],选择);
最后:软= 1.03,=无穷,迭代= 104一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,迭代= 65一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,最后迭代= 62:软= 1.01,=无穷,迭代= 68一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,最后迭代= 63:Soft = 1.01, Hard = -Inf, Iterations = 50
找到解决办法后使用systune
,显示调优模型中如何实现调优目标相约
。分别显示跟踪、环路形状和增益调整目标。下图中的虚线表示调优目标,实线表示调优控制器的结果。
图viewGoal([TR1,TR2],ST1);图viewGoal([LS1,LS2],ST1);图viewGoal([MG1,MG2,MG3],ST1);
从调谐模型验证调谐目标,提取控制器参数后相约
。使用调谐PI控制器的参数来更新PI控制器块工作空间参数。
Cd = getBlockValue(相约,“Cd”);CQ = getBlockValue(ST1,“Cq”);Cspeed = getBlockValue(相约,“Cspeed”);paramCurrentControlPD = Cd.Kp;paramCurrentControlID = Cd.Ki;paramCurrentControlPQ = Cq.Kp;paramCurrentControlIQ = Cq.Ki;paramVelocityControlTuneP = Cspeed.Kp;paramVelocityControlTuneI = Cspeed.Ki;
调优后,所有三个控制器一起使用systune
,控制器收益:
速度PI控制器增益P = 0.3609, I = 0.1434。
d轴电流PI控制器具有P = 2.7877的增益和I = 2676.7。
q轴电流PI控制器增益P = 1.3371, I = 881.3072。
使用调谐控制器增益检查性能。首先,使用初始化模型为零初始条件ctrlIniValues
。通过设置开关信号连接PID控制器模块switchIniValue
并为永磁同步电机装置模型设定合适的初始条件。
switchIniValue。openLoopQ = 0;switchIniValue。openLoopD = 0;ctrlIniValues。currentDIC = 0;ctrlIniValues。电压= 0;ctrlIniValues。currentQIC = 0;ctrlIniValues。voltageQ = 0;ctrlIniValues。speedIC = 0;ctrlIniValues。speedCurrent = 0; pmsm.RotorVelocityInit = 0; set_param(mdl,'LoadInitialState',“关”);
配置模型中使用的单侧的速度指令信号和模拟模型。表明该模型,以从上升单面速度指令的速度响应0
rad /年代150
在rad /秒0.05
秒,然后以200
在rad /秒0.8
将仿真结果保存为logsout_tuned_oneside
MAT-file,SystunedSpeed.mat
。
signalbuilder(SignalBuilderPath,'activegroup',2);sim (mdl);logsout_tuned_oneside = logsout;保存(“SystunedSpeed”,“logsout_tuned_oneside”,'-附加')
配置为使用一个双面的速度指令信号的模型和仿真模型。表明该模型,以从上升双面速度指令的速度响应0
rad /年代150
在rad /秒0.05
点,反向,点0.5
然后回到0
在rad /秒0.8
将仿真结果保存为logsout_tuned_twoside
MAT-file,SystunedSpeed.mat
。
signalbuilder(SignalBuilderPath,'activegroup'3);sim (mdl);logsout_tuned_twoside = logsout;保存(“SystunedSpeed”,'logsout_tuned_twoside','-附加')
比较现有控制器增益和调谐结果之间的电机速度响应。速度响应是并排显示在一秒钟的模拟。速度响应更接近于step命令。经过PI控制器的调整,稳态误差也减小了systune
。
scdfocmotorSystunePlotSpeed
调谐控制器后,电机响应与这两种类型的速度的命令下更快的瞬态响应和更小的稳态误差提高。
bdclose(MDL)