内容简介:上一篇文章是一份pid的指南,目的是为pid建立一个整体的概念,这一篇简单介绍了pid建立模型的三种方法适用于简单的系统,需要关注整个系统的具体组成通过欧姆定律等电路定律,为元件建模,最终得到系统模型
上一篇文章是一份pid的指南,目的是为pid建立一个整体的概念,这一篇简单介绍了pid建立模型的三种方法
根据元件性质直接得到模型
适用于简单的系统,需要关注整个系统的具体组成
通过欧姆定律等电路定律,为元件建模,最终得到系统模型
这种方式很麻烦,不在这里讨论
系统识别的方法
这种方法不需要关注系统的具体实现,将系统当做一个双端口的加工器,给定输入可以得到想要的输出
就好像图中所示的一个加热器,面包经过加热器后上升了10度,就可以给加热器建立相关的方程了,并不需要知道加热器是电阻加热还是红外光热
还需要注意的是,给定输入是否在系统输入范围,避免对系统造成损伤
MATLAB仿真
这里使用到了MATLAB的system identification的 工具 库
本次仿真是对一个电机建立模型
首先需要在matlab命令行初始化模型相关的以下变量
J = 0.01; b = 0.1; K = 0.01; R = 1; L = 0.5;
在simulink中运行一遍模型,回到matlab,这时候会发现工作区多了 step_input 和 /img/matlab/motor_speed 这两个变量
在matlab的工具箱中找到system identification这个工具,打开
import data下选择 time domain data ,在弹出的窗口填入下图中的信息,点击import
接下来在 estimate 的下拉框中选择 transfer function model ,点击 estimate ,运行完后,如图所示把结果 tf1 拖入 to workspace
此时在MATLAB的工作区中应该能看见 tf1 这个变量,在命令行输入 tf1 ,就能看见传递函数
>> tf1 tf1 = From input "u1" to output "y1": -1.042e-08 s + 2 ------------------ s^2 + 12 s + 20.02 Name: tf1 Continuous-time identified transfer function. Parameterization: Number of poles: 2 Number of zeros: 1 Number of free coefficients: 4 Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using TFEST on time domain data "mydata". Fit to estimation data: 100% (stability enforced) FPE: 4.857e-33, MSE: 4.851e-33
回到simulink,修改 DC Motor Transfer Fcn 为对应的传递函数,开始仿真。
仿真结束后打开scope查看,结果如下图
从结果可以看出这个传递函数是正确的
对现有非线性模型线性化
这个方法和前面系统辨识的方法很类似,不过上一个方法使用的是模型的输入输出结果建立模型,这个是通过对系统线性化得到模型
MATLAB仿真
如下图所示,先添加 linear analysis points
在菜单栏打开 Analysis->Control Design->Linear Analysis..
如下图所示,设置 t=2 ,点击 Step Plot 1 ,双击点开 linsys1 ,显示线性化的选项选择 Transfer Function
如下图所示,验证这个传输函数的正确性
可以看出这个传递函数是正确的
以上所述就是小编给大家介绍的《pid建立模型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- matlab房建立simulink模型方法
- 谁是狼人:模型的建立与应用
- 如何使用高程DEM建立三维地图模型(Arcgis ArcScene)
- 【火炉炼AI】机器学习027-项目案例:用聚类算法建立客户细分模型
- 【火炉炼AI】机器学习051-视觉词袋模型+极端随机森林建立图像分类器
- 如何建立 React 專案 ?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。