【V-Tiger】自动调整控制器增益,以优化建立时间、过冲和稳定性裕度、使用被控对象输入、输出阶跃响应来设计 PID 控制器研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

自从人工智能 (AI) 赢得了国际象棋、将棋和围棋等人类职业选手的青睐以来,人们对人工智能的期望一直在急剧增加。人工智能发展如此之快的原因之一是计算机处理速度的大幅提高,这使得在计算机中虚拟快速重复模拟比赛(如奥赛罗、将棋、围棋等)成为可能。最后,人工智能已经获得了超越人类专业人士的力量。同样在控制工程中,如果控制器的增益调谐实验可以在计算机中虚拟执行,那么有望通过类似AI的方法显着提高控制性能。“V-Tiger”是“Virtual Time-response based Iterative Gain Evaluation and Redesign”的缩写,它迭代:1)根据一次性实验数据计算插入某个控制器时闭环系统的虚拟时间响应,2)根据虚拟时间响应测量过冲和建立时间,以及3)评估和重新设计控制器增益,考虑稳定裕度。

关键词 数据驱动控制、时间响应、增益调谐。

V-Tiger是一种自动调整控制器增益的方法,旨在优化建立时间、过冲和稳定性裕度,它使用被控对象输入/输出阶跃响应来设计PID控制器。本方法的优越性在于可以通过计算机模拟来进行控制器调整,从而提高控制性能。 

控制领域的发展趋势是数据驱动控制,利用大量的实验数据拟合控制模型,实现更好的控制效果。 V-Tiger使用一次性实验数据计算插入某个控制器时闭环系统的虚拟时间响应。这种基于数据模型的方法不仅速度更快,还可以从实际过程中构建更准确的模型,从而实现更优质的控制效果。

通过V-Tiger方法,可以快速评估和重新设计控制器增益,考虑稳定裕度。其中,稳定裕度是保证闭环系统稳态误差、阻尼比和过冲都在合理范围内的关键因素。在控制系统设计中,经常需要在建立时间、过冲和稳态误差之间做出权衡。而采用V-Tiger方法可以更好地平衡这些因素,从而实现更好的控制效果。

V-Tiger是一种数据驱动的、基于虚拟实验的方法,能够通过迭代计算和控制器增益的重新设计,显著提高控制性能。它是控制领域发展趋势的重要组成部分,将为未来控制系统的设计和优化带来更为广阔的前景。

【V-Tiger项目】旨在开发一种智能方法,自动调整PID控制器的增益(比例Kp、积分Ki、微分Kd)以优化控制系统的性能,特别是在建立时间、过冲、以及稳定性裕度等方面。该研究利用被控对象的阶跃响应特性来指导控制器参数的设计,以下是研究的关键步骤和方法概述:

1. 系统辨识与模型建立

  • 阶跃响应测试:首先,对被控对象进行阶跃输入测试,记录输入和输出数据。这一步骤是为了获取系统的动态行为信息,如上升时间、峰值时间、稳态误差等。
  • 模型拟合:基于收集的数据,利用系统辨识技术(如最小二乘法、频率响应估计等)来建立被控对象的数学模型,通常采用一阶、二阶或更高阶的传递函数模型。

2. PID控制器参数初估

  • 经验公式:根据被控对象模型的参数(如时间常数、阻尼比、自然频率等),应用经验公式(如Ziegler-Nichols方法、Tyreus-Luyben规则等)来初步估计PID控制器的增益值。
  • 迭代改进:采用试错方法或更高级的优化算法(如遗传算法、粒子群优化、梯度下降等),逐步调整PID参数,以逼近理想控制性能指标。

3. 性能指标优化

  • 建立时间:目标是最短时间达到并保持在设定点附近。
  • 过冲:限制输出的最大超出设定点的比例,以避免潜在的风险或不稳定。
  • 稳定性裕度:确保系统具有足够的相位裕度和增益裕度,以应对不确定性和扰动,保持长期稳定运行。

4. 闭环性能评估与调整

  • 仿真验证:在模型基础上,将PID控制器与被控对象组成闭环系统进行仿真,观察输出响应是否满足性能要求。
  • 自适应调整:开发自适应机制,根据闭环系统的实际表现(如通过在线监控输出响应的实时变化),动态调整PID参数,实现持续优化。

5. 实验验证

  • 硬件在环(HIL)测试:在实验室环境下,通过HIL系统模拟真实工况,验证优化后的PID控制器性能,确保理论成果的实用性和有效性。

6. 结论与应用

  • 分析研究结果,总结自适应调整算法的有效性,探讨其在不同工业过程控制中的适用性和局限性。
  • 推广应用:将优化后的控制器算法部署到实际工业控制系统中,提升控制效率和产品质量。

技术挑战与未来展望

  • 复杂系统的建模:对于高度非线性、时变或大延迟的系统,模型建立和控制器设计将更加复杂。
  • 在线学习与自适应性:开发更为智能的算法,使控制器能实时适应环境变化和系统参数漂移。
  • 大数据与机器学习整合:结合大数据分析和深度学习技术,自动从海量历史数据中学习最优控制器参数,提升控制精度和鲁棒性。

