这个例子展示了如何使用systune
命令对基于频率响应估计(FRE)结果的永磁同步电机(PMSM)磁场定向控制(FOC)进行调整。
在本例中,永磁同步电机(PMSM)的场向控制(FOC)使用Simscape™Electrical™组件在Simulink®中建模。金宝app
mdl =“scdfocmotorSystune”;open_system(mdl) SignalBuilderPath = [mdl,“/ System_Inputs / Signal_Builder_Experiments”];
磁场定向控制以矢量形式控制三相定子电流。FOC基于投影,将一个时变和速度变的三相系统转化为两坐标时不变系统。这些变换是克拉克变换、帕克变换以及它们各自的逆变换。这些转换在Controller_Algorithm子系统中以块的形式实现。
使用FOC控制交流电机的优点包括:
转矩和磁通分别直接控制
精确的瞬态和稳态管理
性能与直流电动机相似
Controller_Algorithm子系统包含所有三个PI控制器。外环PI控制器调节电机转速。两个内环PI控制器分别控制d轴和q轴电流。外环PI控制器的指令直接馈给q轴来控制转矩。对于PMSM来说,d轴的命令是零,因为这种类型的交流电机的转子磁链是固定的。
在调整控制器之前,用原始控制器检查速度响应,并将仿真结果保存到mat文件中,SystunedSpeed.mat
.现有速度PI控制器的增益P = 0.08655, I = 0.1997。电流PI控制器的增益P = 1, I = 200。
scdfocmotorSystuneOriginalResponse
用原始控制器绘制速度响应图。图显示了稳态误差和相对缓慢的瞬态行为。您可以调整控制器以获得更好的性能。
图绘制(logsout_original_oneside {2} . values);持有在情节(logsout_original_oneside {1} . values);传奇(“原始控制器”,“速度参考”,“位置”,“东南”);网格在持有从图绘制(logsout_original_twoside {2} . values);持有在情节(logsout_original_twoside {1} . values);传奇(“原始控制器”,“速度参考”,“位置”,“东北”);网格在持有从
要收集频响数据,需要找到速度为的工作点150
Rad /sec,指定线性分析点,定义输入信号,并估计频率响应。
断开原控制器,用VD和VQ命令模拟开环系统模型。为了达到工作点,指定初始电压为-0.1 V的VD和3.465 V的VQ使用ctrlIniValues
结构。中设置开关信号连接恒压命令块switchIniValue
结构。
switchIniValue。openLoopD = 1;switchIniValue。openLoopQ = 1;ctrlIniValues。电压= -0.1;ctrlIniValues。voltageQ = 3.465;
捕获的模拟快照3.
SEC作为频率响应估计的工作点。
signalbuilder (SignalBuilderPath“activegroup”1);op = findop (mdl 3);
以仿真快照工作点作为模型的初始条件。中的模型初始值更改ctrlIniValues
结构处于这种稳定状态。对于d轴当前控制器,当前ID为0
A.对于q轴电流控制器,当前IQ为0.1
A.对于外环速度控制器,参考电流为0.122
速度是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, IQ和速度。此外,在速度测量中增加了断路分析点。
io = getlinio (mdl);
定义输入的正弦流信号10
来10,000
Rad /s,固定采样时间4 e-6
S,即电流控制回路的采样时间sampleTime。CurrentControl
.正弦流信号幅度为0.25
这个数量级确保装置在饱和极限内被适当地激发。如果激励幅值过大或过小,频响估计结果就会不准确。
= frest.createFixedTsSinestream (sampleTime.CurrentControl {10 1 e4});在。幅值= 0.25;
估计在指定的稳态工作点的频率响应人事处
,利用线性分析点io
输入信号在
.在完成频响估计后,修改得到的模型中的输入和输出通道名称,并绘制频响图。
estsys = frestimate (mdl, op, io);estsys。InputName = {Vd的,矢量量化的};estsys。OutputName = {“Id”,“智商”,“速度”};波德(estsys“。”)
systune
由频率响应估计结果得到状态空间线性系统模型。的选项集党卫军
函数,将用于迭代参数估计的数值搜索方法设为Levenberg-Marquardt最小二乘搜索。估计一个有四种状态,周期为的状态空间模型4 e-6
秒。此步骤需要系统识别工具箱™软件。
选择= ssestOptions (“SearchMethod”,“lm”);optssest.Regularization.Lambda = 0.1;sys_singletune = ss (estsys 4“t”、sampleTime.CurrentControl选择);
为了调整PMSM FOC模型中的所有三个PI控制器,构建一个控制系统,如下所示的框图。
为d轴电流控制,q轴电流控制和速度控制定义三个可调谐的离散时间PID块和它们的I/ o。这些离散PID控制器的采样次数必须是一致的,与当前控制回路的采样时间相同。为了保证更快的控制器比原来的慢控制器有更好的近似,将每个PID控制器的离散积分器公式设为“梯形”
.
Cd = tunablePID (“Cd”,“π”, sampleTime.CurrentControl);Cd.IFormula =“梯形”;Cd.u =“Id_e”;Cd.y =Vd的;Cq = tunablePID (“Cq”,“π”, sampleTime.CurrentControl);Cq。IFormula =“梯形”;Cq。u =“Iq_e”;Cq。y =矢量量化的;Cspeed = tunablePID (“Cspeed”,“π”, sampleTime.CurrentControl);Cspeed。IFormula =“梯形”;Cspeed。u =“speed_e”;Cspeed。y =“Iq_ref”;
为内部和外部反馈回路创建三个求和节点。
sum_speed = sumblk ('speed_e = speed_ref - speed');sum_id = sumblk ('Id = Id');sum_iq = sumblk ('Iq = Iq');
定义控制器调优的输入、输出和分析点。
输入= {“Id_ref”,“speed_ref”};输出= {“Id”,“智商”,“速度”};APs = {“Iq_ref”,Vd的,矢量量化的,“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。跟踪(“speed_ref”,“速度”, 2/150, 0.001, 10);TR2 = TuningGoal。跟踪(“Id_ref”,“Id”, 2/2500);LS1 = TuningGoal。LoopShape (“Id”, 2500);LS2 = TuningGoal。LoopShape (“速度”, 150);MG1 = TuningGoal。获得(“speed_ref”,“Iq_ref”2);MG2 = TuningGoal。获得(“speed_ref”,矢量量化的, 50);MG3 = TuningGoal。获得(“Id_ref”,Vd的, 20);
调整所有三个PI控制器使用systune
基于所构建模型的所有调优目标ST0
.为增加找到满足所有设计要求的参数值的可能性,设置选项systune
从5个随机生成的参数值开始运行5个额外的优化。
选择= systuneOptions (“RandomStart”5);rng(2) [ST1,fSoft] = systune(ST0,[TR1,TR2,LS1,LS2,MG1,MG2,MG3],opt);
最后:软= 1.01,=无穷,迭代= 73一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,最后迭代= 87:软= 1.01,=无穷,迭代= 59略微有些闭环极点稳定(衰变率接近1 e-07)最后:Final: Soft = 1.01, Hard = -Inf, Iterations = 66 Some closed-loop pole are slightly stable (decay rate near 1e-07
找到解决方案后使用systune
,展示了调优模型中如何实现调优目标相约
.分别显示跟踪、循环形状和增益优化目标。下图中的虚线表示调优目标,实线是调优控制器的结果。
图viewGoal([LS1,LS2],ST1)图viewGoal([MG1,MG2,MG3],ST1)
验证调优目标后,从调优模型中提取控制器参数相约
.通过调整PI控制器参数,更新PI控制器块的工作空间参数。
Cd = getBlockValue(相约,“Cd”);Cq = getBlockValue(相约,“Cq”);Cspeed = getBlockValue(相约,“Cspeed”);
d轴电流PI控制器具有调谐增益:
paramCurrentControlPD = Cd.Kp paramCurrentControlID = Cd.Ki
paramCurrentControlPD = 2.8898 paramCurrentControlID = 2.6370e+03
q轴电流PI控制器具有调谐增益:
paramCurrentControlPQ = Cq。Kp paramCurrentControlIQ = Cq。Ki
paramCurrentControlPQ = 1.4964 paramcurrentcontrolliq = 679.7979
速度PI控制器已调整增益:
paramVelocityControlTuneP = Cspeed。Kp paramVelocityControlTuneI = Cspeed。Ki
paramVelocityControlTuneP = 0.3713 paramVelocityControlTuneI = 0.0179
调优后所有三个控制器一起使用systune
时,控制器增益与原始值有显著差异。速度控制回路中的PID控制器有不同的采样时间,为0.001
第二。调优后的结果使用不同的采样时间4 e-6
第二,但控制器增益是相同的。为了确保不同采样时间下的控制器性能相同,本例中PID控制器的离散积分器格式为“梯形”。
使用调优控制器增益检查性能。首先,将模型初始化为零初始条件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
S,然后到200
在rad /秒0.8
s.将仿真结果保存为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
S,反转方向为0.5
S,然后回到0
在rad /秒0.8
s.将仿真结果保存为logsout_tuned_twoside
MAT-file,SystunedSpeed.mat
.
signalbuilder (SignalBuilderPath“activegroup”3);sim (mdl);logsout_tuned_twoside = logsout;保存(“SystunedSpeed”,“logsout_tuned_twoside”,“添加”)
比较现有控制器增益与调整结果之间的电机速度响应。速度响应在一秒钟的模拟中并排显示。speed响应更接近于step命令。对PI控制器进行调优后,系统的稳态误差减小systune
.
scdfocmotorSystunePlotSpeed
在调整控制器后,电机响应改善了更快的瞬态响应和更小的稳态误差在两种类型的速度命令。
bdclose (mdl)