加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB写的PID控制源码公布

发布时间:2020-12-16 22:42:29 所属栏目:大数据 来源:网络整理
导读:Private Function PIDcalc(SV As Integer,PV As Integer) As Double Dim SVtemp As Double,PVtemp As Double Kc = CDbl(Kcin / 10#) Ti = CDbl(Tiin / 10#) Td = CDbl(Tdin / 10#) Ts = CDbl(Tsin / 10#) Kp = Kc Ki = Kc * Ts / Ti Kd = Kc * Td / Ts SVn_l

Private Function PIDcalc(SV As Integer,PV As Integer) As Double
Dim SVtemp As Double,PVtemp As Double
Kc = CDbl(Kcin / 10#)
Ti = CDbl(Tiin / 10#)
Td = CDbl(Tdin / 10#)
Ts = CDbl(Tsin / 10#)
Kp = Kc
Ki = Kc * Ts / Ti
Kd = Kc * Td / Ts

SVn_last = SVn_now
SVtemp = CDbl(SV / 32000&)
If SVtemp > 1# Then SVtemp = 1#
If SVtemp < 0# Then SVtemp = 0#
SVn_now = SVtemp

PVn_last = PVn_now
PVtemp = CDbl(PV / 32000&)
If PVtemp > 1# Then PVtemp = 1#
If PVtemp < 0# Then PVtemp = 0#
PVn_now = PVtemp
PVn_now = CDbl(PV / 32000&)

En_last = En_now
En_now = SVn_now - PVn_now

MPn = Kp * En_now


MIn = Ki * En_now + MXn_last
MXn_last = MIn

'MDn = Kd * (En_now - En_last)
MDn = Kd * (PVn_last - PVn_now)

Mn = MPn + MIn + MDn
If Mn > 1# Then MXn_last = 1# - (MPn + MDn)
If Mn < 0# Then MXn_last = 0# - (MPn + MDn)

If Mn > 1# Then Mn = 1#
If Mn < 0# Then Mn = 0#

PIDcalc = Mn

End Function

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读