PID双环模型模拟

本文探讨了单环与双环PID控制器在模拟四轴飞行器中的效果。实验显示,单环PID虽然能快速接近目标角度,但过程不稳定,可能引起机体震荡。通过调整参数,采用双环PID控制,可以改善这一问题。第一次实验中外环kp=0.1,内环kp=0.1,ki=0.4,kd=0.1,导致响应陡峭。第二次实验将外环kp提高到0.2,响应变得更陡。第三次实验在外环增加ki=0.1,进一步优化控制性能。
摘要由CSDN通过智能技术生成

外环:输入target_angle,angle,参数(kp);输出target_rate(目标角速度)

内环 :输入target_rate,参数(kp,ki,kd);输出rate(“实际”角速度)

模拟环境,使用语言为python,初始角度为0,目标角度为30,通过调整内外环参数,使角度趋近为30

前言

在单环pid中,参数kp=0.1,ki=0.4,kd=0.1条件下,迭代后图形为,图像虽能较快贴近目标,但过程不平稳,若应用在四轴飞行器中,可能会发生机体震荡,若使用双环pid控制,则可以较好地解决这些问题

第一次实验:外环kp=0.1,内环kp=0.1,ki=0.4,kd=0.1,单一循环

import matplotlib.pyplot as plt
target_angle = 30
angle = 0
target_rate = 0
class inner_Pid():
    def __init__(self,exp_rate,kp,ki,kd):
        self.KP = kp
        self.KI = ki
        self.KD = kd
        self.exp_rate = exp_rate
        self.now_rate = 0
        self.sum_rate = 0
        self.now_err = 0
        self.last_err = 0
    def cmd_innerpid(self):
        self.last_err = self.now_err
        self.now_err = self.exp_rate - self.now_rate
        self.sum_rate += self.now_err
        self.now_rate = self.KP * (self.exp_rate - self.now_rate) \
                        + self.KI * self.sum_rate + self.KD * (self.now_err - self.last_err)
        return self.now_rate

class outer_Pid():
    def __init__(self,exp_angle,now_angle,kp):
        self.KP = kp
        self.exp_angle = exp_angle
        self.now_angle = now_angle
        self.now_err = 0
        self.target_rate = 0
    def cmd_outerpid(self):
        self.target_rate = self.KP * (self.exp_angle - self.now_angle)

        return self.target_rate

pid_val = []

test_innerpid = inner_Pid(30, 0.1, 0.4, 0.1)
test_outerpid = outer_Pid(target_angle,angle,0.1)

for i in range(0,100):
    target_rate = test_outerpid.cmd_outerpid()
    test_innerpid = inner_Pid(target_rate,0.1,0.4,0.1)
    angle += test_innerpid.cmd_innerpid()
    pid_val.append(angle)
    test_outerpid = outer_Pid(target_angle,angle,0.1)
plt.plot(pid_val)
plt.show()

图像为

 第二次实验:调整外环kp=0.2,保持内环kp=0.1,ki=0.4,kd=0.1,单一循环

代码省略,仅在实验一中调整参数即可

图像为

 较实验一而言更陡

将外环kp调整为0.5后,如图,便可看出双环与单环的差别了

 第三次实验:外环kp=0.5,增加ki=0.1,内环kp=0.1,ki=0.4,kd=0.1,双循环

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值