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

相关文章

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分