自动控制:基于预设性能控制(PPC)的控制系统设计

自动控制:基于预设性能控制(PPC)的控制系统设计

在控制系统设计中,瞬态性能与稳态性能同等重要。对于某些特殊的动态系统而言,瞬态性能甚至比稳态性能更为重要。预设性能控制(Preset Performance Control, PPC)已被证明是一个强大的工具,它保证了控制系统的输出/误差具有所需的瞬态性能以及稳态性能。

本文将简单介绍预设性能控制的概念,包括性能函数的定义以及基于PPC的控制器设计方法。

性能函数

性能函数用于描述控制系统的预期性能指标,包括瞬态性能和稳态性能。常用的性能函数包括:

  • 超调量(Overshoot):输出超过设定值的最大百分比。
  • 上升时间(Rise Time):输出从10%达到90%设定值所需的时间。
  • 调节时间(Settling Time):输出进入并保持在设定值的±2%范围内所需的时间。
  • 稳态误差(Steady-State Error):系统达到稳态时的误差。

为了满足这些性能指标,PPC通过设计适当的性能函数来控制系统的瞬态响应和稳态性能。常见的性能函数形式如下:

Φ ( t ) = Φ 0 e − α t + Φ ∞ \Phi(t) = \Phi_0 e^{-\alpha t} + \Phi_\infty Φ(t)=Φ0eαt+Φ

其中:

  • Φ ( t ) \Phi(t) Φ(t) 为性能函数,描述系统的预期性能。
  • Φ 0 \Phi_0 Φ0 为初始值,通常与初始误差相关。
  • α \alpha α 为衰减率,控制瞬态性能。
  • Φ ∞ \Phi_\infty Φ 为稳态值,通常与稳态误差相关。

性能函数的设计需要根据具体系统的性能要求进行调整,以满足不同的瞬态和稳态性能指标。

基于PPC的控制器设计

基于PPC的控制器设计通过引入性能函数,将系统的误差动态转化为预设性能轨迹,从而实现对系统的控制。具体步骤如下:

步骤1:定义误差和性能函数

定义系统的误差 e ( t ) e(t) e(t),并设计相应的性能函数 Φ ( t ) \Phi(t) Φ(t)。假设系统的参考输入为 r ( t ) r(t) r(t),输出为 y ( t ) y(t) y(t),则误差 e ( t ) e(t) e(t) 定义为:

e ( t ) = r ( t ) − y ( t ) e(t) = r(t) - y(t) e(t)=r(t)y(t)

设计性能函数 Φ ( t ) \Phi(t) Φ(t),并将其定义为误差 e ( t ) e(t) e(t) 的预设动态轨迹:

Φ ( t ) = Φ 0 e − α t + Φ ∞ \Phi(t) = \Phi_0 e^{-\alpha t} + \Phi_\infty Φ(t)=Φ0eαt+Φ

步骤2:误差变换

将误差 e ( t ) e(t) e(t) 转换为标准误差 ξ ( t ) \xi(t) ξ(t),使其遵循性能函数的动态轨迹。定义标准误差 ξ ( t ) \xi(t) ξ(t) 为:

ξ ( t ) = e ( t ) Φ ( t ) \xi(t) = \frac{e(t)}{\Phi(t)} ξ(t)=Φ(t)e(t)

步骤3:设计误差动态方程

通过设计误差动态方程,使得标准误差 ξ ( t ) \xi(t) ξ(t) 满足预设性能要求。一般采用比例-积分-微分(PID)控制器的形式:

u ( t ) = K p ξ ( t ) + K i ∫ 0 t ξ ( τ ) d τ + K d d ξ ( t ) d t u(t) = K_p \xi(t) + K_i \int_0^t \xi(\tau) d\tau + K_d \frac{d\xi(t)}{dt} u(t)=Kpξ(t)+Ki0tξ(τ)dτ+Kddtdξ(t)

其中, K p K_p Kp K i K_i Ki K d K_d Kd 为PID控制器的比例、积分和微分增益,需要根据系统性能要求进行调节。

步骤4:控制器实现

将设计好的控制器应用于实际系统中,实时调整控制输入 u ( t ) u(t) u(t),使系统输出 y ( t ) y(t) y(t) 具有预设的瞬态性能和稳态性能。

示例代码

下面是一个基于PPC的简单控制器设计的Python代码示例:

