PID广泛应用于工业生产各个环节,然而对于不同PID结构会有一些差异,导致在调参时若按照常规的经验调试,结果将会有非常大的不同。

串联型PID(Serial PID)

串联型PID的三个环节由比例,积分和微分项串级而成,结构简图如下:

 
Serial PID

其传递函数为:



若使用后向欧拉法将其离散化,即将:



带入式(1-1)中,可得到:



其中:

  • —— 第m时刻控制器输出
  • —— 第m时刻的误差
  • —— 离散化控制周期

式(1-3)即为串联型PID的离散化增量式实现。利用递推的方法可得到绝对式实现如下:

并联型PID(Parallel PID)

并联型PID的三个环节由比例,积分和微分项并联而成,其结构简图如下:

 
Parallel PID

其传递函数为:



串联型与并联型二者的系数有所不同,其关系如下:



使用后向欧拉离散化,可得到并联型PID的离散化增量式实现如下:



若使用Tustin方式离散化,即将:



带入式(2-1)中,并将置为0,可得到:



此即为并联型PI的离散化增量式实现。同样利用递推的方法可以得到绝对式实现如下:

标准型PID(Standard or mixed or Ideal PID)

标准型PID与上述二者都不同,其结构简图如下:

 
Standard PID

其传递函数为:



此时有:



使用后向欧拉离散化方法,可得到标准型PID的离散化增量式实现:



若使用Tustin方式离散化,并将置0,则得到标准型PI的离散化增量式实现:



式(3-4)即为TI的快速电流环(FCL)中速度优化型PI控制器实现原理。值得注意的是,FCL中的各变量均为标幺值,因此实际实现需要稍作转换,即:



其中:

  • —— 电压标幺基值
  • —— 电流标幺基值

最后,使用同样的递推法,可以得到绝对式实现:

三者区别

  • 三者最重要的区别在于不同结构的参数对于控制器行为影响的不同。并联型PID实现了比例项,积分项和微分项的完全解耦,调节其中的即可独立的作用在比例,积分和微分项上;而标准形式的将同时影响比例,积分和微分三项行为。串联型类似。工业应用中,标准形式和并联形式的PID应用的最为广泛,且Simulink中也可以看到,PID的形式选择分为Parallel及Ideal(即Standard):

     
    Simulink Parallel PID
     
    Simulink Ideal(Standard) PID
  • 值得注意的是比例项和积分项都与前文相同,而微分项,MATLAB中用代替了纯微分项。将其化简可以得到:



    前面为正常的微分项,后面则乘上了一个一阶低通滤波器,而即为低通截止频率,对于Ideal类型的控制器,此即为改进型标准PID。该部分的离散化与标准型PID描述相同,唯一的差别在于微分项需要经过一次滤波处理。此处给出绝对式的两种实现(改进型并联PID同理),实现一(先滤波,后微分):



    其中:

    实现二(先微分,后滤波):



    其中:

Note

  • 无论是串联型,并联型还是标准型,在实现上都分为绝对式PID还是增量式PID。这与PID类型无关,只是实现手段不同。

参考资料

<div id="refer-anchor-1"></div>

作者:SmartFish
链接:https://www.jianshu.com/p/caa2423d82db
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

串联型PID,并联型PID与标准型PID简要说明的更多相关文章

  1. Python基础:数值(布尔型、整型、长整型、浮点型、复数)

    一.概述 Python中的 数值类型(Numeric Types)共有5种:布尔型(bool).整型(int).长整型(long).浮点型(float)和复数(complex). 数值类型支持的主要操 ...

  2. JSON转换类(一)--过滤特殊字符,格式化字符型、日期型、布尔型

    /// <summary> /// 过滤特殊字符 /// </summary> private static string String2Json(String s) { St ...

  3. PDO 查询mysql返回字段整型变为String型解决方法

    PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时,执行prepare,execute后,返回的字段数据全都变为字符型. 例如id在数据库中是Int的,查询 ...

  4. C字符串和C++中string的区别 &&&&C++中int型与string型互相转换

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  5. USB 2.0 A型、B型、Mini和Micro接口定义及封装

    USB全称Universal Serial Bus(通用串行总线),目前USB 2.0接口分为四种类型A型.B型.Mini型还有后来补充的Micro型接口,每种接口都分插头和插座两个部分,Micro还 ...

  6. oracle 非数字型转数字型

    原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues ...

  7. Java 中的 int 型转为 long 型

    先将 int 型转为 String 型,然后再将 String 转为 long 型,如下图: public class TestIntToLong { public static void main( ...

  8. 范型方法 & 范型参数 & 范型返回值

    Java范型类 public class FanXingClassTest { public static void main(String args[]){ Test<Integer> ...

  9. Starting MySQL....The server quit without updating PID file[失败]/lib/mysql/ip12189.pid). 错误一例

    [root@ip12189 etc]# service mysqld startStarting MySQL....The server quit without updating PID file[ ...

随机推荐

  1. Ubuntu 18.04 安装配置LAMP

    --作者:飞翔的小胖猪 --创建时间:2021年5月29日 --修改时间:2021年5月29日 一.准备 1.1 环境 操作系统:Ubuntu 18.04 网页引擎:Apache php版本:7.4 ...

  2. VS 返回值被忽略的解决方法

    •问题 用 Visual Studio 编写 C++ 代码的时候,一旦用到 scanf , freopen 等函数的时候,编译器总会不合时宜的给你提示 "返回值被忽略",那么该如何 ...

  3. docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况.这里使用大部分lin ...

  4. Spring AOP之3w的配置

    1.3w是什么? ■ what.where.when 或者 what.when.where 2.what.where.when[通用] (1)what:增强器-bean[配置一个bean对象] (2) ...

  5. Pycharm:设置自带控制台的python版本

    之前在用chr将一个编码转化为对应的字符时,出现以下提示 chr() arg not in range(256) 后来发现,只有python2.x才会出现这种情况,python3.x统一使用unico ...

  6. 基于SqlSugar的数据库访问处理的封装,支持多数据库并使之适应于实际业务开发中

    在我的各种开发框架中,数据访问有的基于微软企业库,有的基于EFCore的实体框架,两者各有其应用场景,不过多的去比较.最近在使用SqlSugar的时候,觉得这个数据访问处理的组件确实很灵活,据说性能也 ...

  7. appium1-macOS10.12下如何丝滑的使用appium?

    1.下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githu ...

  8. mysql什么时候会发生file sort

    看了网上很多排名很靠前的博客,发现好多都讲错了!我开始按照博客来,没有怀疑,直到自己试了一下才发现是错的. file sort在面试中有时候会问到,这个其实挺能区分是不是真的了解order by的执行 ...

  9. 06-CircuitBreaker断路器

    1.介绍 Spring Cloud Circuit breaker provides an abstraction across different circuit breaker implement ...

  10. 微服务从代码到k8s部署应有尽有系列(十三、服务监控)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...