兄弟,你染上PID了?!

一、PID概要

准确控制的核心: 反馈

预期
偏差
控制系统
传感器检测
反馈

适用于线性系统(二阶以内),满足齐次性、叠加性
故,高阶系统需化二阶系统,非线性需线性化。

二、控制系统

1. 开环控制系统
  • 无反馈控制系统,较易理解,系统框图略
  • 前馈控制系统,传感器检测干扰量。
    在这里插入图片描述
2. 闭环控制系统
  • 单环控制:传感器检测实际输出
  • 双环控制:相较于单环增加了内部环,使得外环控制更加容易,控制更加稳定。
    在这里插入图片描述
    home.csdnimg.cn/images/20230724024159.png?origin_url=%E5%8F%8D%E9%A6%88.jpg&pos_id=img-7pmflLLG-1727694765127)
3. 复合型控制系统

综合以上两种,框图如图:
在这里插入图片描述

三、PID公式

内容

e=X−Ye=X-Ye=XY为偏差量。
连续
C=Kp∗e+Ki∗∫0te dx+Kd∗dedt C = K_p*e+K_i*\int_{0}^{t} e \, dx+K_d*\frac{de}{dt} C=Kpe+Ki0tedx+Kddtde
离散
C=Kp∗ei+Ki∗∑n=0∞ei +Kd∗Δei−Δei−1Δt C = K_p*e_i+K_i*\sum_{n=0}^{\infty} e_i \, +K_d*\frac{\Delta e_i-\Delta e_{i-1} }{\Delta t} C=Kpei+Kin=0ei+KdΔtΔeiΔei1
KdΔt=Kd\frac{K_d}{\Delta t} = K_dΔtKd=Kd
则有:
C=Kp∗ei+Ki∗∑n=0∞ei +Kd∗(Δei−Δei−1) C = K_p*e_i+K_i*\sum_{n=0}^{\infty} e_i \, +K_d*(\Delta e_i-\Delta e_{i-1}) C=Kpei+Kin=0ei+Kd(ΔeiΔei1)
一般有:P=Kp∗eiP = K_p*e_iP=Kpei
I=Ki∗∑n=0∞eiI = K_i*\sum_{n=0}^{\infty} e_iI=Kin=0ei
D=Kd∗(Δei−Δei−1)D = K_d*(\Delta e_i-\Delta e_{i-1})D=Kd(ΔeiΔei1)

公式理解

假设有一悬停的无人机,需要从地面飞到100m的高度并悬停。其控制框图应大致如下:
在这里插入图片描述

我们从无人机起飞到悬停整个过程试图理解PID:

  1. 首先,飞机需要起飞,需要动力。而且,为了让飞机快速且稳定的到达,我们希望在起飞时动力大一些,随着高度偏差量的减小,速度逐渐平稳直至悬停。因此最直接的方式就是直接将高度偏差量乘以某一系数,由控制器传给电机。这就是比例系数KpK_pKp。此项即为PPP项。
  2. 但是,由于无人机自身的质量,它时刻都需要分出一个恒定的力来平衡重力。因此,如果只有PPP项,由于高度偏差量最终减小至零,此时无论KPK_PKP为多少都无法悬停,无人机始终无法悬停到目标位置。故我们仍需要一个不完全与当前时刻状态有关的量来帮助PPP值。因此,我们想到了积分。积分是一个随时间增长的量,不完全与当前时刻状态相关。故我们引入III项,定义为积分系数乘以偏差随时间的积分。
  3. 现在,我们可以控制无人机飞到指定高度。但我们希望对其的控制可以稳定顺滑,不希望出现突变的控制信号。为了防止控制量突变(斜率过大),当eee变化曲线斜率过大时,我们需要一个量去抵消此时正向的控制值,适当阻碍电机旋转。因此,我们可以使用微分的概念。微分可以体现变化快慢,且在未达到预期悬停高度时,变化率均为负数,可以减缓变化。故引入DDD值。
  4. 三者相加,即为最终公式
    此时,PID控制器可看作是P控制器,I控制器和D控制器三者并联。

