【python】python 鱼鹰型倾斜旋翼飞机控制系统(源码+图析)【独一无二】


鱼鹰型倾斜旋翼飞机控制系统(源码+图析)【独一无二】



(a)是V-22鱼鹰型倾斜旋翼飞机示意图。V-22既是一种普通飞机,又是一种直升机。当飞机起飞和着陆时,其发动机位置可以如图示那样,使V-22像直升机那样垂直起降;而在起飞后,它又可以将发动机旋转90”,切换到水平位置,像普通飞机一样飞行。在直升机模式下,飞机的高度控制系统如图(b)所示。0)概略绘出当控制器增益K,变化时的系统根轨迹图,确定使系统稳定的K,值范围:
(2)当K,=280时,求系统对单位阶跃输入r(t)=1(t)的实际输出h(t),并确定系统的超调量和调节时间
(A=2%)

在这里插入图片描述
在这里插入图片描述

代码设计思路分析

该代码围绕鱼鹰自动控制系统的动态响应进行设计,利用传递函数、阶跃响应和反馈控制分析闭环系统的性能指标,主要包括以下功能:

  1. 定义一个二阶线性系统的传递函数 P(s) 表示被控系统。
  2. 定义控制器 C(s),并分析开环系统和闭环系统的动态性能。
  3. 分析系统的主要性能指标 超调量调节时间
  4. 判断闭环系统是否满足设计规范(调节时间小于 2 秒)。
  5. 通过模拟阶跃响应,绘制系统响应曲线。

代码结构和设计逻辑

1. 系统传递函数的定义
numerator = [1]  # 分子
denominator = [1, 1.8, 1]  # 分母
P_s = ctrl.TransferFunction(numerator, denominator)

设计思路:

  • 背景:鱼鹰自动控制系统的核心部分为一个被控对象,该对象通常通过传递函数描述其动态行为。

  • 实现

    • 被控系统通过传递函数形式定义,即:
      P(s) = 1 / (s² + 1.8s + 1)
    • 分子的多项式系数存于 numerator,分母对应二阶系统多项式的系数存于 denominator
  • 意义

    • 1:分子为 1,系统为标准二阶系统;
    • 1.8:分母中的一阶项系数,与系统阻尼比和极点位置直接相关;
    • 1:分母中的常数项,代表系统固有的特性。

2. 控制器的设计
K = 280  # 增益
C_s = ctrl.TransferFunction([K], [1])

设计思路:

  • 背景:为了对系统进行控制,引入比例控制器,控制器函数为:C(s) = K

  • 实现

    • 控制器 C(s) 定义为一个比例增益,增益值为 K = 280,此处使用一个简单的比例控制器。
  • 意义

    • 增益 K 的大小直接影响闭环系统的稳定性、响应速度和超调量。
    • 随着增益值增加,系统表现出更快的响应,但可能增加系统的超调量和振荡。

3. 开环与闭环系统的建立
open_loop = C_s * P_s
# 代码略.....至少10行
# 代码略.....至少10行

设计思路:

  • 背景:实际系统中,我们通常使用反馈控制系统,以提高系统的动态性能和跟踪能力。

  • 实现

    • open_loop:定义开环传递函数,描述控制器和被控系统的串联组合;
      G_open(s) = C(s) * P(s) = (K) / (s² + 1.8s + 1)
    • closed_loop:通过反馈控制器引入反馈环路,描述闭环控制系统的整体动态特性:
      T(s) = C(s) * P(s) / (1 + C(s) * P(s))
    • 使用 ctrl.feedback 函数实现闭环系统的传递函数。
  • 意义:闭环控制系统针对外部输入信号的动态响应是后续分析的重点。


4. 性能指标的分析
info = ctrl.step_info(closed_loop)
overshoot = info["Overshoot"]
settling_time = info["SettlingTime"]

设计思路:

  • 背景

    • 动态系统的性能通常通过超调量、调节时间等指标衡量。
    • 控制系统中常需要保证调节时间足够短,同时超调量不能过高。
  • 实现

    • 使用 ctrl.step_info 函数计算闭环系统的性能指标:
      • 超调量(Overshoot):响应首次超过稳态值的最大百分比;
      • 调节时间(Settling Time):系统响应进入并保持在稳态误差范围(通常定义为 ±2%)内所需的时间。
  • 意义

    • 超调量反映系统的稳定性,过大的超调量可能导致系统剧烈振荡;
    • 调节时间用于衡量响应速度,是实际系统设计的关键指标。

5. 判断性能要求
is_settling_time_ok = settling_time < 2
# 代码略.....至少10行
# 代码略.....至少10行
else:
    print(f"第二问 - 调节时间为 {settling_time:.2f} 秒")

设计思路:

  • 背景:在系统设计中,要求调节时间(Settling Time)小于 2秒,否则视为不满足控制目标。

  • 实现

    • 比较实际调节时间与目标要求 2秒,通过布尔变量 is_settling_time_ok 判断是否满足规范;
    • 输出结果,以便设计者依据反馈修改系统参数(如增益)。
  • 意义

    • 判断是否满足调节时间要求,属于控制系统设计中的基本校验步骤。

6. 阶跃响应的绘制
time = np.linspace(0, 10, 1000)
# 代码略.....至少10行
# 代码略.....至少10行

plt.ylabel("响应幅值")
plt.grid()
plt.legend()
plt.show()

设计思路:

  • 背景

    • 阶跃响应是控制系统分析中的常见测试,它能直观反映系统动态行为(稳定性、响应速度、超调等)。
  • 实现

    1. 生成时间序列 time = np.linspace(0, 10, 1000),代表仿真时间;
    2. 使用 ctrl.step_response 计算阶跃输入下的响应数据 response
    3. 使用 matplotlib 绘制响应曲线,并添加期望值的水平参考线(响应幅值 1)。
  • 意义

    • 阶跃响应图能直接解释系统是否稳定,是否快速达到并保持在期望值附近。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值