VB 增量式 PID 算法的一个问题
2014-04-16 13:00
267 查看
Option Explicit
Dim EK1 As Single, EK2 As Single
Dim U As Single
Dim Uk As Single, Uk1 As Single, A As Single, B As Single, C As Single, Ek As Single
Dim Ti As Integer, Td As Integer, Kp As Integer
Dim SP As Single, PV As Single
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Timer1_Timer()
Ti = Val(Text1) '读取积分时间值
Td = Val(Text2) '读取微分时间值
Kp = Val(Text3) '读取比例值
SP = Val(Text4) '设定值
Text5.Text = Val(VScroll1.Value)
PV = Val(Text5) '模拟的反馈值
If Ti = 0 Then
A = Kp * (1 + Td)
Else
A = Kp * (1 + 1 / Ti + Td)
B = Kp * (1 + 2 * Td)
C = Kp * Td
Ek = SP - PV
Uk = A * Ek - B * EK1 + C * EK2
Text6.Text = Uk '输出显示
End If
EK2 = EK1
EK1 = Ek
End Sub
求助各位版主,这是我编写的PID控制程序,EK表示当前的测量误差,EK1是上次测量误差,EK2是上上次误差,然后PID算法根据这三次误差输出控制量UK,正确的功能应该是根据系统设定值和实际输出值求得Ek = SP - PV,然后将这个的EK值传递给EK1,下一次测量值编程Ek,以此类推!我现在的问题是,无法将当前的测量误差传递给上一次,按着我编的程序,这三次误差实际上都等于当前的误差,求各位版主看一下问题出在哪儿!
Dim EK1 As Single, EK2 As Single
Dim U As Single
Dim Uk As Single, Uk1 As Single, A As Single, B As Single, C As Single, Ek As Single
Dim Ti As Integer, Td As Integer, Kp As Integer
Dim SP As Single, PV As Single
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Timer1_Timer()
Ti = Val(Text1) '读取积分时间值
Td = Val(Text2) '读取微分时间值
Kp = Val(Text3) '读取比例值
SP = Val(Text4) '设定值
Text5.Text = Val(VScroll1.Value)
PV = Val(Text5) '模拟的反馈值
If Ti = 0 Then
A = Kp * (1 + Td)
Else
A = Kp * (1 + 1 / Ti + Td)
B = Kp * (1 + 2 * Td)
C = Kp * Td
Ek = SP - PV
Uk = A * Ek - B * EK1 + C * EK2
Text6.Text = Uk '输出显示
End If
EK2 = EK1
EK1 = Ek
End Sub
求助各位版主,这是我编写的PID控制程序,EK表示当前的测量误差,EK1是上次测量误差,EK2是上上次误差,然后PID算法根据这三次误差输出控制量UK,正确的功能应该是根据系统设定值和实际输出值求得Ek = SP - PV,然后将这个的EK值传递给EK1,下一次测量值编程Ek,以此类推!我现在的问题是,无法将当前的测量误差传递给上一次,按着我编的程序,这三次误差实际上都等于当前的误差,求各位版主看一下问题出在哪儿!
相关文章推荐
- 关于Top n算法问题的一个思路
- 一个概率算法问题
- [置顶]一个从四秒到10毫秒,花了1年的算法问题?
- 一致性问题和Raft一致性算法——一致性问题是无法彻底解决的,可以说一个分布式系统可靠性达到99.99…%,但不能说它达到了100%
- 一个取巧找重复值的算法问题
- 阶乘问题(大数阶乘)简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 *【模板】 )
- 一个简单的多机器人编队算法实现--PID
- 标准的PID处理例程 (转载的一个工业控制中常用算法)
- TCP/IP端口以及sockets编程的一些问题以及算法一个
- 提供一个逻辑问题的算法!(最近打的大家参考一下)
- .NET的世界里,入门的VB / C#语法转换不该是一个问题。
- 算法题:问题:输入一个数n(0<x<10),输入由1-n组成的所有可组成的数
- VB.NET函数的返回值问题(从CSDN论坛一个问题想到的)
- pid 算法 第一个微分问题
- 深入N皇后问题的一个高效算法的详解
- 一个数组变换的算法问题-关于前端的分页功能排序(点击/热门)功能
- 一个关于Random算法的问题
- 一天一个算法题-简单的-递归-猴子吃桃问题
- 请教一个vb问题