【PID精讲 13 】位置式PID和增量式PID

位置式PID和增量式PID

在计算机控制系统中,PID控制是通过计算机程序实现的,因此它的灵活性很大。一些原来在模拟PID控制器中无法实现的问题,在引入计算机以后,就可以得到解决,于是产生了一系列的改进算法,形成非标准的控制算法,改善系统品质,满足不同控制系统的需要。

一、位置式PID控制算法

  • 按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即:
    在这里插入图片描述

  • 可得离散表达式:

在这里插入图片描述

  • 式中, K i = K p / T I K_i=K_p/T_I Ki=Kp/TI K d = K p T D K_d=K_pT_D Kd=KpTD,T 为采样周期,K 为采样序号,k=1,2,……,e(k-1)和e(k)分别为第 (k-1) 和第 k 时刻所得的偏差信号。

  • 位置式PID控制系统框图如下,由图可以看出,位置式PID是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制。

在这里插入图片描述

  • 根据位置式PID控制算法得到其程序框图:

在这里插入图片描述


  • 从一个例子中理解位置式PID:
    在这里插入图片描述

  • (1)如上图所示,工作人员要对一个直流电机进行调速,设定了转速为1000;

  • (2)此时系统反馈回来的转速为 x,反馈回来的速度与设定速度差为 e;

  • (3)将差值 e 作为控制信号输入到位置式PID控制器,经位置式PID控制器计算的输出作为Process的输入值(可以是PWM占空比),最终Process输出相应的PWM控制电机;

  • (4)反馈装置(Feedback)检测电机转速;

  • (5)重复(2)、(3)、(4)步骤。


在这里插入图片描述

上式中:

  • 比例项 : e(k) 用户设定的值(目标值)- 控制对象的当前的输出值
  • 积分项: ∑e(j) 误差的累加
  • 微分项: e(k) - e(k-1) 当前误差-上次误差

位置式PID控制算法中,因为有误差积分 ∑e(j) 一直累加,也就是当前的输出u(k)与过去的所有状态都有关系;输出的u(k)对应的是执行机构的实际位置,一旦控制输出出错(控制对象的当前的状态值出现问题 ),u(k)的大幅变化会引起系统的大幅变化。

并且位置式PID在积分项达到饱和时,误差仍然会在积分作用下继续累积,一旦误差开始反向变化,系统需要一定时间从饱和区退出,所以在u(k)达到最大和最小时,要停止积分作用,并且要有积分限幅和输出限幅。

所以在使用位置式PID时,一般我们直接使用PD控制,而位置式 PID 适用于执行机构不带积分部件的对象,如舵机和平衡小车的直立和温控系统的控制。


二、增量式PID控制算法及仿真

  • 增量式PID控制算法是指其输出只是被控量的增量

    当执行机构需要的是控制量的增量,而不是位置量的绝对值时, 例如驱动步进电机等,应采用增量式PID控制。

  • 根据递推原理可得:

在这里插入图片描述

  • 增量式PID的算法:

    在这里插入图片描述


  • 从一个例子中理解增量式PID

在这里插入图片描述

  • (1)如上图所示,工作人员要对一个直流电机进行调速,设定了转速为1000;
  • (2)此时系统反馈回来的转速为x,反馈回来的转速与设定转速差为e(k);
  • (3)系统中保存了上一次反馈转速与设定转速的偏差e(k-1)以及上上次的反馈转速与设定转速的偏差e(k-2),这三个量( e(k)、e(k-1)、e(k-2) )作为输入值输入到增量式PID控制器中,并计算得到本次PID增量∆u(k);
  • (4)系统中还保存了上一次的PID输出u(k-1),本次PID输出u(k)为上一次的PID输出值u(k-1)加上增量∆u(k),u(k)作为Process的输入值(可以是PWM占空比),最终Process输出相应的PWM控制电机;
  • (5)反馈装置(Feedback)检测电机转速;
  • (6)重复(2)、(3)、(4)、(5)步骤。

在这里插入图片描述

上式中:

  • 比例项: e(k)-e(k-1) 这次误差 - 上次误差
  • 积分项: e(k) 这次误差
  • 微分项: e(k) - 2e(k-1)+e(k-2) 这次误差 - 2*上次误差 + 上上次误差

从增量式PID根据公式可以很好地看出,一旦确定了Kp、Ki、Kd,只要使用前后三次测量值的偏差,即可由公式求出控制增量∆u(k)。得出的控制增量对应的是近几次位置误差的增量,而不是对应与实际位置的偏差,没有误差累加

也就是说,增量式PID中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关,容易通过加权处理获得比较好的控制效果,并且在系统发生问题时,增量式不会严重影响系统的工作。


仿真示例
设被控对象如下:

G ( s ) = 400 s 2 + 50 s G(s)=\frac{400}{s^2+50s} G(s)=s2+50s400

PID控制参数为:Kp=8, Ki=0.10, Kd=10

增量式PID阶跃跟踪结果:

