主要内容

使用SYTUNE定向现场导向的控制器

此示例显示了如何使用systune根据频率响应估计(FRE)结果,指挥用于永磁同步机(PMSM)的面向现场控制(FOC)。

面向现场控制的控制

在该示例中,使用Simscape™电气™组件在Simulink®中建模了用于永磁同步机(PMSM)的面向现场控制(FOC)。金宝app

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轴的命令为零,因为转子通量用用于这种类型的AC电动机的永磁体固定。

在调整控制器之前,请检查与原始控制器的速度响应,并将模拟结果保存到MAT文件,SystunedSpeed.mat.现有速度PI控制器的增益P = 0.08655, I = 0.1997。当前PI控制器的增益均为P = 1和I = 200。

scdfocmotorSystuneOriginalResponse

绘制原始控制器的速度响应。该曲线表现出稳态误差和相对慢的瞬态行为。您可以调整控制器以实现更好的性能。

图绘图(logsout_original_oneside {2} .values);持有plot(logsout_original_oneside {1} .values);传奇('原始控制器''速度参考'“位置”'东南');网格持有离开图绘制(logsout_original_twoside {2} . values);持有情节(logsout_original_twoside {1} . values);传奇('原始控制器''速度参考'“位置”“东北”);网格持有离开

收集频率响应数据

要收集频率响应数据,请以速度找到操作点150Rad /sec,指定线性分析点,定义输入信号,并估计频率响应。

断开原控制器,用VD和VQ命令对开环系统模型进行仿真。为了达到工作点,指定初始电压为-0.1 V VD和3.465 V VQ使用Ctrlinivalues.结构。通过设置开关信号来连接恒定电压指令块switchIniValue结构。

switchInalue.Openloopd = 1;switchInalue.Openloopq = 1;Ctrlinivalues.VoltAged = -0.1;ctrlinivalues.voltageq = 3.465;

捕获一个模拟快照3.秒作为频率响应估计的操作点。

signalBuilder(SignalBuilderPath,'活跃群'1);op = findop (mdl 3);

使用模拟快照操作点作为模型的初始条件。更改模型初始值Ctrlinivalues.结构处于这个稳定状态。d轴电流控制器当前ID为0A. q轴电流控制器,电流IQ为0.1A.对于外环速度控制器,参考电流是0.122A,速度是150rad / s。对于永磁同步电机装置,设置转子速度在PMSM.结构150rad / 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;pmsm.rotorvelocityinit = 150;

在频响估计模型中加入线性分析点。将开环输入点添加到VD和VQ。将开环输出点添加到ID、IQ和速度。另外,在速度测量中增加了一个断环分析点。

IO = GetLinio(MDL);

定义输入的SINESTREAM信号1010,000RAD / S具有固定采样时间4 e-6S,即,当前控制回路的采样时间sampletime.currentControl..Sinestream信号幅度是0.25V.这种幅度确保工厂在饱和极限内恰当地激励。如果激励幅度要么过大或太小,它会产生不准确的频率响应估计结果。

= frest.createFixedTsSinestream (sampleTime.CurrentControl {10 1 e4});在。幅值= 0.25;

估计指定稳态操作点处的频率响应人事处,使用线性分析点IO.和输入信号.完成频率响应估计后,在所得到的模型中修改输入和输出通道名称,并绘制频率响应。

Estsys =嫉妒(MDL,OP,IO,IN);Estsys.InputName = {'vd''VQ'};Estsys.outputName = {'ID'“智商”“速度”};BODE(Estsys,“。”

调谐控制系统使用systune

由频响估计结果得到状态空间线性系统模型。属性的选项集SSEST.功能,将用于此迭代参数估计的数值搜索方法设置为Levenberg-Marquardt最小二乘搜索。估计具有四个州的状态模型和一段时间4 e-6秒。此步骤需要系统识别工具箱™软件。

选择= ssestOptions (“SearchMethod”'lm');optssest.regularization.lambda = 0.1;sys_singletune = ssest(estsys,4,“t”,sampletime.currentControl,Optssest);

为了调整PMSM FOC模型中的所有三个PI控制器,构建如下框图所示的控制系统。

定义三个可调的离散时间PID块及其I/ o用于d轴电流控制,q轴电流控制和速度控制。这些离散时间PID控制器的采样时间必须一致,这与当前控制回路的采样时间相同。为了确保更快的控制器比原来的更慢的控制器更好的逼近,设置每个PID控制器的离散积分公式为'梯形'

CD =调谐(“Cd”'pi', sampleTime.CurrentControl);cd.formula ='梯形';Cd.u ='id_e';CD.Y ='vd';cq =调谐化('cq''pi', sampleTime.CurrentControl);Cq。IFormula ='梯形';cq.u =“Iq_e”;Cq。y ='VQ';cspeed =调音(“Cspeed”'pi', sampleTime.CurrentControl);cspeed.formula ='梯形';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);

