⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fuzzy_pid_module1.bas

📁 采样窑炉温度
💻 BAS
字号:
Attribute VB_Name = "Fuzzy_PID_Module1"
Option Explicit
Public Kp(12, 12) As Single
Public Kd(12, 12) As Single
Public Ki(12, 12) As Single
Public E_Present As Single, E_Next As Single, ΔKp As Single, ΔKi As Single, ΔKd As Single
Public E As Integer, EC As Integer
Public Emax As Single, ECmax As Single, Kp_All As Single, Ki_All As Single, Kd_All As Single
Public Kp_Start As Single, Kd_Start As Single, Ki_Start As Single, E_All As Single, Control_Output As Single
Public Max_Output As Single, Control_tine As Single
Public Sub fuzzy_function()
  E_Present = wencha
  'MsgBox (E_Present)
  wencha_Change = E_Present - E_Next
   'MsgBox ("wencha_Change=" & wencha_Change)
  E_Next = E_Present
  'MsgBox ("E_Next=" & E_Next)
  E_All = E_All + wencha
 If wencha >= Emax Then
   E = 6
 ElseIf wencha <= -Emax Then
   E = -6
 Else
   E = wencha * 6 / Emax
 End If
 'MsgBox (E)
 If wencha_Change >= ECmax Then
   EC = 6
 ElseIf wencha <= -Emax Then
   EC = -6
 Else
   EC = wencha_Change * 6 / Emax
 End If
 'MsgBox (EC)
 If T > 950 Then
   Kp_Start = 12                                                                          '比例系数初始值
   Ki_Start = 12 * Val(AD_Form.Period_Txt.Text) / 12                                      '积分系数初始值
   Kd_Start = 12 * 20 / Val(AD_Form.Period_Txt.Text)                                      '微分系数初始值
   ΔKp = 2 * Kp(E + 6, EC + 6) / 1.31                                        '比例调节范围(-2, 2)
   ΔKi = Ki(E + 6, EC + 6) / 1.31                                            '积分调节范围(-1, 1)
   ΔKd = Kd(E + 6, EC + 6) * 5 / 1.76                                        '微分例调节范围(-5, 5)
   Kp_All = Kp_Start + ΔKp
   Ki_All = Ki_Start + ΔKi
   Kd_All = Kd_Start + ΔKd
 Else
   Kp_Start = 7                                                                         '比例系数初始值
   Ki_Start = 7 * Val(AD_Form.Period_Txt.Text) / 100                                     '积分系数初始值
   Kd_Start = 7 * 35 / Val(AD_Form.Period_Txt.Text)                                      '微分系数初始值
   ΔKp = Kp(E + 6, EC + 6) * 2 / 1.31                                      '比例调节范围(-2, 2)
   ΔKi = Ki(E + 6, EC + 6) * 0.2 / 1.31                                     '积分调节范围(-0.2, 0.2)
   ΔKd = Kd(E + 6, EC + 6) * 5 / 1.76                                      '微分例调节范围(-5, 5)
   Kp_All = Kp_Start + ΔKp
   Ki_All = Ki_Start + ΔKi
   Kd_All = Kd_Start + ΔKd
 End If
 'MsgBox (Kp_All)
   AD_Form.P_label.Caption = Format(Kp_All, "0.000")
   AD_Form.I_label.Caption = Format(Ki_All, "0.000")
   AD_Form.D_label.Caption = Format(Kd_All, "0.000")
  If AD_Form.Man_opt = True Then
    AD_Form.Frame2.Caption = ""
    AD_Form.Frame3.Caption = "PID参数手动方式显示"
    AD_Form.P_text.BackColor = &H80000005                                '白色
    AD_Form.I_text.BackColor = &H80000005
    AD_Form.D_text.BackColor = &H80000005
    Kp_All = Val(AD_Form.P_text.Text)
    Ki_All = Val(AD_Form.I_text.Text)
    Kd_All = Val(AD_Form.D_text.Text)
    Control_Output = Kp_All * wencha + Ki_All * E_All + Kd_All * wencha_Change             'PID手动调节的控制量
  Else
    AD_Form.Frame2.Caption = "PID参数自动方式显示"
    AD_Form.Frame3.Caption = ""
    AD_Form.P_text.BackColor = &H8000000B                                '灰色
    AD_Form.I_text.BackColor = &H8000000B
    AD_Form.D_text.BackColor = &H8000000B
    Control_Output = Kp_All * wencha + Ki_All * E_All + Kd_All * wencha_Change             'PID自动调节的控制量
  End If
  'If T <= 150 Then
      'Max_Output = 100
   'Else
    'Max_Output = 3000
    'End If
  If Control_Output >= Max_Output Then
     Max_Output = Control_Output
     Control_tine = Control_Output * Val(DIO_Form.interval2.Text) / Max_Output
     DIO_Form.interval1.Text = Format(Control_tine, "0.00")
    End If
   If Control_Output <= 0 Then
     DIO_Form.interval1.Text = 0
    Else
     Control_tine = Control_Output * Val(DIO_Form.interval2.Text) / Max_Output
     DIO_Form.interval1.Text = Format(Control_tine, "0.00")
   End If
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -