控制教程 —— 巡航控制篇:1.系统建模及开环响应分析

2023-12-22 21:30

本文主要是介绍控制教程 —— 巡航控制篇:1.系统建模及开环响应分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 物理模型建立
    • 系统动力方程式
    • 系统参数配置
    • 状态空间模型
    • 传递函数模型
    • 控制指标设计
    • 开环阶跃响应
    • 开环极点/零点
    • 开环伯德图

物理模型建立

在现代车辆的反馈控制系统中,自动巡航控制一个典型的例子。巡航控制系统的目的是在不受外界干扰(如风或坡度变化)的情况下保持恒定的车速。可以通过测量测速,将其与期望速度或参考速度进行比较,并根据控制规律自动调节油门来实现。
在这里插入图片描述
这里我们考虑一个简单的车辆动力学模型,如上面的受力分析图。质量为m的车辆收到控制力u的作用,作用力u表示在道路/轮胎面产生的力,对于这个简化的模型,我们将假定我们可以直接控制该力,而忽略产生该力的动力总成,轮胎等影响。假定由于滚动摩擦和风阻而产生的阻力bv随车速v线性变化,作用方向与车辆运动方向相反。

系统动力方程式

基于以上假设,我们可以建立一阶质量阻尼器系统,沿x方向求和应用牛顿第二定律,我们得出以下系统方程:
m v ˙ + b v = u m \dot{v} + b v = u mv˙+bv=u由于我们对控制车辆的速度感兴趣,因此输出方程选择如下:
y = v y = v y=v

系统参数配置

对于上述例子,我们假设系统的参数为:
m 车辆质量 1000 kg
b 阻尼系数 50 N.s/m
u 额定控制力 500 N

状态空间模型

一阶系统只有一种能量存储模式,该例子中是汽车的动能,因此只需要一个状态变量,即速度。因此,状态空间表示为:
x ˙ = [ v ˙ ] = [ − b m ] [ v ] + [ 1 m ] [ u ] \dot{\mathbf{x}}=[\dot{v}]=\left[\frac{-b}{m}\right][v]+\left[\frac{1}{m}\right][u] x˙=[v˙]=[mb][v]+[m1][u] y = [ 1 ] [ v ] y=[1][v] y=[1][v]我们使用以下命令将状态空间模型输入到MATLAB中:

m = 1000;
b = 50;A = -b/m;
B = 1/m;
C = 1;
D = 0;cruise_ss = ss(A,B,C,D);

传递函数模型

将控制微分方程进行拉普拉斯变换,并假设零初始条件,可以得到巡航控制系统的传递函数为:
P ( s ) = V ( s ) U ( s ) = 1 m s + b [ m / s N ] P(s) = \frac{V(s)}{U(s)} = \frac{1}{ms+b} \qquad [ \frac{m/s}{N} ] P(s)=U(s)V(s)=ms+b1[Nm/s]我们使用以下命令将传递函数模型输入到MATLAB中:

s = tf('s');
P_cruise = 1/(m*s+b);

控制指标设计

现在为系统设计控制指标,当发动机提供500 N的力时,汽车将达到 10 m/s的最大速度,现在设计汽车在不到 5s 的时间内加速达到该速度,在本应用中,速度上 10% 的超调和 2% 的稳态误差就可以满足要求。
因此我们对该系统提出了以下设计标准:

  • 上升时间 < 5s
  • 超调 < 10%
  • 稳态误差 < 2%

开环阶跃响应

在MATLAB中模拟该系统在没有反馈控制的情况下对 500N 的阶跃作用力的开环响应:

m = 1000;
b = 50;
u = 500;s = tf('s');
P_cruise = 1/(m*s+b);step(u*P_cruise)

在这里插入图片描述
我们可以看到,开环系统没有过冲和振荡(一阶系统的特性),并且确实达到了所需的 10m/s 的稳态速度。但是,上升时间太慢,约 60s。因此,我们需要设计一种反馈控制器,该控制器在不对其他动态性能指标产生不利影响的情况下加快响应速度。

开环极点/零点

巡航控制系统在 s = − b / m s=-b/m s=b/m 处具有一个单极点,我们可以使用以下命令在 s 平面上绘制该极点。

pzmap(P_cruise)
axis([-1 1 -1 1])

在这里插入图片描述
我们观察到开环系统是稳定的,不会振荡,因为极点是负实数。此外,响应速度由该极点的幅度 b / m b/m b/m 决定:幅度越大,系统越快达到稳态值,由于通常无法更改系统参数来改变系统的动态响应,因此必须设计控制器来调整闭环系统的极点和零点,来满足所需的性能指标。

开环伯德图

我们还可以使用以下命令来绘制系统的开环频率响应图:

bode(P_cruise)

在这里插入图片描述
我们可以看到,伯德图显示了一阶系统的特征。

这篇关于控制教程 —— 巡航控制篇:1.系统建模及开环响应分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525542

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默