这个例子展示了如何使用systune
用于根据频率响应估计(FRE)结果调整永磁同步电机(PMSM)磁场定向控制(FOC)的命令。
在本例中,永磁同步电机(PMSM)的场向控制(FOC)使用Simscape™Electrical™组件在Simulink®中建模。万博1manbetx
mdl=“scdfocmotorSystune”;开放式系统(mdl)信号构建器路径=[mdl,“/ System_Inputs / Signal_Builder_Experiments”];
磁场定向控制以矢量形式控制三相定子电流。FOC基于投影,将一个时变和速度变的三相系统转化为两坐标时不变系统。这些变换是克拉克变换、帕克变换以及它们各自的逆变换。这些转换在Controller_Algorithm子系统中以块的形式实现。
使用FOC控制交流电机的优点包括:
直接和单独控制转矩和磁通
精确的瞬态和稳态管理
性能与直流电动机相似
Controller_Algorithm子系统包含所有三个PI控制器。外环PI控制器调节电机转速。两个内环PI控制器分别控制d轴和q轴电流。外环PI控制器的指令直接馈给q轴来控制转矩。对于PMSM来说,d轴的命令是零,因为这种类型的交流电机的转子磁链是固定的。
在调整控制器之前,用原始控制器检查速度响应,并将仿真结果保存到mat文件中,系统速度表
.现有速度PI控制器的增益P = 0.08655, I = 0.1997。电流PI控制器的增益P = 1, I = 200。
scdfocmotorSystuneOriginalResponse
用原始控制器绘制速度响应图。图显示了稳态误差和相对缓慢的瞬态行为。您可以调整控制器以获得更好的性能。
图形绘图(logsout_原始_单侧{2}.值);保留在…上绘图(logsout_原始_单侧{1}.值);图例(“原始控制器”,“速度参考”,“位置”,“东南”);网格在…上持有关图绘制(logsout_original_twoside {2} . values);持有在…上绘图(logsout_原始值{1}.两侧值);图例(“原始控制器”,“速度参考”,“位置”,“东北”);网格在…上持有关
要收集频率响应数据,请找到速度为的工作点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.
秒作为频率响应估计的工作点。
signalbuilder (SignalBuilderPath“活动组”op=findop(mdl,3);
使用模拟快照操作点作为模型的初始条件。在中更改模型初始值ctrlIniValues
结构处于这种稳定状态。对于d轴当前控制器,当前ID为0
A.对于q轴电流控制器,电流IQ为0.1
A.对于外环速度控制器,参考电流为0.122
速度是150
rad/s。对于PMSM设备,在永磁同步电动机
结构到150
拉德/秒。
设置参数(mdl,“LoadInitialState”,“上”);设置参数(mdl,“初始状态”,“getstatestruct (op) ');ctrlIniValues.currentDIC=0;ctrlIniValues.currentQIC=0.1;ctrlIniValues.speedIC=150;ctrlIniValues.speedCurrent=0.122;pmsm.RotorVelocityInit=150;
在模型中加入线性分析点进行频响估计。向VD和VQ添加开环输入点。添加开环输出点到ID, IQ和速度。此外,在速度测量中增加了断路分析点。
io = getlinio (mdl);
定义输入的正弦流信号10
到10,000
Rad /s,固定采样时间4 e-6
s、 即电流控制回路的采样时间sampleTime.CurrentControl
.正弦流信号幅度为0.25
V.该幅值确保设备在饱和极限内正确励磁。如果激励振幅太大或太小,则会产生不准确的频率响应估计结果。
= frest.createFixedTsSinestream (sampleTime.CurrentControl {10 1 e4});在。幅值= 0.25;
估计在指定的稳态工作点的频率响应op
,利用线性分析点io
以及在
.在完成频响估计后,修改得到的模型中的输入和输出通道名称,并绘制频响图。
estsys=frestimate(mdl、op、io、in);estsys.InputName={“Vd”,矢量量化的};estsys。OutputName = {“Id”,“智商”,“速度”};波德(estsys“。”)
systune
由频率响应估计结果得到状态空间线性系统模型。的选项集ssest
函数,将用于迭代参数估计的数值搜索方法设为Levenberg-Marquardt最小二乘搜索。估计一个有四种状态,周期为的状态空间模型4 e-6
秒。此步骤需要系统识别工具箱™软件。
选择= ssestOptions (“SearchMethod”,“lm”);optssest.Regularization.Lambda = 0.1;sys_singletune = ss (estsys 4“Ts”、sampleTime.CurrentControl选择);
为了调整PMSM FOC模型中的所有三个PI控制器,构建一个控制系统,如下所示的框图。
为d轴电流控制,q轴电流控制和速度控制定义三个可调谐的离散时间PID块和它们的I/ o。这些离散PID控制器的采样次数必须是一致的,与当前控制回路的采样时间相同。为了保证更快的控制器比原来的慢控制器有更好的近似,将每个PID控制器的离散积分器公式设为“梯形”
.
Cd=可调PID(“Cd”,“圆周率”,sampleTime.CurrentControl);Cd.IFormula=“梯形”;Cd.u=“Id_e”;Cd.y =“Vd”;Cq = tunablePID (“Cq”,“圆周率”,sampleTime.CurrentControl);Cq.ifformula=“梯形”;Cq。u =“Iq_e”;Cq.y=矢量量化的;Cspeed=可调PID(“Cspeed”,“圆周率”,sampleTime.CurrentControl);Cspeed.ifformula=“梯形”;Cspeed.u=“速度”;Cspeed。y =“智商参考”;
为内部和外部反馈回路创建三个求和连接。
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\u ref”,“speed_ref”};输出={“Id”,“智商”,“速度”};APs={“智商参考”,“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=调整目标。跟踪(“speed_ref”,“速度”,2/150,0.001,10);TR2=调谐目标。跟踪(“Id\u ref”,“Id”,2/2500);LS1=TuningGoal.LoopShape(“Id”,2500);LS2=TuningGoal.LoopShape(“速度”,150);MG1=调谐目标。增益(“speed_ref”,“智商参考”,2);MG2=调谐目标。增益(“speed_ref”,矢量量化的, 50);MG3 = TuningGoal。获得(“Id\u ref”,“Vd”, 20);
调整所有三个PI控制器使用systune
所有的调优目标都基于构建的模型ST0
.为增加找到满足所有设计要求的参数值的可能性,设置选项systune
从5个随机生成的参数值开始运行5个额外的优化。
选择= systuneOptions (“随机启动”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
,显示如何在优化模型中实现优化目标ST1
. 分别显示跟踪、回路形状和增益调谐目标。下图中的虚线表示调整目标,实线表示调整控制器的结果。
图viewGoal([TR1,TR2],ST1)图viewGoal([LS1,LS2],ST1)图viewGoal([MG1,MG2,MG3],ST1)
验证调优目标后,从调优模型中提取控制器参数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
ParamVelocityControlUNEP=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/s至150
rad/s at0.05
s、 然后去200
rad/s at0.8
s、 将模拟结果保存到logsout_调谐_一侧
MAT-file,系统速度表
.
signalbuilder (SignalBuilderPath“活动组”, 2); sim(mdl);logsout\u tuned\u单侧=logsout;拯救(“系统速度”,“logsout_tuned_one side”,“添加”)
配置模型以使用双边速度命令信号并模拟该模型。显示模型对由此产生的双边速度命令的速度响应0
rad/s至150
rad/s at0.05
S,反转方向为0.5
S,然后回到0
rad/s at0.8
s、 将模拟结果保存到logsout_tuned_twoside
MAT-file,系统速度表
.
signalbuilder (SignalBuilderPath“活动组”,3);sim(mdl);logsout\u tuned\u twoside=logsout;保存(“系统速度”,“logsout_tuned_twoside”,“添加”)
比较现有控制器增益和调整结果之间的电机速度响应。速度响应在1秒模拟中并排显示。速度响应更接近阶跃指令。在使用PI控制器调整后,稳态误差也减小systune
.
SCDFOC电机系统转速
在调整控制器后,电机响应改善了更快的瞬态响应和更小的稳态误差在两种类型的速度命令。
bdclose(mdl)