完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
simth预估器编程实现
在控制理论中,滞后指在时间上被控变量的变化落后于扰动变化。也就是被控对象有一个纯滞后的环节,相当于延时。然而经过经过延时后,系统会变得难以控制,会出现滞后,超调等现象。 一般的大滞后系统常用的控制方法有:史密斯预估器、模糊控制、预测函数控制。史密斯预估器较为简单易实现。现设有传递函数: 可知其滞后为10s 一、matlab仿真: 1、首先看其开环输出: 可以看到红线为滞后输出,10s后才输出。 2、闭环输出: 可以看到超调非常严重,需要加入控制器对其进行控制。 3、加入史密斯预估器 黄线为阶跃输入,红线为输出,蓝线为控制量,可以看到在滞后10s后,系统输出稳定,说明控制较好,幅值可以通过改变pid参数调节。 二、程序实现 理论上的分析,现在要将其具体实现,这里我通过两个单片机对其进行模拟仿真。 1、传递函数c语言实现 这里的涉及的理论较多,我只说说思路。S域的传递函数想要用计算机实现,则必须将其进行离散化,将s域函数离散化,离散化后得到其差分方程,再用单片机编程实现。 stm32模拟传递函数: 2、史密斯预估控制器c语言实现: 将上面的matlab图中控制器模型离散化,具体步骤如下: 然后就可以用单片机编程实现了: 三、调试注意 1、注意,这里可以采用单个单片机实现,也可以采用两个单片机实现。将控制器、传递函数部分放在CPU1中,然后通过通信(AD/DA、串口或其他)将CPU1的输出量反馈给CPU2,CPU2又通过通信将该输出量反馈给CPU1,相当于CPU2只是用来反馈输出量的。 2、用单片机仿跟仿真有出入,特别是pid参数,仿真用p为1波形就很完美了,然而实际中p为1将发散,参数需要自己摸索。我用的pi控制,p为0.02,i为0.001. 3、最终的效果:将阶跃设为1,10s后输出为接近1,且波形有非常微小的震荡。传递函数写的是按照计算次数来写的,若要严格的时间控制,可将其放在定时器中。 4、本文选取的被控对象较为简单,为一阶滞后系统;若将其改为二阶系统,则需要将传递函数、控制器重新设计并离散化,可以用matlab先仿真再写代码。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1752 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1611 浏览 1 评论
1052 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1666 浏览 2 评论
1926浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
584浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 19:26 , Processed in 0.886261 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号