找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 17133|回复: 23

【原创】MATLAB初体验一(PID控制)

[复制链接]
1 乐币 回复本帖可获得 1 乐币奖励! 每人限 1 次(中奖概率 20%)
发表于 2012-8-4 17:46:43 | 显示全部楼层 |阅读模式
本帖最后由 史上最强 于 2012-8-10 21:26 编辑

MATLAB最好的地方就是可以做精确控制,对于NXT机器人来说,精确控制可以说是让玩家有更好的体验模式。MATLAB自带了上千个模块库,其中对于控制方面最为引人注目的就是stateflow,和MATLAB 2009b新推出的PID控制工具箱。这里我想对PID控制做一下介绍。

PID控制器算法简单,但是很难对其中Kp,Ki,Kd参数进行定量。主要是依赖于以往的经验。无法阻止积分饱和现象,以及微分近似等问题。而且进行设计的时候很难抉择是用P,PI,PD,PID等结构。

MATLAB却对PID问题进行了优化处理,Simulink提供了一个全新的GUI调节算法可以方便地完成这些复杂的工作,自动调节控制器参数已达到期望的效果,如图所示,可以直接拖动地下的滚动条就可以改变系统的阶跃响应,并且给出PID优化参数。不仅这样还可以在图的上方Design mode选择Extended,这样会出现额外两个滚动条‘带宽’和‘相位’,通过拖动它们可以改变系统响应的快速性和平稳性。通过PID控制,可以使电机模型,响应速度和精确程度得到很大提高。所以PID控制,在MATLAB可以很容易建立模型。还可以通过选项防止积分饱和现象的发生。

总结:Simulnk不仅可以拖动GUI设计PID参数,还可以利用波特图设计PID控制器,甚至可以设计离散域PID控制器。Simulink操作之简单可能小学生就可以完成。可能大家对MATLAB有很多畏惧心理,但是Simulink有上千个模块可以提供各种算法,不需要自己手写代码,只需要和NXT-G一样,拖动模块修改参数即可得到完整的系统设计,不管是PID还是别的控制器设计都非常简单。而且可以生成高效的C代码。这种设计方法在外国非常的流行,可是国内却没有什么人去用,可能还需要几年国内才会热起来吧,因为国内从来都是不希望改变自己工作方式,不喜欢学习先进技术。可是对于孩子而言这种设计方法,可以对以后大学生活带来意想不到好的效果。可以翻阅科技文献,大多数科技文献都是用MATLAB或者Simulink做的。

问题:我所面临的挑战是PID算法在MATLAB是需要形成闭环控制,但是在MATLAB中没有现实的LEGO模型,不可能搭建出一个闭环系统。这个问题我将在体验二解答。

PID优化图

PID优化图
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-8-4 19:09:43 | 显示全部楼层
很敢兴趣,谢谢介绍
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-4 19:28:07 | 显示全部楼层
恩,希望LEGO能作为以后学控制的人的起步点
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 10:38:33 | 显示全部楼层
不懂
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 11:57:21 | 显示全部楼层
史上最强 发表于 2012-8-4 19:28
恩,希望LEGO能作为以后学控制的人的起步点

期盼着读你的“体验二”
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 12:15:05 | 显示全部楼层
000123 发表于 2012-8-5 10:38
不懂

你看看论坛PID控制的帖子,公式都比较繁琐,原理都比较复杂,但是应用Simulink设计,就一个自带的小模块,改改参数就完成PID控制了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 12:44:07 | 显示全部楼层
imlucky1 发表于 2012-8-5 11:57
期盼着读你的“体验二”

正在测试一些数据,估计10天之内肯定能发
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 12:56:32 | 显示全部楼层
{:soso_e179:}
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-5 12:59:10 | 显示全部楼层
您好,请问,在NXT里面怎么用上你介绍的这个软件?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2012-8-5 13:31:03 | 显示全部楼层
dxlwf 发表于 2012-8-5 12:59
您好,请问,在NXT里面怎么用上你介绍的这个软件?

你看下这个版块, MATLAB从2012a开始支持NXT的自动代码生成。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-25 20:41:10 | 显示全部楼层
回帖是种美德,那我还是回帖吧
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-25 21:04:23 | 显示全部楼层
变形金刚 发表于 2012-8-25 20:41
回帖是种美德,那我还是回帖吧

建议论坛授予你水利专家称号
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-8-25 21:08:34 | 显示全部楼层
imlucky1 发表于 2012-8-25 21:04
建议论坛授予你水利专家称号

真的,那太好了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-9-11 13:13:26 | 显示全部楼层
玩机器人玩到用matlab,的确是一个境界
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-11-8 11:13:16 | 显示全部楼层

回帖奖励 +1 乐币

matlab非常强大,近期又把matlab与lego都捡回来当做业余爱好,有baby了以后教教孩子玩。3年前matlab是工作中的主要工具,也用m8控制过nxt小车,嗨,回到这个论坛感觉真好啊  
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-11-23 16:23 , Processed in 0.104174 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表