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

相关文章

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

SpringCloud中的@FeignClient注解使用详解

《SpringCloud中的@FeignClient注解使用详解》在SpringCloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解来标记Feign客户端接口,这篇文章... 在Spring Cloud中使用Feign进行服务间的调用时,通常会使用@FeignClient注解

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列