定义调整目标,包括跟踪和循环形状目标,以确保命令跟踪,以及预防饱和度的增益目标。对于速度控制器,请将跟踪带宽设置为150rad / s。该带宽用于跟踪和循环形状目标。此外,将DC错误设置为0.001反映最大稳态误差0.1%。将峰值错误设置为10.对于D轴电流控制器,请将跟踪带宽设置为2500Rad /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.gain('speed_ref''iq_ref'2);MG2 = TuningGoal。获得('speed_ref''VQ',50);mg3 = tuninggoal.gain('id_ref''vd', 20);

使用所有三个PI控制器使用systune所有的调优目标都基于所构建的模型ST0.增加查找符合所有设计要求的参数值的可能性,设置选项systune运行五个从五个随机生成的参数值开始的额外优化。

选择= systuneOptions ('OrmyStart'5);RNG(2)[ST1,FSOFT] = SYSTUNE(ST0,[TR1,TR2,LS1,LS2,MG1,MG2,MG3],OPT);
FINE:SOFT = 1.01,硬= -INF,迭代= 73一些闭环磁点略微稳定(衰减率近1E-07)最终:软= 1.01,硬= -INF,迭代= 87最终:SOFT = 1.01,硬= -Inf,迭代= 59一些闭环磁极略微稳定(衰减率接近1E-07)最终:软= 1.01,硬= -INF,迭代= 66一些闭环杆略微稳定(近衰减率1E-07)FOLE:SOFT = 1.01,硬= -INF,迭代= 61一些闭环杆略微稳定(衰减率近1E-07附近)最终:软= 1.01,硬= -INF,迭代= 60

找到解决办法后使用systune,显示调优模型中如何满足调优目标相约.分别显示跟踪,循环形状和增益调谐目标。下图中的虚线表示调整目标和实线是调谐控制器的结果。

figure viewGoal([TR1,TR2],ST1) figure viewGoal([LS1,LS2],ST1) figure viewGoal([MG1,MG2,MG3],ST1)

验证调整目标后,从调谐模型中提取控制器参数相约.使用调谐PI控制器参数更新PI控制器块的工作区参数。

Cd = getBlockValue(相约,“Cd”);cq = getblockValue(ST1,'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 paramcurrentcontroliq = 679.7979

速度PI控制器调整了:

paramVelocityControlTuneP = Cspeed。Kp paramVelocityControlTuneI = Cspeed。Ki
paramVelocityControlTuneP = 0.3713

使用三个控制器一起使用systune,控制器增益与初始值有显著差异。速度控制回路中的PID控制器有不同的采样时间,即0.001第二。调谐结果使用不同的采样时间4 e-6第二,但控制器收益是一样的。为了确保控制器性能与不同的采样时间相同,在该示例中,PID控制器的离散积分器格式是“梯形”。

验证调谐控制器

使用调谐的控制器增益检查性能。首先,使用该方法将模型初始化为零初始条件Ctrlinivalues..通过设置开关信号来连接PID控制器块switchIniValue并为PMSM工厂模型设置适当的初始条件。

switchInalue.openloopq = 0;switchInalue.OpenLoopd = 0;Ctrlinivalues.Currentdic = 0;Ctrlinivalues.VoltAgated = 0;ctrlinivalues.currentqic = 0;ctrlinivalues.voltageq = 0;ctrlinivalues.speedic = 0;ctrlinivalues.speedcurrent = 0;pmsm.rotorvelocityinit = 0;set_param(mdl,'loadInitialstate''离开'

配置模型以使用单面速度指令信号并模拟模型。显示模型的速度响应到从中升起的单面速度命令0rad /年代150在rad /秒0.05然后,然后到200.在rad /秒0.8s.将仿真结果保存到logsout_tuned_oneside.MAT-file,SystunedSpeed.mat

signalBuilder(SignalBuilderPath,'活跃群',2);sim (mdl);logsout_tuned_oneside = logsout;保存(“SystunedSpeed”“logsout_tuned_oneside”'-附加'

配置模型以使用双面速度指令信号并模拟模型。显示模型到升起的双面速度命令的速度响应0rad /年代150在rad /秒0.05S,逆转方向0.5S,然后回到0在rad /秒0.8s.将仿真结果保存到logsout_tuned_twosideMAT-file,SystunedSpeed.mat

signalBuilder(SignalBuilderPath,'活跃群'3);sim (mdl);logsout_tuned_twoside = logsout;保存(“SystunedSpeed”'logsout_tuned_twoside''-附加'

比较现有控制器增益和调谐结果之间的电机速度响应。速度响应在一秒钟的模拟中并排显示。速度响应更接近step命令。对PI控制器进行调整后,稳态误差也减小systune

scdfocmotorsystunebeed

在调整控制器之后,电机响应在两种类型的速度命令下提高了更快的瞬态响应和较小的稳态误差。

BdClose(MDL)

另请参阅

相关的话题