自控原理之系统辨识

自控原理之系统辨识

前沿
数学模型是一个或多或少,以一定的形式表达出你正在观测的事物。**通过观测事物的各项属性,推断出一个数学模型,这是科学。**系统辨识,着手从观测事物得到的数据中,建立一个数学模型。正由于物理系统在我们身边应用很广,所以系统辨识学科有个很宽广的应用范围。

物理系统(dynamic systems)
在这里插入图片描述
一个物理系统可以简化成一个黑箱,有四个相关的变量。u是输入信号;w是可测量的干扰两;v是不可测量的干扰信号;y是输出。
在这里插入图片描述
是最常见的二阶物理系统

模型(model)
模型的种类(三种)

  • 心理模型:这种模型没有数学公式去描述。比如开车需要经验去判断踩多重的油门,会使车的速度达到你想要的速度。
  • 图像模型:比如常见的bode图,阶跃响应图
  • 数学模型:常用差分、微分方程表示。

常见的连续时间表达式有微分方程,状态空间和传递函数。
常用的离散时间表达式是差分方程

创建模型(两种方法)

  • 分解成子系统:比如一个机械手臂,能够分成很多个子系统。再把简单的子系统按流程构造成框图,就得到了模型。
  • 实验分析法:通过实验获取输入输出信号值,通过数据分析推断模型。这个方法就是系统辨识。

真实系统的虚构性
数学模型为我们提供一个窗口,来观察真实世界。但我们永远无法对物理系统构建一个完全精确的数学模型。

系统辨识过程

三要素

  • 数据集:用户通过设点测量那些信号,什么时候和怎么测量,以及可选择输入信号的形式。这种通过实验获得的数据,但让是信息越丰富,输出有限制越好。
  • 选择一类模型结构:系统辨识最重要的一环。工程师根据经验预判那种模型更合适。如果模型的参数不能反应物理系统的状态,我们称之为“黑箱”。
  • 评估规则:辨识的方法。模型好不好,要看在同样的输入条件下,该模型的输出和原系统的输出相似度高不高。

模型验证
在辨识出一个模型后,还要去测试这个模型是否“足够好”。

系统辨识的环节
好事多磨,辨识一次不一定能够得到一个较理想的模型,通过模型验证有效后,如果模型拟合不佳,继续从第一步重新做。

matlab系统辨识

五大步骤:

  1. 采集数据:系统辨识的方法不止一种,本文是根据输入输出数据辨识传递函数。
  2. 导入数据到matlab
  3. 系统辨识:使用system identification工具箱
  4. 自动整定PID参数:用到了control system designer的工具箱以及simulink
  5. v-rep验证

在v-rep里采集数据

添加图表和想记录的变量
在这里插入图片描述
使用Graph图表收集仿真数据
在这里插入图片描述
仿真,让云台做阶跃响应
在这里插入图片描述
把采集到的数据导出到excel文件里,第一步顺利完成
在这里插入图片描述

导入数据到matlab中
输入导入
在这里插入图片描述
把test分开两部分:
在这里插入图片描述
In= table2array(in)是把table转换成矩阵,这样才能继续做下一步的系统辨识。

此时工作区中的in和out都是411行1列的double型矩阵
在这里插入图片描述

系统辨识system identification
导入数据到system identification的app里
在这里插入图片描述
在这里插入图片描述
这里的采样时间是0.02,因为v-rep里默认的仿真时间是20ms。

数据预处理
这里只做了把数据分成训练集和验证集两部分。(本质是神经网络)
在这里插入图片描述

处理完后,把madatae和madatav分别拖入到working data和validation data的工作框内
在这里插入图片描述
传递函数的辨识
在这里插入图片描述
导出传递函数即可

用simulink自动整定PID

搭建模型
在这里插入图片描述
把辨识出的传递函数写进去transfer function 里
在这里插入图片描述
打开PID tunner app
在这里插入图片描述
调节两个移动图标
在这里插入图片描述
得到满足你需求的一个曲线后(这里的例子上升时间大约0.5s),然后更新到simulink中
在这里插入图片描述
simulink仿真更新后的PID,发现仿真曲线和PID tuner的一样,包括上升时间,超调等参数都一样。
在这里插入图片描述

v-rep验证模型辨识的准确性

把PID参数更新到v-rep模型里
在这里插入图片描述
仿真得到曲线
在这里插入图片描述
注意:上图v-rep仿真中,幅度为3的阶跃响应,上升时间是0.48s。这里的3,实际上相当于电机转动了180°。
结论:调节时间在500ms左右,超调量在0.70左右。证明系统辨识过程是正确的,有一定的准确性和指导意义,大大减小了调PID的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马云狂炸近百亿,你的借呗额度涨了吗?

蚂蚁借呗非常受大家欢迎,因为简单方便,所以很多缺钱的朋友都会通过借呗去借钱。但是借呗的额度主要以小额为主,很多时候满足不了日常的资金需求,因此很多朋友都在想各种方法去提高借呗的额度。但是借呗的额度不是想提高就可以提高…

贷款中介市场要变天了吗?

贷款中介一直是贷款市场一股很重要的力量,他们对各个贷款机构的渗透率很高,贷款中介也确实帮助了很多想贷款的客户,同时也减轻了贷款机构的一些业务压力,甚至有些银行等贷款机构直接把贷款业务外包给了第三方中介结构。可以说贷款…

将数据导入到MATLAB

