大家看看我对于PID指令的理解对不对 点击:460 | 回复:8



devil88

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2007年12月07日
发表于:2008-12-18 10:36:12
楼主
一般的,数字PID的公式如下:
Pout(t)=Kp*e(t)+Ki*Σe(t-1)+Kd*(e(t)-e(t-1)),台达的技术手册也是这样的。但我有一个疑问,如下:
先忽略积分和微分项,只考虑比例项,并设Kp=1
假设在t时刻,SV(设定值)=100,PV(测量值)=0,MV(控制量)=0

至t1时刻,Pout(t1)=Kp*e(t1)=Kp*(SV-PV)=100,即此时MV=100,假设此时PV=80,
至t2时刻,Pout(t2)=20,假设PV=30,则
至t3时刻,Pout(t3)=70......,如此循环振荡,至稳定时,总有PV=0.5SV(在台达PLC上经过验证)
但如果使Pout(t)=Kp*e(t)+MV(t-1),只要恰当选取Kp,总能使PV在几乎不振荡的情况下等于SV。


反例:假设在t时刻,SV(设定值)=100,PV(测量值)=100,MV(输出值)=100,未进行PID运算,各值均维持恒定。此时,进入PID运算,Pout(t1)=SV-PV=0,即MV等于0,从而PV大幅波动。而在进行切换时,带来如此大的扰动,是不允许的。
所以,我以为,应是如下算式:Pout(t)=MV(t-1)+Kp*e(t)+Ki*Σe(t-1)+Kd*(e(t)-e(t-1))才更符合实际情况。



山东地瓜

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 676回
  • 年度积分:0
  • 历史总积分:1641
  • 注册:2003年5月10日
发表于:2008-12-18 11:46:40
1楼
没看出取样时间多少                                 

[明月夜]

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-12-18 12:56:51
2楼

你的话题是   Pout(t) 究竞是调节器的输出 还是 输出的变化量?

本来就是"变化量",也就是你最后下的结论.!  许多书上说不清楚, 书的作者并没有实际经验.

△OP= Kp(e+Ki*Σe(t-1)+Kd*(e(t)-e(t-1))   

 

 

 

devil88

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2007年12月07日
发表于:2008-12-18 16:43:38
3楼
台达的手册上(还有其他的手册上)都是:OP= Kp×e(t)+Ki*Σe(t-1)+Kd*(e(t)-e(t-1));  并且台达的PID指令也是按照这个编写的。不知道在实际应用中怎么办,哪位大侠自己用过,望不吝赐教。QQ:46204550 Email:devil_88@163.com

nike717

  • 精华:0帖
  • 求助:2帖
  • 帖子:8帖 | 359回
  • 年度积分:0
  • 历史总积分:493
  • 注册:2007年12月12日
发表于:2008-12-18 20:12:10
4楼
你的理解有问题,如果忽略积分和微分项,只考虑比例项,那么在正常情况下,SV(设定值)不会等于PV,因为这是有差运行,只有考虑了积分,才有SV(设定值)=PV,积分就是为了消除误差

nike717

  • 精华:0帖
  • 求助:2帖
  • 帖子:8帖 | 359回
  • 年度积分:0
  • 历史总积分:493
  • 注册:2007年12月12日
发表于:2008-12-18 20:17:42
5楼
Ki*Σe(t-1)应为Ki*Σe(t)

不懂电的人

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 63回
  • 年度积分:0
  • 历史总积分:148
  • 注册:2006年12月02日
发表于:2008-12-18 20:19:14
6楼
呵呵 不懂 buguo

devil88

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2007年12月07日
发表于:2008-12-19 08:58:09
7楼
引用 nike717 的回复内容: 你的理解有问题,如果忽略积分和微分项,只考虑比例项,那么在正常情况下,SV(设定值)不会等于PV,因为这是有差运行,只有考虑了积分,才有SV(设定值)=PV,积分就是为了消除误差


忽略积分和微分后,有差运行是肯定的。但是按照Pout(t)=MV(t-1)+Kp*e(t)比Pout(t)=Kp*e(t)差值要小得多,并且振荡时间也要短的多。关键是前式在开闭环切换时的大幅扰动是不可接受的。

devil88

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2007年12月07日
发表于:2008-12-19 09:04:03
8楼
错了,是Pout(t)=Kp*e(t)在开闭环切换时的大幅扰动是不可接受的。

热门招聘
相关主题

官方公众号

智造工程师