什么时候使用PD和PI——基于平衡小车分析



前言

有时候我们都不会把PID三个控制都用上,可能之后用其中的P、PI或PD控制。P控制就不用说了,什么时候都能用,只是性能的问题。本文将基于平衡小车分析什么时候使用PI和PD控制器。


这是一篇无华且枯燥的纯文字文章,请细品。

一、PD控制器的性能

PD控制就是比例+微分控制,在系统稳定后能快速预测未来的变化并做出响应。
特点是快速性和稳定性。
微分相当于一个阻力,能有效抑制系统本身产生的震荡。缺点是有静差和放大噪声,当偏差很小时P和D基本不起作用所以会有静差。噪声与系统自身调节产生的震荡是不同的,噪声一般是高频的干扰。噪声会在输出端影响系统然后反馈到输入端,由于微分控制是有一个系数的,当系数乘上噪声后,可以想象到噪声是被放大了。噪声的放大效果取决于微分系数,如果系统的微分系数很大那就要注意噪声的干扰了。

二、什么时候用PD控制

对于需要快速响应的系统可以使用PD控制,但是要注意噪声的干扰。
平衡小车的直立控制就需要用到PD控制。当角度接近机械零度时,P控制器就不工作了,控制器认为完成了任务,然而控制器忽略了一种对下一个时刻的预测,即角度在机械零度时电机还存在角速度,简单来说就是小车还有惯性。这时候就需要加入D控制器,预测下一时刻的偏差。
既然本小节讲的是什么时候用PD控制,反过来想就是这个PID控制器中为什么不用积分。这里必须知道的一点是当比例系数很大的时候系统几乎没有静差。平衡小车直立控制需要快速性,相比之下P是很大的,积分的作用是消除静差,而静差对于直立控制的影响很小自然就不需要积分了。实际上平衡小车不一定要完全处于机械中值,稍微偏一点点也没有关系,只要稳定就行了。所以对于准确性要求不高的系统可以不加入积分控制。

三、PI控制器的性能

PI控制就是比例+积分控制,兼顾快速性并且在系统稳定后能消除静差。特点是快速性和准确性。
对一个自动控制系统,为了消除稳态误差,在控制器中必须引入积分项,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。缺点是不适用于惯性较大的系统,在某些情况下积分需要做特殊处理,可以参考PID积分项优化与C语言实现这篇文章。

四、什么时候用PI控制

PI控制可以说是最常用的组合。微分放大噪声是很难受的,微分的作用是提前响应,现在更多是采用加前馈的方式,同样可以提前响应但不会放大噪声。
先说一下平衡小车为什么要速度控制,小车的机械中值存在误差,如果只有直立控制,小车可能会一直前进或者后退以维持这个有误差的机械中值,网上有人说是小车平移速度没有限制,这样就可能超过PWM的幅值,导致电机无法加速了。我觉得这并不是加入速度控制的主要原因,对于这种说法有两种方式解决1.对PWM进行限幅 2.倾角大时直接关闭电机。小车不能长时间静止平衡主要是重心不稳,导致小车只能通过单方向运动维持平衡。加入速度环就是修正小车的角度,小车一直往前面开时,速度环让小车以更快速度行驶使小车后仰,这时直立控制让小车后退以维持平衡。
对于速度控制当然是越精确越好,平衡小车当然希望速度一直为0。速度控制的速度偏差是由直立控制电机运动引起的,即速度噪声很大,所以不加入微分控制。
对于准确性要求高,系统噪声大时可以采用PI控制。


结语

那么以上就是本篇文章的所有内容了。
本文如果有什么不对的或者需要改进的地方欢迎指出。

层次聚类分析是一种基于距离度量的聚类算法,它通过计算不同样本之间的距离,将样本逐步合并为越来越大的簇,直至达到预设的聚类数量或者满足某种条件为止。 在基站定位数据商圈分析中,我们可以将商圈看作是一个点集合,每个点表示商圈中心的位置。我们可以使用层次聚类分析对这些点进行聚类,从而发现不同的商圈、商圈之间的相似性以及热门商圈的分布情况。 下面是一个使用Python进行层次聚类分析的示例代码: ```python import pandas as pd import numpy as np from scipy.spatial.distance import pdist, squareform from scipy.cluster.hierarchy import linkage, dendrogram # 读取商圈数据 df = pd.read_csv('business_districts.csv') # 计算商圈之间的距离矩阵 dist_matrix = pdist(df.iloc[:, 1:], metric='euclidean') # 使用Ward方法进行层次聚类 linkage_matrix = linkage(dist_matrix, method='ward') # 绘制树状图 dendrogram(linkage_matrix) # 显示结果 plt.show() ``` 在上面的代码中,我们首先读取了商圈数据,并计算了商圈之间的欧几里得距离矩阵。然后使用Ward方法进行层次聚类,并绘制了树状图。 树状图可以帮助我们直观地了解聚类结果,其中每个叶节点表示一个商圈,不同颜色的线段表示不同的簇。我们可以根据树状图中的切割点,将商圈分成不同的簇,从而得到不同的商圈群组。 除了树状图,我们还可以使用其他的聚类评估指标,如轮廓系数、Calinski-Harabasz指数等,来评估聚类结果的质量。最终,我们可以根据聚类结果,进一步分析商圈的特点和分布情况,为商业决策提供参考。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微光feng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值