将数据导入到MATLAB 将数据导入到MATLAB中有二种方式。 第一种:直接使用MATLAB读Excel文件 例如 Excel表格 numxlsread(data1.xlsx,Sheet1,A1:E13);%读入Excel文件 input_trainnum(1:8,1:4);%1到8行,1到4列 output_trainnum(1:8,5);%1到8行&#xff0…

重磅!四部委发文,以后买房可以省几十万元!

去买房,能用公积金贷款的绝不考虑商业贷款,能用商业贷款的绝对不会全款买房。但对于开发商来说,事实却恰好相反,网上就流行了一个段子:买房全款的往里走;按揭的不要堵门口;公积金贷款的把共享单…

C++之RAII机制

1.什么是RAII? RAII(Resource Acquisition Is Initialization)机制是Bjarne Stroustrup首先提出的,也称直译为“资源获取就是初始化”,是C语言的一种管理资源、避免泄漏的机制。 C标准保证任何情况下,已构…

函数的分文件编写

函数的分文件编写 三步实现函数的分文件编写 创建.h后缀名的头文件创建.cpp的后缀名的源文件在头文件中写函数的声明在源文件中写函数的定义

网上代开微粒贷,行得通吗?

微粒贷估计大家有想拥有,但腾讯偏偏要跟大家较真,实行白名单邀请制,只给那么几千万人微粒贷,绝大部分人连个微粒贷的图标都没有。因此很多人都在想着各种办法去开通微粒贷,有优化条件的,有开通腾讯信用的&a…

治疗拖延症晚期患者的三张处方

-1-20岁以后,时间加速飞逝,前一秒还在踌躇满志地制定新年计划,下一秒就要开始整理年度总结了。有人说2018年的新年计划就是搞定2017年那些原定于2016年的安排,不为别的,只为兑现2015年时要完成2014年计划的承诺。一年又…

解决GetManifestResourceNames()无法读取资源文件

//读取资源文件中的图片并输出流,String resource是资源文件名; public static Image GetImage(string name){name "Spymaster.Resources." name; // "Spymaster.Resources.resources.mainboard.png"// "Spymaster.Properties.Resource…

C++的指针

C的指针 指针变量的定义和使用 指针的作用:可以通过指针间接访问内存。 内存编号是从0开始记录的,一般用十六进制数字表示。可以利用指针变量保存地址。 指针就是一个地址。指针变量就是用来存放地址的。 可以通过p去使用它,也可以去访问它…

支付宝2017年个人账单明天发布,你小心脏准备好了吗?

今天上午,支付宝公布了 2017 年全民账单,数据显示,随着移动支付的普及,中国人的生活方式正悄然巨变,不带钱包出门已成为中国人的新习惯,并成为世界的新时尚。根据全民账单数据显示,在2017年&…

支付宝个人账单出来了,这里有最全的查看攻略!

今天是2018年1月3日,支付宝个人年度账单如期而至。账单页面那怎么查看个人账单呢?第一步、打开支付宝,点击【我的】然后选择【账单】打开第二步、点击账单页头的banner第三步、滑动动画查看个人账单

C++的结构体

C的结构体 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 结构体定义和使用 注意:在创建结构体变量的时候,关键字struct可以省略,但是在定义结构体时,不能省略关键字struct。 结构体数组 作用&a…

Android.mk用法详解

Android.mk是Android提供的一个makefile文件,可以将源文件分组为模块。用来引用的头文件目录、需要编译的*.c/.cpp文件、jni源文件、指定编译生成.so共享库文件或者*.a静态库文件,可以定义一个或多个模块,也可以多个模块中使用同一个源文件&a…

整顿满月,如今现金贷生不如死

去年现金贷平台野蛮生长,现金贷业务高歌猛进,各种现金贷平台如雨后春笋般出现,但是由于准入门槛低,相关监管政策缺位等原因,现金贷业务也带来了很大的社会影响,最典型的是高息放款,不当催收&…

Application.mk用法详解

Application.mk文件定义要编译的多个变量的GNU Makefile片段,位于PROJECT/jni/目录下,PROJECT/jni/目录下,PROJECT/jni/目录下,PROJECT是项目目录,另一种方式放到NDK/apps/目录的子目录下(NDK/apps/目录的子目录下(NDK/apps/目录的子目录下&a…

2017年度总结:迷茫。

-1-如果用一个字(词)来总结2017,你会用什么呢?我的答案是:迷茫。20多岁,正是心比天高的年龄,四年大学生活转眼即逝,站在人生的十字路口,对未知的恐惧再次让我陷入迷茫当中…

2018年去贷款,是否可以不用找信贷经理帮忙?

去贷款或许你可能说,市场上贷款机构那么多,贷款产品那么多,为何要找信贷经理?随便去一家贷款机构申请不就行了。但是有一个专业的信贷经理帮你办理跟没有专业的信贷经理指导,贷款真的有很大的区别,甚至专业…

Glitch Free时钟切换技术

Glitch Free时钟切换技术 两个时钟切换电路。Glitch Free为无毛刺切换电路。 第一种时两个时钟源的频率呈倍数关系,第二种是两个时钟源完全没有关系,异步时钟。 下面是使用AND-OR型多路复用器逻辑进行简单的时钟切换。 下图针对的是两个时钟源频率成倍数关系。在每个时钟…

Heap与Stack的区别- -

一、预备知识—程序的内存分配 一个由c/C编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap&#xff…