找回密码
 注册
关于网站域名变更的通知
查看: 950|回复: 7
打印 上一主题 下一主题

PID算法软件编写详解(重点推荐)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-19 09:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
PID算法
, C" }( c; p/ ^8 p& f这个是PID 公式:
0 v6 C/ i8 B: Z7 r  {U(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
. F1 b( m8 c# \; |+ ?对你的系统而言,
! L/ F) O6 e7 x, a* Q2 x6 }8 mU(k)就是当前占空比。我这里先假定 你的占空比对应 定时 器寄存器设置; l6 {# _9 M8 {5 Y" N2 O
范圈是0-85535.同时假定 定时器设置为 a 的时候,/ d( v$ t7 L+ Y0 @+ P. z
占空比输出为0%, 全部是低电平,完全不加热。65535 的时候,占空比输出100%, 全速加( s, ^" T0 X. P
热。0 I8 m/ z0 o% x% K7 u
E(k)是当前温度和设定温度的误差值* X& d6 e& \  ~+ P' z) V
E(-1)是上次计算时的误差值1 c# X2 E) N( R8 ^# n% m
E(k-2)是上上次计算时的误差值
& ?+ R4 |% }, T' S( ]" m! a2 v* U由于KP,KI, KD三个系数现在都不知道。需要整定,有自动整定,也有手动整定。我们
& p/ I' K8 }2 ?7 \# o' ~, k3 B先采取手动整定的方案。$ H' f# ]$ K2 F# b3 h+ d# G( P
我们现在可以知道温度相差# v' F5 e+ X4 P! _; a9 W( G
40C,显然,需要比较快速的加热。水温在正常系统使用的时: @" s+ M7 W1 `1 D; O
候,显然是0-100C的。
& F& K' `1 u1 n. K/ F! n而你们这里需要目标温度是
5 F( D% r+ J3 s) {2 ^30-60C,故最大加热的差值可以认为是
4 _9 l8 h1 u, K; J! x9 o! ?2 l60-0 = 60. (假定不.
+ d: ?8 g/ T9 Q. `4 G' A9 J是冰,是水开始加热)
: O1 R5 c3 H( C) U5 l+ _我们可以认为,在需 要最大加热差值的时候,
. w% l" k7 s# N) `' H仅用比例控制应当是开启全速加热。: n) {/ s1 h& M/ C) m0 J; d
所以我们
* z& N- i0 [/ C3 \9 h6 U可以得到一个KP 的估计值。7 D" u& Z% n/ _1 m/ K- k
KP = 65535/80= 1000左右。这个意思是 最大温差对 应最快加热速度。
: f2 q; O- E" F: C然后,假设KI=800, KD=300:比例系数Kp=最大寄存器差值- 实际情况巴温度等老最大差值门
6 _) B" u5 |" R; `* W+ G' _, A, E+ w% L注意,系数需要根据实际情况来整定,此为假设。
& x5 r. u: l  ^" Q+ R7 |6 o; E好,现在假定设置! h) [* \0 s2 f0 p. r: f
需要温度是60C, 而当前温度是3 H- J# y3 L2 m9 y7 ]2 s/ R$ N: z7 D
20C.那么可以知道2 [! V6 L9 d4 ~, }9 P: E/ ~! h
第一次
) k. O) F+ @5 [1 V: o% E6 AU(k)=0
4 W1 T, L+ v: u5 f9 V* |-最开始是没有占空比输出的。所以是占空比是 0# S$ e* V# u  A/ C) f' j
E(k)= 60-20 = 40/ Q; C. i: s+ @; W
-一第一次的误差4 s$ {* N. r* z1 @8 g
E(k-1)=0
( u; X; E! b* d4 X5 J' |- i+ w8 Y( Q- .还没有上次,所以初始化为 05 w6 L1 {& _& L) x0 x6 Z
E(k-2)=03 y8 H9 ~- P. v4 N
-还没有上上次,所以初始化为. V2 c8 A) M0 ^. m! f
由于KP假定是1000, 所以
, D& \1 v3 k# |$ E% K! u5 ?. rU[(k+1)= 40"1000 = 40000
! q2 Z! S3 `% s/ n所以,现在就可以按照
5 r' f& I9 P9 i9 L) {占空比40000 来加热了。
0 n0 A6 O, U" r: [& B' t7 o由于热系统是一个缓慢变化的系统,
- F9 Z( K  F: c所以,加热需要- -段时间才可以看到效果,4 V$ j6 H* Q6 O
假设采用固, ]1 o) A0 I  Y9 ~; z/ I
定间隔时间来设计。这里取
, z# p  ~5 r) I  d5秒。3 d9 z, H; @9 u. T7 l* L5 I% w
5秒过后,假定温度上升了2 H9 V9 \- X# F
5C,当前温度为25C.
( J, q; Z! Z: F8 f8 b$ {7 @则计算第二次占空比过程。* @# X9 j' V: u- _" n
第二次
2 @7 y  D0 z/ a& V) }/ XU(k) = 400006 U% D* s# b6 V9 a% c, r
E(k)= 60-25=35  _# l' F2 \! Y4 G6 y6 y# k; q
E(k-1)=40" H/ B. s$ x9 s5 l0 R1 a8 o8 o
E(k-2)=0
6 d' R* J% |/ _# x/ @! cU(k+1) = 40000 + 35"1000 - 40*800 + 0 = 43000
( W/ S+ ^0 N. o(加热加速了)
$ y) e! o0 {; ~6 E9 Q& {又过了5秒,假定温度上升了 6C.当前温度为 29C
8 u2 S' j, v& F* K- v4 }1 r0 r  I第三次
# V8 x- c: s2 c0 T( u0 e" H$ y
游客,如果您要查看本帖隐藏内容请回复
3 m" l0 U$ @) H- X* X3 E

/ b& O1 v0 P$ X% i; p' _+ Q

该用户从未签到

2#
发表于 2020-1-19 16:56 | 只看该作者
U(k+1)= U(k)+( KP"E(k)- KI"E(k-1)+ KD"E(k-2) )
  • TA的每日心情
    开心
    2021-6-16 15:02
  • 签到天数: 68 天

    [LV.6]常住居民II

    3#
    发表于 2020-5-21 08:54 | 只看该作者
    學習學習學習學習7 b* [9 G9 i( V5 O; q( K# ?
  • TA的每日心情

    2024-8-7 15:30
  • 签到天数: 396 天

    [LV.9]以坛为家II

    4#
    发表于 2022-3-24 10:10 | 只看该作者
    66666666666666. G- z3 O! z5 Q$ M' `

    该用户从未签到

    5#
    发表于 2023-3-8 11:27 | 只看该作者
    PID一直运行不好,参考一下这个。谢谢!
  • TA的每日心情
    开心
    2025-8-14 15:01
  • 签到天数: 630 天

    [LV.9]以坛为家II

    6#
    发表于 2023-3-16 15:56 | 只看该作者
    学习学习,谢谢!( G( e. }# V, h
  • TA的每日心情

    2025-3-28 15:00
  • 签到天数: 272 天

    [LV.8]以坛为家I

    7#
    发表于 2023-11-18 09:51 | 只看该作者
    1111111111111
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-30 17:15 , Processed in 0.171875 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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