在这里插入图片描述

  • 由于控制算法中不需要累加,控制增量Δu(k)仅与最近k次的采样有关,所以误动作时影响小,而且较容易通过加权处理获得比较好的控制效果。

三、位置式与增量式优缺点

    1. 位置式PID算法结构改变灵活,算法简单,鲁棒性好,可靠性高。 但是每次输出都与控制偏差e过去整个变化过程有关,这样容易产生较大的累积偏差,特别是当计算机发生故障时,由于调节器是全量输出,控制变量y可能会发生大幅振荡,给生产带来严重危害。而如果采用增量式PID算法,由于计算机只输出控制变量的增量Δy发生故障时只影响本次增量的大小,故影响较小。
    1. 系统从手动切换到自动时,位置式PID算法需要将调节器的输出置为初始值,这样才可能实现无冲击切换,而增量式PID算法易于实现手动自动的无冲击切换。
    1. 位置式PID算法要求计算累加和,故运算量大。而增量式PID算法不需要计算累加和,故运算量小。
    1. 位置式PID算法中,由于偏差公式中有对偏差的累积计算,所以,容易产生积分饱和现象,造成系统失控。而在增量式PID算法中,由于差分公式中不存在有对偏差的累加计算,所以,不会产生积分失控现象,避免了系统的超调和振荡现象的发生。但增量式PID算法有产生比例和微分失控现象的可能,使系统的动态性能变坏
  • 综上所述,位置式与增量式PID算法各有自己的优缺点,因此我们在应用之中应该结合实际情况,来选择具体的,最合适的控制方法。


本节完

### Mapbox 使用教程示例代码 #### 什么是 Mapbox? Mapbox 是一套强大的地理空间开发工具集,广泛应用于地图可视化、数据分析以及位置服务等领域。它提供了丰富的 API SDK 支持,能够帮助开发者快速构建交互式地图应用。 --- #### Mapbox 的主要组件 以下是 Mapbox 生态系统的几个重要组成部分: 1. **Mapbox GL JS**: 这是一个轻量级的地图渲染库,支持矢量瓦片 WebGL 渲染技术[^2]。 2. **Mapbox Studio**: 提供了一个可视化的界面来设计自定义地图样式。 3. **React Map GL**: 集成了 React 框架的 Mapbox 地图组件库,适合前端开发者使用。 --- #### 如何开始使用 Mapbox? ##### 步骤说明(隐含) 为了更好地理解如何使用 Mapbox,可以参考以下资源: 1. **官方文档** 官方文档是学习 Mapbox 的最佳起点,涵盖了从基础到高级的各种主题[^1]。 2. **Vue + Mapbox GL 示例教程** 如果您正在寻找 Vue.js 结合 Mapbox GL 的解决方案,则可以通过已有的超过 100 个示例教程获取灵感。 3. **React Map GL 整合** 对于 React 开发者来说,`react-map-gl` 库简化了许多复杂操作,使得集成更加便捷。 --- #### 数据源 (Sources) 类型介绍 Mapbox 中的数据源分为六种基本类型,每一种都有其特定用途。下面列举其中的一种作为例子——视频数据源 (`video`)。 ```json { "sources": { "video-source": { "type": "video", "urls": [ "https://static-assets.mapbox.com/mapbox-gl-js/dajianshi.mp4", "https://static-assets.mapbox.com/mapbox-gl-js/dajianshi.webm" ], "coordinates": [ [-80.425, 46.437], [-61.516, 46.437], [-61.516, 39.936], [-80.425, 39.936] ] } } } ``` 上述 JSON 片段展示了如何配置一个 `video` 数据源,并指定了两个不同格式的视频文件路径以提高兼容性[^3]。 --- #### 图层 (Layers) 渲染类型概述 在 Mapbox 中,图层决定了数据将以何种形式呈现给用户。共有九种常见的渲染方式,这里选取两种进行展示: 1. **Fill Layer** (填充区域) 适用于绘制多边形并为其内部着色的情况。 ```javascript map.addLayer({ 'id': 'fill-layer', 'type': 'fill', 'source': 'example-source', // 替换为您自己的 source ID 'paint': { 'fill-color': '#ff0000' // 设置颜色为红色 } }); ``` 2. **Symbol Layer** (图标/文字标注) 可用来放置标记或者添加文本标签。 ```javascript map.addLayer({ 'id': 'symbol-layer', 'type': 'symbol', 'source': 'example-source', // 替换为您自己的 source ID 'layout': { 'text-field': ['get', 'name'], // 动态绑定字段名 'icon-image': 'marker-15' } }); ``` 更多关于其他七种类型的详细描述可参阅专门的文章[^4]。 --- #### 总结 通过以上内容可以看出,无论是简单的静态地图还是复杂的动态效果,Mapbox 都能提供全面的支持。借助其灵活的设计理念技术架构,即使是初学者也能迅速上手制作属于自己的作品。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MJY二进制

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

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

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

打赏作者

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

抵扣说明:

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

余额充值