特殊情况处理

  • 场景一:当无人机起飞时,有人用手将无人机固定在原位不动。此时eie_iei持续积分,III值持续增大。当积累一定时间后,一旦松手,由于III值已被积累到巨大值,飞机将以不可控的加速度上升,造成危险。
    解决方案:积分限幅。限制III值的最大值,当到达ImaxI_{max}Imax后,III值不再增加。
  • 场景二:无人机需要悬停高度太高,eie_iei积分过大。快到达悬停点时由于III值过大,导致无人机仍以较大速度上升,容易造成超调。
    解决方案:积分分离。同样的,当eie_iei超过某值时III值停止积分。

两个实例

M3508电机

在这里插入图片描述

GM6020电机

在这里插入图片描述

调参技巧(持续更新)

  • 随着比例增益越大,曲线会出现振荡。(现象有点像荡秋千,如果没人在后面推,就会来回摆荡,最终慢慢停下来) 当出现振荡现象,就能增加i值来抑制振荡部分。直至抑制到没有振荡现象。 但随着i值增加,过度抑制会导致低频共振。 所以这个时候就需要d值来抑制低频共振。
  • 参数整定找最佳,从小到大顺序查,
    先是比例后积分,最后再把微分加,
    曲线振荡很频繁,比例度盘要放大,
    曲线漂浮绕大湾,比例度盘往小扳,
    曲线偏离回复慢,积分时间往下降,
    曲线波动周期长,积分时间再加长,
    曲线振荡频率快,先把微分降下来,
    动差大来波动慢,微分时间应加长,
    理想曲线两个波,前高后低四比一,
    一看二调多分析,调节质量不会低。