import numpy as np
import matplotlib.pyplot as plt# 定义系统的传递函数
def system(y, u):dydt = -y + ureturn dydt# 定义性能函数
def performance_function(t, phi0, alpha, phi_inf):return phi0 * np.exp(-alpha * t) + phi_inf# 定义误差动态方程
def error_dynamics(e, phi, Kp, Ki, Kd, integral_e, prev_e, dt):xi = e / phiintegral_e += xi * dtderivative_e = (e - prev_e) / dtcontrol = Kp * xi + Ki * integral_e + Kd * derivative_ereturn control, integral_e# 初始条件和参数
y0 = 0
r = 1
phi0 = 1
alpha = 2
phi_inf = 0
Kp = 1
Ki = 0.5
Kd = 0.1
t = np.linspace(0, 10, 100)
dt = t[1] - t[0]# 计算性能函数
phi = performance_function(t, phi0, alpha, phi_inf)# 仿真系统
y = np.zeros_like(t)
y[0] = y0
u = np.zeros_like(t)
integral_e = 0
prev_e = 0for i in range(1, len(t)):e = r - y[i-1]u[i], integral_e = error_dynamics(e, phi[i-1], Kp, Ki, Kd, integral_e, prev_e, dt)prev_e = ey[i] = y[i-1] + system(y[i-1], u[i]) * dt# 绘制结果
plt.figure(figsize=(10, 6))
plt.plot(t, y, label='Output y(t)')
plt.plot(t, phi, label='Performance function $\Phi$(t)')
plt.xlabel('Time (s)')
plt.ylabel('Output')
plt.title('Preset Performance Control (PPC)')
plt.legend()
plt.grid(True)
plt.show()

代码说明

  1. 定义系统的传递函数:系统的动态方程定义为一阶微分方程。
  2. 定义性能函数:性能函数 Φ ( t ) \Phi(t) Φ(t) 描述了系统的预期动态性能。
  3. 定义误差动态方程:通过PID控制器设计误差动态方程。
  4. 仿真系统:使用odeint函数仿真系统的输出。
  5. 绘制结果:使用Matplotlib绘制系统输出和性能函数。

结论

预设性能控制(PPC)是一种强大的控制方法,通过设计性能函数和误差动态方程,确保控制系统具有预期的瞬态性能和稳态性能。PPC方法能够有效地降低系统对扰动的敏感性,提高系统的鲁棒性和稳定性。在实际应用中,PPC方法可以结合其他先进控制策略,进一步提升控制系统的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python上下文管理器`with as`语句

引言 在Python中,with as语句提供了一种优雅的方式来处理资源管理,特别是对于需要清理或特定设置/恢复的场景。这种机制被称为上下文管理器,它允许代码块在执行前后自动执行一些操作。本文将深入探讨上下文管理器的底层原理和with as语句的用…

三极管的厄利效应(early effect)

詹姆斯M厄利(James M. Early)发现的现象,厄利效应(英语:Early effect),又译厄尔利效应,也称基区宽度调制效应,是指当双极性晶体管(BJT)的集电极-射极电压VCE改…

精彩回顾!安全智能体的前沿技术研究与实践

(关注“安全极客”,回复“智能体”下载第一期系列专题PPT!) 近日,安全极客和Wisemodel社区联合发起并主办了“AISecurity”系列第1期:大模型与网络空间安全前沿探索线下活动。在这次活动中,云起…

弹幕逆向signature、a_bogus

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载&a…

【Linux文件篇】磁盘到用户空间:Linux文件系统架构全景

W...Y的主页 😊 代码仓库分享 💕 前言:我们前面的博客中一直提到的是被进程打开的文件,而系统中不仅仅只有被打开的文件还有很多没被打开的文件。如果没有被打开,那么文件是在哪里进行保存的呢?那我们又如何快速定位…

【Elasticsearch】索引快照并还原到其他集群

【Elasticsearch】索引快照并还原到其他集群 一、安装共享文件系统 1.启动nfs systemctl start nfs rpcbind2. 编辑nfs文件 vi /etc/exports /opt/public 192.168.113.0/24(rw,no_root_squash,insecure,sync) 3. 修改共享目录用户 比如elasticsearch使用的是es用户&#…

windows x86 的应用在 linux arm 上运行的可能性

政府部门国产化需要从windows过渡到麒麟银河的国产linux系统的背景会面临几个问题。 01.好多原生的windows应用没有及时替代。linux的开源或者一些品牌的linux系统的应用商店不能及时解决问题。 01.开发linux应用的人比较少的。 02.开发的速度也是跟不上的。 03.开发出来了…

