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 String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat