PID参数调试Python波形显示

在这里插入图片描述

1. PID(比例-积分-微分)

PID(比例-积分-微分)调参是一种广泛应用于工业控制系统的反馈控制方法,通过调整比例§、积分(I)和微分(D)三个参数来控制系统误差,提高系统的稳定性和响应速度。以下是PID调参的详细介绍:
比例调节(P)。比例调节根据设定值与实际值之间的误差进行调节,当出现误差时,比例调节器会根据误差大小成比例地调整输出以减小误差,从小到大调整比例系数,直到系统出现振荡,此时的比例系数是较为合适的。
积分调节(I)。积分调节的作用是消除系统误差,积分调节器会根据误差大小和时间进行调节以逐步消除误差,适当增大积分系数可以加快系统响应速度,但要注意避免积分过调和振荡。
微分调节(D)。微分调节预测系统未来的变化趋势,微分调节器会根据误差大小和变化速度进行调节,适当减小微分系数可以减少系统灵敏度,避免过调,但要避免微分振荡。
在调整PID参数时,需要根据实际系统和应用需求进行针对性调整,综合考虑系统的稳定性、响应速度、超调量和稳态精度,对于不同的系统,需要适当调整微分系数,如果系统响应较快,则可以适当增大微分系数;如果系统响应较慢,则可以适当减小微分系数。此外,还可以通过计算相角裕度和幅值来设计PID参数

2、 PID参数如何调试

											**PID调节器的参数调整口诀如下:**
											
											参数整定找最佳,从小到大顺序查。
											先是比例后积分,最后再把微分加。
											曲线振荡很频繁,比例度盘要放大。
											曲线漂浮绕大湾,比例度盘往小扳。
											曲线偏离回复慢,积分时间往下降。
											曲线波动周期长,积分时间再加长。
											曲线振荡频率快,先把微分降下来。
											动差大来波动慢,微分时间应加长。
											理想曲线两个波,前高后低四比一。
											一看二调多分析,调节质量不会低。

1、手动调整法

这种方法通常涉及对PID参数进行手动微调,以达到满意的控制效果。例如,可以先调整比例增益§,然后调整积分增益(I),最后引入微分增益(D)。在调整过程中,观察系统的响应,如超调、振荡和稳定时间等,根据响应调整参数,直至达到最佳性能。

2、极点配置法

这种方法适用于线性系统。首先计算相角裕度,然后使用极点配置技术将系统的极点配置到期望的位置,如60度相角裕度。这需要先将传递函数转换为PID参数形式,然后进行优化。

3、根轨迹法

对于高阶或具有震荡特性的系统,可以使用根轨迹技术进行PID参数调整。通过观察系统根轨迹的变化,可以找到使系统稳定的最佳PID参数。

4、基于软件工具的方法

如使用专门的PID调校工具,如Betaflight的Pidtoolbox。这些工具允许用户上传飞行过程中的数据,然后分析并调整PID参数,以优化飞行性能。

每种方法都有其适用场景和优缺点,选择哪种方法取决于用户的具体需求和系统特性。通常,对于初学者或非专业人士,手动调整法可能更为直观和易于操作;而对于专业人士或需要精确控制的应用,极点配置法或根轨迹法可能更为适用。

最后我选择使用工具进行调整参数。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c0d3979fd15d43428765eeecda72fadb.pn

'''实时刷新显示波形数据'''
def show_plot():

    global show_data,t,fig1,canvas,flag_start,show_data2
    global flag_start, show_data, t
    global err, sum_err, derr, pwm
    global MySerial, index
    if flag_start:
        with lock:  # with模块自动加锁及解锁
            show_data_thd = show_data

            show_data_thd2 = err
            show_data_thd3 = derr
            show_data_thd4 = pwm
            show_data_thd5 = sum_err
            t_thd = t

            if len(t_thd) != len(show_data_thd5) or len(t_thd) != len(show_data_thd4) or len(t_thd) != len(show_data_thd2):
                print("len(t_thd) != len(show_data_thd)",len(t_thd),len(show_data_thd5),len(show_data_thd4),len(show_data_thd2))
                show_data = []
                err = []  # 误差
                sum_err = []  # 积分
                derr = []  # 微分
                pwm = []  # 输出pwm
                t = []
                index = 0
            elif t_thd != []:
                fig1.clear()

                fig1.plot(t_thd, show_data_thd,label='temp',color='red')





                fig1.text(t_thd[len(t_thd) - 1], show_data_thd[len(t_thd) - 1], show_data_thd[len(t_thd) - 1],
                          ha='center', va='bottom', fontsize=10)
                fig1.axhline(y=show_data_thd[len(t_thd) - 1], ls=":", c="yellow")  # 添加水平直线

                fig1.text((t_thd[int(len(t_thd)/2)]), show_data_thd[int(len(t_thd)/2)], show_data_thd[int(len(t_thd)/2)],
                          ha='center', va='bottom', fontsize=10)
                fig1.axhline(y=show_data_thd[int(len(t_thd)/2)], ls=":", c="green")  # 添加水平直线

                fig1.text( t_thd[0], show_data_thd[0], show_data_thd[0],
                          ha='center', va='bottom', fontsize=10)
                fig1.axhline(y=show_data_thd[0], ls=":", c="red")  # 添加水平直线
                fig1.legend()


                fig2.clear()
                fig2.plot(t_thd, show_data_thd5, label='sum_err', color='green')

                fig2.grid(linestyle='-.')
                fig2.legend()

                fig3.clear()
                fig3.plot(t_thd, show_data_thd2, label='err', color='blue')
                fig3.grid(linestyle='-.')
                fig3.legend()

                fig4.clear()
                fig4.plot(t_thd, show_data_thd4, label='pwm', color='purple')
                fig4.grid(linestyle='-.')
                fig4.legend()
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿Q学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值