【名词解释】Unity中的表格布局组件及其使用示例

Unity中的表格布局组件通常指的是GridLayoutGroup,这是一个在Unity的UI系统中用来布局子对象的组件。它可以帮助开发者将UI元素按照网格的形式进行排列,非常适合创建表格、网格视图等布局。 名词解释: GridLayoutGroup:Unity UI…

Unity 踩坑记录 用自定义类 创建的List不显示在 inspector面板

在 自定义类上面添加 【Serializable 】 扩展: 1:Serializable 序列化的是可序列化的类或结构。并且只能序列化非抽象非泛型的自定义的类 2:SerializeField是强制对私有字段序列化

判断IP地址是否与CIDR表示的96.32/12匹配

文章目录 概要IP地址IPv4地址IPv6地址 CIDR表示法CIDR表示法计算网络范围 例题 概要 IP地址 IP地址(Internet Protocol Address)是分配给每个联网设备的唯一标识符。IP地址主要有两种版本:IPv4和IPv6。 IPv4地址 格式:IPv4地址…

编程里什么是动态性能

编程里什么是动态性能 在编程领域,动态性能是一个复杂且引人入胜的概念,它涉及到程序的运行效率、资源利用、响应速度等多个层面。理解并优化动态性能对于提升程序的整体质量至关重要。本文将从四个方面、五个方面、六个方面和七个方面深入探讨编程中的…

通过登录获取token实现接口自动化

登录接口有统一认证,访问该登录接口时会跳转到认证界面输入用户名密码 url "https://auth.xxxxx.com/auth/realms/xxxoa-with-os/protocol/openid-connect/auth?response_typecode&client_idtests&scopeopenid&redirect_urihttps://xxxnew.xxxx…

大数据平台之hadoop

Apache Hadoop是一个用于存储和处理大规模数据的开源框架。它由Apache软件基金会开发,主要用于处理大数据应用。Hadoop框架的核心组件包括HDFS(Hadoop Distributed File System)、MapReduce和YARN(Yet Another Resource Negotiato…

Perl 语言入门学习

一、介绍 Perl 是一种高级的、动态的、解释型的通用编程语言,由Larry Wall于1987年开发。它是一种非常灵活和强大的语言,广泛用于文本处理、系统管理、网络编程、图形编程等领域。 Perl 语言的设计理念是“用一种简单的语法,去解决复杂的编…

动画的js动画于css3区别?

JavaScript动画与CSS3动画在实现和使用上有一些显著的区别: 实现方式: CSS3动画:通过在CSS样式表中使用keyframes规则定义动画序列,然后将这些动画应用到元素上。CSS3动画由浏览器引擎优化处理,因此通常性能较好。JavaScript动画…

C++共享指针shared_ptr的理解分享

share_ptr是线程安全的吗 回答: 如果多个线程同时拷贝同一个shared_ptr对象,不会有问题,因为shared_ptr的引用技术是线程安全的。如果多个线程同时修改同一个shared_ptr对象,不是线程安全的。如果多个线程同时读写shared_ptr指向…

LabVIEW水箱液位控制系统

介绍了如何使用LabVIEW软件和硬件工具开发水箱液位控制系统。系统集成了数据采集、实时控制和模拟仿真技术,展示了高精度和高可靠性的特点,适用于需要精细水位调节的工业应用。 项目背景 在制造和化工行业,液位控制是保证生产安全与效率的关…

Linux 系统中的 /etc/issue and /etc/issue.net 文件

Linux 系统中的 /etc/issue and /etc/issue.net 文件 1. /etc/issue and /etc/issue.net2. /etc/ssh/sshd_configReferences 1. /etc/issue and /etc/issue.net (base) yongqiangyongqiang:~$ cat /etc/issue Ubuntu 20.04.5 LTS \n \l(base) yongqiangyongqiang:~$ (base) yo…

【C++】开源项目收集

C 是一种强大的、静态类型的通用编程语言,它的开源生态系统非常丰富,拥有众多高质量的项目。以下是一些知名的C开源项目: Boost: 这是一个庞大的库集合,提供了大量的实用工具和组件,如文件系统、网络编程、智能指针等&…

FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作

《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定,从TS流的任一片段开始都能独立解码,因此可以把TS当成音视频文件的封装格式。 鉴于TS包的独立解码特性&…