每个有独立可测量误差的串级PID等于新PID之和

  1. 只证明三个串级pid等于新串级PID输出之和;
  2. 新PID 与原有pid参数有数量关系,如果一个为0,则的参数都不用计算;
  3. 用python的符号数学库sympy计算
import sympy as sp

kp1,ki1,kd1,e1,ep1,sigmae1,kp2,ki2,kd2,e2,ep2,sigmae2,kp3,ki3,kd3,e3,ep3,sigmae3 = sp.symbols("kp1,ki1,kd1,e1,ep1,sigmae1,kp2,ki2,kd2,e2,ep2,sigmae2,kp3,ki3,kd3,e3,ep3,sigmae3")
outPut1,outPut2,outPut3 = sp.symbols("outPut1,outPut2,outPut3")
input2,input3 = sp.symbols("input2,input3")

outPut1 = kp1*e1 + ki1*sigmae1 + kd1*(e1-ep1)
input2 = outPut1 + e2
outPut2 = kp2*input2 + ki2*sigmae2 + kd2*(e2-ep2)
input3 = outPut2 + e3
outPut3 = kp3*input3 + ki3*sigmae3 + kd3*(e3-ep3)

KP1 = kp1*kp2*kp3
KI1 = ki1*kp2*kp3
KD1 = kd1*kp2*kp3
KP2 = kp2*kp3
KI2 = ki2*kp3
KD2 = kd2*kp3
KP3 = kp3
KI3 = ki3
KD3 = kd3

OutPut1 = KP1*e1 + KI1*sigmae1 + KD1*(e1-ep1)
OutPut2 = KP2*e2 + KI2*sigmae2 + KD2*(e2-ep2)
OutPut3 = KP3*e3 + KI3*sigmae3 + KD3*(e3-ep3)
totalOutPut = OutPut1 + OutPut2 + OutPut3

sp.expand(outPut3) == sp.expand(totalOutPut)

输出结果:

True
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转载自:JVM 看这一篇就够了[https://www.toutiao.com/article/6969013...
    AC编程阅读 2,331评论 3 17
  • JVM和性能优化 1、Java内存区域 虚拟机的历史 未来的Java技术一览 运行时数据区域 各个区域的作用程序计...
    李飞_fd28阅读 186评论 0 0
  • jvm原理 Java虚拟机是整个java平台的基石,是java技术实现硬件无关和操作系统无关的关键环节,是java...
    AI乔治阅读 17,348评论 21 486
  • (转)Python 面试中可能会被问到的问题 原标题:10 家公司 Python 面试题总结 1 简述解释型和编译...
    耀魄天蝎阅读 248评论 0 0
  • 多旋翼控制基础是将用户输入的遥控信号(期望角度值 )通过计算调整电机输出最后达到期望姿态值 在单环PID控制算法中...
    annge阅读 967评论 0 0