simulink-仿真以及PID参数整定/PID tuner 的使用流程

2024-05-14 04:04

本文主要是介绍simulink-仿真以及PID参数整定/PID tuner 的使用流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

控制器搭建与参数整定

    • 搭建一个前馈PID控制器控制系统
    • PID tuner使用

一个懂点控制但不多的小白,因为需要利用simulink仿真,所以不得不学习一些仿真的知识,这篇文章适合和我一样的新手入门,有理解错误的地方希望大手们能够指出来共同学习。

搭建一个前馈PID控制器控制系统

控制框图控制框图

这里边有几点我简单的记录一下:
1.通常我们的被控对象,我们应该是最先得到它的时域下的数学模型,由于需要验证这个模型的响应,所以需要仿真,我猜测应该也可以直接仿真,但是具体为什么要转成S函数,10多年前学得了,已经记不清,似乎是为了方便分析模型的数学特性;
2.将数学模型转成s函数,需要s变换,也叫拉普拉斯变换,在matlab中用laplace()函数可求解得到对应的G(s);
3.s代表原函数的一阶微分,s^2代表二阶微分也就是二阶导数;
4.假如G(s)=k/(Ts +1)时,根据图片,前馈函数Gf(s)=T/k*s+1/k,在simulink中搭建的时候,可以用Δu/Δt表示s,就变成了一个比例加上一个微分了,所以这个时候前馈补偿有点像PD控制器;
5.编写控制器程序的时候,单片机都是基于晶振工作的,所以都是在时域下运行的,那么根据仿真得到控制器都是S函数,这个时候就用matlab中的ilaplace()反变换函数,变换到时域下,就可以把公式写到程序里了;
6.对于输入信号,我们知道G(s)=Y(s)/U(s),所以输入肯定也是要进行s变换的,如果输入是个随时间变化的函数就要做随便,如果原来时域下的输入是离散的常数值,就用阶跃信号表示,如果是区间内随机产生的,就用对应的模块。这里引用一句话。

常数的拉普拉斯变换是A/s,其中A是常数。这是因为在拉普拉斯变换中,常数被视为阶跃信号,其值为A,其拉普拉斯变换结果为A/s。

7.PID在编程的时候的表示方法,有两种:
位置式PID:
pwm=Kpe(k)+Ki∑e(k)+Kd[e(k)-e(k-1)]
e(k)代表本次偏差
e(k-1)代表上一次的偏差
∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,k;
pwm代表输出

增量式离散PID公式:
pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]
e(k)代表本次偏差
e(k-1)代表上一次的偏差 以此类推
pwm代表增量输出

PID tuner使用

1.搭建好一个控制框图
在这里插入图片描述
2。确定好PID控制器的输入以及被控对象的输出,主要确定数据流对应的线条

3.打开控制系统整定
在这里插入图片描述
4.找到new step 因为我们接下来输入的信号是阶跃信号,如果不是,就更换别的信号图
在这里插入图片描述
5.然后选择刚才选定的输入信号对应的线条,输出信号对应的线条,然后plot,得到默认的调整输出曲线
在这里插入图片描述
6.找到跟踪阶跃信号
在这里插入图片描述
7.配置期望输出响应曲线的参数
在这里插入图片描述
8、选择需要整定的模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.根据配置运行整定,PID模块中的参数
在这里插入图片描述
10.将整定得到的参数更新到simulink中对应的模块中
在这里插入图片描述
11.自整定完了,根据感受,除非很清晰的知道输出是什么样的,否则得到的参数还是需要手动调整。

经过试验,前馈+PID 比 PID提升响应速度上更快,实时性更好。

这篇关于simulink-仿真以及PID参数整定/PID tuner 的使用流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有