本示例展示了如何使用Simulink®Control Design™软件对计算延迟和采样效果建模。金宝app
计算延迟和采样效应会严重影响控制系统的性能。通常,如果不考虑这些因素,系统的闭环响应将成为振荡和不稳定的。因此,在建模控制系统时,应该包括计算延迟和采样效应,以准确地设计和模拟闭环系统。
有两种设计补偿器的方法来考虑计算延迟和采样的影响。第一种方法是在离散域设计一个控制器,通过离散化对象来捕捉采样的影响。第二种方法是在连续域中设计控制器。这种方法有时更方便,但在这种情况下,必须考虑到计算延迟和采样的影响。在本例中,您将应用这两种方法来使用Simulink control Design软件重新设计控制系统。金宝app
在下面的示例模型中,初始补偿器从示例中的补偿器获得以下增益单回路反馈/预滤波补偿器设计.
P = 0.0018222 I = 0.0052662
第一个模型有一个离散的控制系统实现。
mdl =“scdspeed_compdelay”;open_system (mdl)
在这个模型中,计算延迟块模拟了计算延迟的影响。延时等于控制器的采样时间,这是最坏的情况。零阶保持块模拟采样对系统响应的影响。最后,采用前向欧拉采样方法对速度控制器进行离散化,该控制器采用PID控制器块实现。
您可以通过模拟系统的响应来看到采样的效果。
首先对控制器离散化,采样时间Ts = 0.1秒,并对模型进行仿真。
Ts = 0.1;sim (mdl);T2 = simout.time;Y2 = simout.signals.values;
接下来,用增加的采样时间Ts = 0.25秒来模拟模型。
Ts = 0.25;sim (mdl);T3 = simout.time;Y3 = simout.signals.values;
第二个模型是连续模型。
mdl_continuous =“scdspeed_contcomp”;open_system (mdl_continuous)
模拟连续模型的响应。
sim (mdl_continuous);T1 = simout.time;Y1 = simout.signals.values;
绘制离散模型和连续模型的模拟图。随着采样时间的增加,响应的振荡性更强。
情节(T1, Y1,“k”, T2, Y2,“r”、T3、Y3‘g’)包含(“时间(秒)。”) ylabel (“发动机转速响应”)传说(“连续控制器”,'Ts = 0.1','Ts = 0.25'网格)
为了消除最慢采样时间Ts = 0.25的闭环系统的振荡影响,必须重新设计补偿器。
首先,使用离散化的工厂版本重新设计控制器。您可以以类似的方式重新设计补偿器单回路反馈/预滤波补偿器设计.调谐补偿器具有以下增益。
P = 0.00066155 I = 0.0019118795
set_param (“scdspeed_compdelay / PID控制器”,“P”,“0.00066155”) set_param (“scdspeed_compdelay / PID控制器”,“我”,“0.0019118795”)
用Ts = 0.25秒的采样时间模拟得到的闭环系统。稍后在示例中检查这些结果。
Ts = 0.25;sim (mdl);Td = simout.time;Yd = simout.signals.values;
第二种方法是重新设计具有连续等效单位延迟和零阶保持器的控制器。
对于本例,使用以下零阶保持动态。
要在模型中指定这些动态,右键单击Zero-Order Hold块并选择线性分析>指定所选块线性化.在“块线性化”对话框中,指定零阶保持动力学的表达式。
同样,您可以使用以下代码指定块线性化。
zohblk =“scdspeed_compdelay /零持有”;set_param (zohblk“SCDEnableBlockLinearizationSpecification”,“上”= struct(“规范”,”(1-ss(1“InputDelay Ts)) * ss (0, 1, 1, 0) / Ts ',…“类型”,“表情”,…“ParameterNames”,'',…“ParameterValues”,'');set_param (zohblk“SCDBlockLinearizationSpecification”代表)
使用连续传输延迟指定计算延迟的线性化。
使用以下代码指定延迟块的线性化。
delayblk =scdspeed_compdelay /计算延迟的;set_param (delayblk“SCDEnableBlockLinearizationSpecification”,“上”= struct(“规范”,“党卫军(1“InputDelay Ts) ',…“类型”,“表情”,…“ParameterNames”,'',…“ParameterValues”,'');set_param (delayblk“SCDBlockLinearizationSpecification”代表)
对于连续时间的延迟和采样效应模型,控制器设计的分析仍然停留在连续域。
接下来,用Ts = 0.1和0.25秒的延迟线性化模型。为此,首先设置输入和输出线性分析点。
Io (1) = linio(“scdspeed_compdelay / PID控制器”, 1“输入”);Io (2) = linio(“scdspeed_compdelay /零持有”, 1“openoutput”);
在Ts = 0.1处线性化模型。
Ts = 0.1;Sys2 =线性化(mdl,io);
在Ts = 0.25处线性化模型。
Ts = 0.25;Sys3 =线性化(mdl,io);
最后,在不考虑采样和计算延迟的情况下,对模型进行线性化处理。
Io (1) = linio(“scdspeed_contcomp / PID控制器”, 1“输入”);Io (2) = linio('scdspeed_contcomp/rad//s to rpm', 1“openoutput”);Sys1 =线性化(mdl_continuous,io);
您可以使用发动机的线性模型来检查计算延迟对频率响应的影响。在这种情况下,由于采样引入的延迟,系统的相位响应显著降低。
P = bodeoptions(“cstprefs”);p.Grid =“上”;p.PhaseMatching =“上”;bodeplot (sys1“k”sys2,“r”sys3,‘g’, {1e-2,1e2},p)“连续模式”,'Ts = 0.1','Ts = 0.25',“位置”,“西南”)
利用采样时间最慢的模型,利用模型中的技术对补偿器进行了重新设计单回路反馈/预滤波补偿器设计.这样做会得到以下PI增益。
P = 0.00065912 I = 0.001898342
在控制器中设置这些增益。
set_param (“scdspeed_compdelay / PID控制器”,“P”,“0.00065912”) set_param (“scdspeed_compdelay / PID控制器”,“我”,“0.001898342”)
用采样时间Ts = 0.25模拟得到的闭环系统。
sim(mdl) Tc = simout.time;Yc = simout.signals.values;
画出设计的反应。采用这两种方法重新设计的控制系统产生了相似的控制器。这个例子展示了计算延迟和离散化的影响。这些影响降低了系统的稳定裕度,但是当你正确地建模一个控制系统时,你可以实现期望的闭环行为。
情节(T1, Y1,“k”、T3、Y3“b”Td码,“米”、Tc、Yc“r”)包含(“时间(秒)。”) ylabel (“发动机转速响应”)传说(连续补偿器(原始),离散补偿器(原始),…离散补偿器(离散重新设计),…离散补偿器(连续重新设计),…“位置”,“东南”网格)
bdclose (“scdspeed_contcomp”) bdclose (“scdspeed_compdelay”)