这个例子展示了如何使用Systune.
根据频率响应估计(FRE)结果,指挥用于永磁同步机(PMSM)的面向现场控制(FOC)。
在本例中,永磁同步电机(PMSM)的场向控制(FOC)使用Simscape™Electrical™组件在Simulink®中建模。万博1manbetx
mdl ='scdfocmotorsystune';Open_System(MDL)SignalBuilderPath = [MDL,'/ system_inputs / signal_builder_experiments'];
面向现场的控制控制作为载体的3相定子电流。FOC基于投影,其将三相时间相关和速度相关的系统转换为双坐标时间不变系统。这些变换是Clarke转换,公园转换及其各自的逆变换。这些变换在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);hold上plot(logsout_original_oneside {1} .values);传说(“原始控制器”那“速度参考”那'位置'那“东南”);网格上hold关闭图绘图(logsout_original_twoside {2} .values);hold上plot(logsout_original_twoside {1} .values);传说(“原始控制器”那“速度参考”那'位置'那'东北');网格上hold关闭
要收集频率响应数据,请以速度找到操作点150.
RAD / SEC,指定线性分析点,定义输入信号,并估计频率响应。
断开原始控制器,并使用VD和VQ命令模拟开环系统模型。要到达操作点,请指定用于VD的-0.1V的初始电压和3.465 V使用VQCtrlinivalues.
结构。中设置开关信号连接恒压命令块切换
结构。
switchIniValue。openLoopD = 1;switchIniValue。openLoopQ = 1;ctrlIniValues。电压= -0.1;ctrlIniValues。voltageQ = 3.465;
捕获模拟快照3.
秒作为频率响应估计的操作点。
signalbuilder (SignalBuilderPath'活跃群'1);op = findop (mdl 3);
使用模拟快照操作点作为模型的初始条件。更改模型初始值Ctrlinivalues.
结构处于这种稳定状态。对于D轴电流控制器,当前ID是0.
A.对于Q轴电流控制器,当前IQ是0.1
A.对于外环速度控制器,参考电流是0.122
A和速度在于150.
rad / s。对于PMSM植物,请设置转子速度PMSM.
结构到150.
rad / s。
set_param(mdl,'loadInitialstate'那'开');set_param(mdl,'InitialState'那'getstatectruct(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,固定采样时间4E-6
S,即,当前控制回路的采样时间sampletime.currentControl.
.正弦流信号幅度为0.25
这个数量级确保装置在饱和极限内被适当地激发。如果激励幅值过大或过小,频响估计结果就会不准确。
在= frest.createfixedtssinestream(sampletime.currentcontrol,{10,1e4});in.plitude = 0.25;
估计指定稳态操作点处的频率响应op.
,利用线性分析点IO.
和输入信号in.
.在完成频响估计后,修改得到的模型中的输入和输出通道名称,并绘制频响图。
Estsys =嫉妒(MDL,OP,IO,IN);Estsys.InputName = {'vd'那矢量量化的};Estsys.outputName = {'id'那'智商'那'速度'};BODE(Estsys,'。')
Systune.
从频率响应估计结果获得状态空间线性系统模型。使用选项设置为SSEST.
函数,将用于迭代参数估计的数值搜索方法设为Levenberg-Marquardt最小二乘搜索。估计一个有四种状态,周期为的状态空间模型4E-6
秒。此步骤需要系统识别工具箱™软件。
optssest = ssestoptions('SearchMethod'那'lm');optssest.regularization.lambda = 0.1;sys_singletune = ssest(estsys,4,“t”、sampleTime.CurrentControl选择);
为了调整PMSM Foc模型中的所有三个PI控制器,构造一个控制系统,如下框图所示。
为D轴电流控制,Q轴电流控制和速度控制定义三个可调谐的离散时间PID块及其I / O.这些离散时间PID控制器的采样时间必须是一致的,这与当前控制环采样时间相同。与原始较慢的控制器相比,确保更好的控制器更好的控制器近似,将每个PID控制器设置为离散集成器公式'梯形'
.
Cd = tunablePID ('CD'那“π”,sampletime.currentControl);cd.formula ='梯形';cd.u ='id_e';Cd.y ='vd';cq =调谐化(“Cq”那“π”,sampletime.currentControl);cq.formula ='梯形';Cq。u ='IQ_E';cq.y =矢量量化的;cspeed =调音('cspeed'那“π”,sampletime.currentControl);cspeed.formula ='梯形';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 = connect(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。跟踪('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”那矢量量化的,50);mg3 = tuninggoal.gain('id_ref'那'vd'20);
调整所有三个PI控制器使用Systune.
基于构造模型的所有调整目标ST0.
.增加查找符合所有设计要求的参数值的可能性,设置选项Systune.
从5个随机生成的参数值开始运行5个额外的优化。
选择= systuneOptions('OrmyStart'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(ST1,'CD');cq = getblockValue(ST1,“Cq”);cspeed = getblockValue(ST1,'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
第二。调谐结果使用不同的采样时间4E-6
第二,但控制器增益是相同的。为了确保不同采样时间下的控制器性能相同,本例中PID控制器的离散积分器格式为“梯形”。
使用调谐控制器增益检查表演。首先,将模型初始化为其零初始条件使用Ctrlinivalues.
.通过设置开关信号连接PID控制器块切换
并为PMSM工厂模型设置适当的初始条件。
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在0.05
然后,然后到200.
rad / s在0.8
s.将仿真结果保存为logsout_tuned_oneside
在垫子文件中,systunedspeed.mat.
.
signalbuilder (SignalBuilderPath'活跃群',2);SIM(MDL);logsout_tuned_oneside = logsout;保存('systunedspeed'那'logsout_tuned_oneside'那'-append')
配置模型以使用双边速度命令信号并模拟该模型。显示模型对由此产生的双边速度命令的速度响应0.
rad / s到150.
rad / s在0.05
S,逆转方向0.5
然后回到0.
rad / s在0.8
s.将仿真结果保存为logsout_tuned_twoside.
在垫子文件中,systunedspeed.mat.
.
signalbuilder (SignalBuilderPath'活跃群',3);SIM(MDL);logsout_tuned_twoside = logsout;保存('systunedspeed'那“logsout_tuned_twoside”那'-append')
比较现有控制器增益与调谐结果之间的电机速度响应。速度响应在一秒秒模拟上并排示出。速度响应更接近步骤命令。在PI控制器调谐后,稳态误差也降低Systune.
.
scdfocmotorsystunebeed
在调整控制器之后,电机响应在两种类型的速度命令下提高了更快的瞬态响应和较小的稳态误差。
BdClose(MDL)