卢本伟 发表于 2025-12-9 09:27:01

求助火山pid算法封装

如题。。。。。。。。。。。。。。。。。。。。。。。

zhqyong 发表于 2025-12-9 12:08:52

豆包:   “用递归火山软件中文编程进行pid算法封装"

server 发表于 2025-12-9 12:42:30

pid是什么?

a759077146 发表于 2025-12-9 12:45:07

<火山程序 类型 = "通常" 版本 = 1 />

类 PID算法 <公开>
{
    方法 PID初始化_Position <公开 折叠>
    参数 采样周期 <类型 = 小数>
    参数 最大调整值 <类型 = 小数>
    参数 最小调整值 <类型 = 小数>
    参数 KP <类型 = 小数>
    参数 KI <类型 = 小数>
    参数 KD <类型 = 小数>
    {
      PID.采样周期 = 采样周期
      PID.最大调整值 = 最大调整值
      PID.最小调整值 = 最小调整值
      PID.KP = KP
      PID.KI = KI
      PID.KD = KD
      PID.积分和 = 0
      PID.上次偏差 = 0
      PID.当前偏差 = 0



    }

    方法 PID算法_Y <公开 类型 = 整数 折叠>
    参数 目标Y <类型 = 整数>
    参数 视角Y <类型 = 整数>
    {
      变量 比例部分 <类型 = 小数>
      变量 积分部分 <类型 = 小数>
      变量 误差变化率 <类型 = 小数>
      变量 微分部分 <类型 = 小数>
      变量 控制输出 <类型 = 小数>
      PID.当前偏差 = 目标Y - 视角Y
      比例部分 = PID.KP * PID.当前偏差
      PID.积分和 = PID.积分和 + PID.当前偏差 * PID.采样周期
      积分部分 = PID.KI * PID.积分和
      误差变化率 = (PID.当前偏差 - PID.上次偏差) / PID.采样周期
      微分部分 = PID.KD * 误差变化率
      控制输出 = 比例部分 + 积分部分 + 微分部分
      PID.上次偏差 = PID.当前偏差
      返回 ((整数)四舍五入 (控制输出, 0))





    }

    方法 PID算法_X <公开 类型 = 整数 折叠>
    参数 目标X <类型 = 整数>
    参数 视角X <类型 = 整数>
    {
      变量 比例部分 <类型 = 小数>
      变量 积分部分 <类型 = 小数>
      变量 误差变化率 <类型 = 小数>
      变量 微分部分 <类型 = 小数>
      变量 控制输出 <类型 = 小数>
      PID.当前偏差 = 目标X - 视角X
      比例部分 = PID.KP * PID.当前偏差
      PID.积分和 = PID.积分和 + PID.当前偏差 * PID.采样周期
      积分部分 = PID.KI * PID.积分和
      误差变化率 = (PID.当前偏差 - PID.上次偏差) / PID.采样周期
      微分部分 = PID.KD * 误差变化率
      控制输出 = 比例部分 + 积分部分 + 微分部分
      PID.上次偏差 = PID.当前偏差
      返回 ((整数)四舍五入 (控制输出, 0))





    }

    #
    #
}

类 PID <公开 折叠 "">
{
    变量 采样周期 <公开 静态 类型 = 小数>
    变量 最大调整值 <公开 静态 类型 = 小数>
    变量 最小调整值 <公开 静态 类型 = 小数>
    变量 KP <公开 静态 类型 = 小数>
    变量 KI <公开 静态 类型 = 小数>
    变量 KD <公开 静态 类型 = 小数>
    变量 积分和 <公开 静态 类型 = 小数>
    变量 上次偏差 <公开 静态 类型 = 小数>
    变量 当前偏差 <公开 静态 类型 = 小数>

    #
}
页: [1]
查看完整版本: 求助火山pid算法封装