方法三:本发明提供了一种拖拽式布局配置的门户综合管理系统,所述系统包括前端门户 展示层和后端模块,所述前端门户展示层包含两个以上框架单元和模块元素,如图 1 所示, 所述后端模块包括表现层、业务层、持久层和 Oracle 数据库 ; [0051] 所述框架单元的每个分隔区域内必须并且只能填充模块元素,模块元素按照从上 向下的顺序在对应的分隔区域内放置,每个模块元素占满其对应分隔的宽度 ; [0052] 所述表现层用于接收并管理所述前端门户展示层的请求和响应,并展示前端门户展示层 ; [0053] 业务层用于接收并处理所述表现层提交的请求和响应,业务层处理所述表现层提 交的请求和响应包括 :处理门户综合管理系统的处理逻辑和数据检验,门户数据的抽取、转 换和规整,数据存储的处理 ; [0054] Oracle 数据库用于存储前端门户展示层的数据 ; [0055] 持久层采用 Hibernate 方式对 Oracle 数据库中的数据进行增加、删除、修改操作。 [0056] 所述前端门户展示层的框架单元包含 1 列、2 列、3 列、4 列这 4 种区域分隔形式,框 架单元采用 12 等分栅格化横向布局,默认自适应计算机屏幕宽度,在编辑制作前端门户展 示层时对各框架单元按照其列数对宽度等分比进行设置,对框架单元中各模块元素的高度 以像素单位进行设置。 [0057] 所述框架单元采用其列数和 1 个 HTML 标签组合而成,模块元素对应一个标准的 HTML 标签。 [0058] 所述模块元素绑定具体的 UI 组件,UI 组件按照 MVC 模式定义属性配置规范,用户 通过界面导航式操作实现具体 UI 组件属性的配置,并最终在 Oracle 数据库进行持久化存 储,组件属性配置内容包含 : [0059] (1) 对前端门户展示层加载数据的结构模型配置 :其配置规范为 <modelId,mode lMc,modelLx,modelDes>,其中 modelId 为数据模型编号,modelMc 为数据模型字段标识, modelLx 为数据模型字段的数据类型,modelDes 为数据模型的属性描述 ; [0060] (2) 对 UI 组件展示属性进行实例化配置,各种类型的组件对应不同相应的展示属 性 ;UI 组件展示属性规范格式为 <viewId,zjlx,viewMc,viewDes>,其中 viewId 为 UI 组件 属性编号,zjlx 为组件类型,viewMc 为 UI 组件展示属性标识,viewDes 为 UI 组件展示属性 的描述信息,一种 UI 组件类型关联一条或两条以上 UI 组件展示属性数据 ; [0061] (3) 对组件数据请求控制参数的配置 ( 本发明支持 Ajax 和 SOAP 数据请求 )。 [0062] 所述前端门户展示层由用户编辑生成,在编辑过程中,模块元素每绑定一 个 UI 组件,则对该组件按照 UI 组件展示属性规范创建一条或两条以上 UI 组件属 性实例化数据,并在 Oracle 数据库进行实例化存储,UI 组件实例化数据的格式为 <eid,zjlx,viewId,rqid,mbid,val>,其中 eid 为组件实例化数据编号,zjlx 为组件类型, viewId 为组件属性规范中的 UI 组件属性编号,rqid 为容器编号,mbid 为模板编号,val 为 UI 组件属性的配置值。用户同样可以在工程实际部署中根据组件规范,可选择第三方 UI 组 件库,通过预定义 UI 组件展示属性进行和门户框架的集成。 [0063] 用户在编辑前端门户展示层时,在 WEB 界面的每一步操作所关联的数据,都通过 HTML5 提供的 localstorage 方法在前端完成浏览器本地化存储,本地存储的数据包括 :前 端门户展示层的 HTML代码 ;HTML代码转换成对象列表形式的数据 ;框架单元和模块元素的 属性数据 ;编辑前端门户展示层的操作当前步骤和最大步骤。 [0064] 所述后端模块采用 Struts2 框架来实现前端界面和表现层之间数据的请求和响 应。 [0065] 所述后端模块将前端门户展示层对应 HTML 格式标签树自动解析为对象列表数 据,并且按照对象列表格式在 Oracle 数据库进行持久化存储。 [0066] 所述对象列表数据格式为 :<id,pid,row,col,children,leaf,Attr>,其中 id 为框架单元或模块元素的节点编号,pid 为父级节点编号,row 为该模块元素在其兄弟模块元 素排序的行号,col 为模块元素在其兄弟元素排序的列号,children 为框架单元内模块元 素的数目,leaf 判断该节点是否为模块元素,Attr 表示框架单元内的分隔比率。 [0067] 下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于 此。本发明方法用于通过可视化的模板创建和配置对信息门户进行编辑制作,时序过程如 图 3 所示,实现步骤描述如下 : [0068] 步骤 1 :通过信息门户使用界面创建门户模板,填写门户模板名称、主题类型、备 注信息,并进行保存。门户模板在数据库会生成该条记录,并按照主键生成规则自动生成门 户模板编号。通过界面操作可以对该门户模板的数据记录进行修改、删除操作。 [0069] 步骤 2 :选择指定门户模板,对该模板关联的门户框架进行布局操作。如图 2 详细 所示门户框架布局展示。 [0070] (1) 通过界面工具栏,选择框架单元和模块元素的快捷方式,采用界面拖拽布局的 进行门户框架的构建。框架单元如图 2 中虚线框部分所示。模块元素如图 2 中实线方块所 示区域。 [0071] (2) 拖拽布局的过程中可以通过界面工具栏快捷方式,进行门户框架布局的撤销 和回退操作。 [0072] (3) 通过界面设置各框架单元和模块元素的宽度比率和高度。 [0073] 步骤 3 :按照模型—视图—控制的导航顺序,对模块元素进行 UI 组件属性的配置。 [0074] (1) 配置数据模型,该数据模型实现后端数据和前端界面加载数据之间的映射。 [0075] (2) 为该模块元素选择对应的 UI 组件,并配置 UI 组件的展示属性参数。 [0076] (3) 配置 Ajax 数据请求地址。 [0077] 步骤 4 :预览门户界面。 [0078] 通过界面工具栏的快捷方式对门户进行预览。请问:方法三是什么意思,请举例说明,其次,方法三的前端和后端分别做什么事情,请分别举例说明
最新发布
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值