📚2 运行结果

主函数代码:

ts=0.01;    % sampling time [s]
s=tf('s');  % complex variable of Laplace transform
z=tf('z',ts);   % shift operator
p=(1-1/z)/ts;   % differential operator based on backward Euler's rule
Gs = 5/(0.01*s^2+0.2*s+10)*exp(-0.1*s);   % plant G(s) to be controlled
G = c2d(Gs,ts); % G(z) is derived by discretizing G(s) with zero order holder

% Design initial controller K0 using  The Ziegler-Nichols rule
[Ku,Pm,Wu,Wcp] = margin(G);    % get Gaim margin Ku at Wu[rad/s]
Tu = 1/(Wu/2/pi);   % When K=Ku, self-excited vibration with period Tu[s] will occur.
kp0=0.6*Ku; ki0=kp0/(0.5*Tu);    kd0=kp0*0.125*Tu;  % ZN classical parameters
K0 = kp0 + ki0/p + kd0*p;   % ZN PID controller K0(z)

% Measuring one-shot data y00(t) and u00(t)
u00=ones(300,1);    % input u00(t) is a step function
u00(1)=0;   % initial value must be different from the other values <-- IMPORTANT!
y00=lsim(G,u00);    % y00 is simulated
r=u00;  % reference input to feedback system

% Step 1) Make step responses to cyclic, and get frequency data.
freq.y0jw = fft4step(y00);  % y0(j w) from y00(t)
freq.u0jw = fft4step(u00);  % u0(j w) from u00(t)
freq.r0jw = fft4step(r);    % r0(j w) from r(t)
freq.p = fft4tf(p,length(u00)*2);   % p(j w) from differential operator p
freq.r = r;   % r(t) is reference input to feedback system
freq.wST=0.02;% Error band of settling time for cost function
freq.OVr=2;   % Overshoot [%] for constraints
freq.GMr=3;   % Gain margin [dB] for constraints:  Regulator 3-10dB, 20-inf deg
freq.PMr=20;  % Phase margin [deg] for constraints:Servo    10-20dB, 40-60  deg

% Step 2) Optimize PID gains by evaluating overshoot, settling time,
%         and stability margins using virtual time response.
[kp,ki,kd] = vtigerPID(freq,[kp0 ki0 kd0]);   % Get optimum PID gains. [kp0 ki0 kd0] is initial value for optimization
K = kp + ki/p + kd*p;  % PID controller by V-Tiger

disp('-----------------------------------------------------')
% Verify the controller of V-Tiger and ZN by simulations
[y,u] = freq2yu(freq,K); % Virtual time responses predicted by V-Tiger when K is used
Gcl = feedback(ss(G*K),1);  % closed loop transfer function. feedback(a,b)=a/(1+a*b). ss(G) is ss(Gcl);  % State space representation from G
yt=lsim(Gcl,r); % yt is true y(t) simulated using true plant model G(z)
yZN=lsim(feedback(ss(G*K0),1),r);% y(t) by K0 (ZN) is simulated using true plant model G(z)
figure(1),
p1=plot([yt yZN y-yt y00]);
hold on
vtigerPID(freq,[kp ki kd],1);
hold off; grid; xlabel('sample number k (0.01k [sec])')
legend(p1,'y (V-Tiger)','y (ZN)','error of true/virtual y','y_{00}','Location','southeast');
title('PID control result. V-Tiger is better than Ziegler-Nichols rule')
disp('V-Tiger has completed controller design using y00 instead of the plant model.')
disp(['Plant G(s) to be discretized with sampling time ts=' num2str(ts) '[s] is as follows:']),
[yZN,iZN]=max(yZN); text(iZN,yZN,'\leftarrow y (ZN)','Color','red','FontSize',14);
[yvt,ivt]=max(yt); text(ivt,yvt+0.06,['y (V-Tiger)';'\downarrow '],'Color','blue','FontSize',14);
text(length(y)*0.16,y00(end)*0.8,['\uparrow                                      '; ...
    'y_{00} (used by V-Tiger instead of model G(z))'],'Color','magenta','FontSize',14);
text(length(y)*0.25,max(y)*0.58,[ ...
    'V-Tiger optimization is as follows:                       '; ...
    '  Cost function: Settling time (error band is \pm 3%)     '; ...
    '  Constraints: Overshoot<3%, Stability margins> 3dB, 20deg'])
Gs, disp('');
disp('Fig.1 shows step resonses. V-Tiger is better than ZN method.'),
disp('press any key to type code of "vtiger_demo.m".'),
pause
disp('-----------------------------------------------------')
figure(2), margin(G*K);    text(10,-1000,'Open-loop by V-Tiger')
dbtype vtiger_demo 1:37
disp('-----------------------------------------------------')

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]李普贤.大滞后系统控制器的设计及性能评估[D].北京化工大学,2017.DOI:CNKI:CDMD:2.1017.288686.

