【自动控制理论(一)】对PID控制的理解

本文详细介绍了PID控制器的工作原理及其在离散系统中的应用。通过举例说明了PID如何处理线性和非线性系统的控制问题,包括不同初始条件下的系统响应,并探讨了如何通过调整PID系数来应对系统限制和超调问题。同时,强调了比例、积分部分在系统调节过程中的作用,以及确定PID系数正负的重要性。
摘要由CSDN通过智能技术生成

PID公式

在这里插入图片描述
以上是离散PID计算公式,PID的连续和离散,以及离散中的位置和增量,原理上都是完全一样的。一般控制都是离散PID,而且离散的表达形式更加直观,这里只给出离散的形式。

PID控制的理解

非线性的可不可以

有了PID控制,系统的输入和输出间的具体关系就不重要了。PID最好还是线性,非线性需要根据情况改变pid系数,比如某个既不是线性也不是单调的系统,输出与输入间的关系为——二次函数:
y = ( u − 1 ) 2 y=(u-1)^2 y=(u1)2

  1. 想让这个函数达到一个稳定的值y=4,初始状态为u=0,y=1。
    假设不知道内部的关系是什么,只知道参考值4比初值1要大,可以先随便设个系数。
    用matlab模拟该系统:
clc,clear;
ref = 4;
err = 0;
err_last = 0;
integral = 0;
y(1) = 1;
u(1) = 0;

for i=1:60
    err = ref-y(i);
    integral = integral+err;
    u(i+1) = 0.05*err+0.05*(err-err_last)+0.05*integral;
    err_last = err;
    y(i+1) = (u(i+1)-1).^2;
end
i=1:61;
plot(i,u);
hold on;
plot(i,y);
grid on;
xlabel('采样次数');
ylabel('u and y');
legend('u','y');

结果为:
在这里插入图片描述
2. 如果初始状态为u=5,y=16。在这里插入图片描述
虽然也能调节到参考值,但是u在最开始的时候变为了负。而且根据计算,y的初值比参考值大,误差为负,那么第一次采样的时候,u必为负。如果某些系统的输入不能为负,就可能出现问题。这种问题也很容易解决,给u加上限值即可,只允许u在这个范围内变化,一是为系统安全考虑,二是避免PID调节失败。比如虽然第一次采样后u被调为负,但是由于系统对u有限制,只能调到0,那么y=1,之后就会重复之前u=0,y=1的调节过程。
3. 如果初始状态为u=0,y=1,参考值为0
使用同样的pid系数就完全调不了了:
在这里插入图片描述
这是因为调节方向完全反了,即使加了限制,也不可行。比如若限制 0 < = u < = 5 0<=u<=5 0<=u<=5, 调节过程中u会一直卡在0处。
应该将PID系数改成负值。
如果系统单调,就不会有上述的问题,如果系统不单调,可能调着调着越过了极值点,就不是负反馈了。

对于线性系统

输入量=当前和过去所有误差的加权之和,对于PID来说,当前误差的权重较大,同时之前所有的误差也影响着最后计算出来的输入量。

比例部分

比例部分就是当前误差乘以某个系数 K p K_p Kp。比如说某个系统y=u,想从y=1调到y=5。调节过程中y肯定在逐渐变大,差距在逐渐缩小,那么比例部分就越来越小。所以越到后期,越到差距小的时候,比例部分就接近0。
比例部分主要是在调节刚开始的时候有用,可以显著加快前期的调节速度。如果比例系数过大,有可能调节过程中出现超调,积分过大也有可能出现超调。但积分造成的超调更严重些,不能把积分环节设置得太大,因此为了追求前期的快速,还是要设置一定比例系数的。
如果只有比例部分,可以计算一下对于 y = u y=u y=u系统只使用比例环节得到的输出量终值,设该终值为 y n y_n yn,那么:
( y r e f − y n ) K p = y n (y_{ref}-y_n)K_p=y_n (yrefyn)Kp=yn
y n = K p y r e f K p + 1 y_n=\frac{K_py_{ref}}{K_p+1} yn=Kp+1Kpyref
比例部分的作用就是在刚开始出现误差的时候让输入量快速向合理的方向移动。

积分部分

积分部分才是使系统调节到 y r e f y_{ref} yref的关键。看增量PID算法的公式可以看出来,积分环节的输入量的变化量=当前误差*积分系数。
在这里插入图片描述
积分部分的最终目标就是误差为0。

pid系数的正负确定

pid系数都是有正负的,设定前得先知道调节的方向。如果系统单调递增,想让y增大,误差为正,u也得增大,因此积分系数为正。如果系统单调递减,想让y增大,误差为正,u就得减小,因此积分系数为负。否则根本调不到稳定值。
比例系数和积分系数的正负是一致的。

非线性PID控制算法是一种在数字电动舵机中应用的控制算法。该算法利用跟踪微分器来获取输入输出的位置跟踪误差和微分误差,并对它们进行非线性组合,完成非线性PID控制器的设计。 这种算法可以通过在Matlab上进行仿真和实际应用来验证其性能。该算法的核心思想是根据系统的非线性特性进行控制,以提高系统的控制精度和稳定性。非线性PID控制算法在某些特定场景下,相较于传统的线性PID控制算法具有更好的控制效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [一种数字电动舵机的非线性PID控制算法研究 (2010年)](https://download.csdn.net/download/weixin_38750406/18649425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [PID控制算法的c语言实现 附录2 直流电机PWM调速系统中控制电压非线性研究](https://blog.csdn.net/future_ai/article/details/89528412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值