紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 4734|回复: 0

[其他] 用STL自己写pid模块

[复制链接]
冰糖 发表于 2010-7-13 21:19:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
看到亿万论坛有人贴了段自己写的pid模块,是增量式pid,用stl写的,如下:
------------------------------------
以下为转贴哦:
------------------------------------
增量式PID的PI控制FC源码

在OB35下100MS通过!能实现PI调节:

CALL FC 20
SetValve :=MD20
ProcessValve:=MD24
K_P :=MD28
K_I :=MD32
Error1 :=MD36
Error2 :=MD40
Controlout :=MD44
PIcontrol :=MD48

内部用了但末显示的变量为TEMP!前四个为INPUT,Error1以下为IN_OUT

FC20:

L #SetValve
L #ProcessValve
-R
T #Error1

L #Error1
ABS
L 1.000000e+000
>R
JC Fine
L 0.000000e+000
T #PIcontrol
Fine: L #Error1
L #Error2
-R
L #K_P
*R
T #P_Control
L #Error1
L #K_I
*R
L #P_Control
+R
T #PIcontrol

L #Controlout
L #PIcontrol
+R
T #Controlout

L #Error1
T #Error2







向大家学习!!

OutLast:=Kc*(Pv_K1-Pv)+Ki*(Sv-Pv)+Kd*(2*Pv_K1-Pv-Pv_K2)+OutLast

这是按公司计算的!

请大家多提意见和建议!应用的公式!

OutLast:=Kc*(Pv_K1-Pv)+Ki*(Sv-Pv)+OutLast

以便进一步改进!

------------------------------------
我去网上查了一下,增量式pid有一个这样的公式,跟上面网友贴的差不多:
------------------------------------------------------------------
我提供一种增量式PID供大家参考

△U(k)=Ae(k)-Be(k-1)+Ce(k-2)
A=Kp(1+T/Ti+Td/T)
B=Kp(1+2Td/T)
C=KpTd/T
T采样周期 Td微分时间 Ti积分时间

用上面的算法可以构造自己的PID算法。
U(K)=U(K-1)+△U(K)
---------------------------------

根据这个公式,我用scl写了一段pid程序,简单测试了一下,还凑合,不过没有实际找个系统来测试啊,心里还是有点发虚。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-5-17 14:03 , Processed in 0.359377 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表