[2]李刚,WANG,Qing-lin.基于阶跃跟踪响应的PID控制器性能评价与调节[J].系统仿真学报, 2008.DOI:JournalArticle/5aed4d1fc095d710d40a9782.

[3]王海燕,燕巍.一种自整定PID参数的模糊控制系统的设计与仿真[J].自动化技术与应用, 2015.DOI:JournalArticle/5b3bb7b8c095d70f008a1d1f.

🌈4 Matlab代码实现

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用S-Function函数实现离散PID控制器,需要按照以下步骤进行: 1. 创建一个S-Function文件,并定义输入输出端口以及所需的参数。在该文件中,需要定义离散PID控制器的比例增益、积分时间常数和微分时间常数等参数。 2. 在S-Function的输出端口中,定义离散PID控制器输出信号。 3. 在S-Function的输入端口中,连接要进行制的系统信号以及所需的参考信号。这些信号将作为离散PID控制器输入。 4. 在S-Function的内部逻辑中,按照离散PID控制器的计算公式实现控制器输出计算和更新逻辑。通常,PID控制器输出可以通过将比例增益与误差、积分时间常数与误差积分项以及微分时间常数与误差微分项相乘,然后进行求和得到。 5. 在Simulink中建立仿真模型,将所需的被对象和参考信号与离散PID控制器输入端口相连。将离散PID控制器输出端口与对象输入端口相连。 6. 运行仿真模型,并观察离散PID控制器制效果。根据仿真结果,可以对离散PID控制器的参数进行调整,以获得更好的制性能。 需要注意的是,离散PID控制器的参数调整是一个复杂的过程,需要根据具体的对象制要求进行调整。可以通过试验和仿真来优化控制器的参数。另外,S-Function函数中的离散PID控制器实现可以根据实际需求进行修改和优化。 ### 回答2: 离散PID控制器是一种常用的控制器,通过对系统的误差、误差变化率以及误差的累积进行比例、积分和微分运算,实现对系统的制。在Simulink中,我们可以使用S-Function函数来实现离散PID控制器,并建立相应的仿真模型。 首先,我们需要新建一个Simulink模型,并在模型中添加被对象PID控制器等模块。对于被对象,可以使用Transfer Fcn或State Space等模块来建模。对于PID控制器,我们需要使用S-Function模块,并在该模块的参数设置中指定PID参数。 在S-Function模块中,我们可以使用MATLAB编写对应的离散PID控制器算法。具体来说,我们需要计算离散时间步长内的偏差(误差)、误差变化率以及累积误差,并根据PID参数计算出输入。S-Function模块提供了输入端口用于接收系统状态和参考信号,并提供输出端口用于输出制信号。 在S-Function编写完成之后,我们需要将其与Simulink仿真模型中的其他模块进行连接。具体来说,需要将被对象输出连接到PID控制器输入端口,将参考信号连接到PID控制器输入端口,将PID控制器输出连接到被对象输入端口。 最后,我们可以通过调整PID参数和仿真时间等设置,进行Simulink仿真。在仿真过程中,可以观察到系统的输出与参考信号的差异,并通过调整PID参数来改善系统响应稳定性和动态性能。 综上所述,通过使用S-Function函数实现离散PID控制器,并建立Simulink仿真模型,可以对系统进行离散PID制,并对系统的制性能进行评估和优化。 ### 回答3: 离散PID控制器是通过对系统的误差进行实时调整实现制的一种方法,常用于工业自动制系统。在Simulink中,可以使用S-Function函数来自定义离散PID控制器的行为,并建立相应的仿真模型。 首先,我们需要创建一个离散PID控制器的S-Function函数模块。S-Function函数是一种用于创建自定义模块的特殊函数,在Simulink中可以通过编写相应的C或C++代码来定义其行为。 在S-Function函数中,需要实现离散PID控制器的计算过程。首先,要定义PID控制器的比例增益(Kp)、积分增益(Ki)和微分增益(Kd)参数。然后,在每个仿真步长中,从输入端口获取系统的反馈信号和设定值,计算误差,并利用PID制算法输出制信号。 在Simulink中,可以使用一个S-Function Block来调用自定义的离散PID控制器函数。将该Block添加到仿真模型中,并连接所需的信号,如反馈信号和设定值。接下来,设置模型的仿真时间和仿真参数,然后执行仿真。 通过对离散PID控制器的参数调整,可以对系统的响应进行优化。比如,增大比例增益可以使系统的响应更快,增大积分增益可以减小稳态误差,增大微分增益可以减小过冲现象。在仿真中,可以通过观察系统的响应曲线和输出结果,来评估和优化PID控制器的性能。 总之,使用S-Function函数可以实现离散PID控制器,并在Simulink中建立仿真模型,通过仿真来评估和优化控制器的性能。通过调整PID控制器的参数,可以实现对系统的精确制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值