当前位置: 首页 > article >正文

Simulink学习笔记【PID UG联动仿真】

Simulink进行PID控制及调参:

  1. 建立系统动力学框图(把状态方程翻译出来),设置成subsystem
  2. 建立PID反馈回路。示波器叫scope,多变量输出用demux和mux。
  3. 可以用自动调参Tune模块,调整响应速度和稳定性,达到较优状态,更新参数并重新run
  4. 或者可以使用内置的状态空间法建立动力学模型:用状态方程模块State-Space,直接输入ABCD及初值矩阵即可
  5. 可以添加多个PID控制:PID是对y(t)的偏差值进行计算处理,得到u(t)的新数值。PID本身的阶跃响应曲线(响应速度、稳定性)一定程度上反应了实际系统的响应特征,因为冲激函数的卷积是阶跃函数。因此,多个PID控制的话需要先把各自PID的结果相加,然后再输入到系统状态方程里面(作为输入u)。
  6. 可以在3s加入一个转角的小扰动,用Step函数*2+作差处理,制造冲激信号。这样可以看到两个PID分别发挥作用。
  7. 想要导出数据重新作图,把mux的数据连线到out模块,运行,回到matlab里面看工作区,有out表格,tout是时间,yout是研究的变量,value里面有四列,位移,速度,角度,角加速度。

Simulink & UG联动仿真:

步骤总述:

  1. 在UG里面建立机械系统模型。
  2. 确定系统输入和输出,UG里面的输出是Simulink的输入,反之亦然,总之要建立UG和Simulink的闭合回路。注意:工厂输出是UG到Simulink,工厂输入是Simulink到UG,这两个概念都是在UG里面定义的,所以以UG为参考。
  3. 在Simulink建立控制系统框图,把动力学模块用UG模块替代;
  4. 进行联合仿真分析。

详细步骤:

  1. 在UG里面关联MATLAB。用户默认设置,仿真,运动,分析,右边选RecurDyn求解器,控制/动力学模块下,采样时间0.001,MATLAB可执行文件选择电脑中matlab的安装地址exe,Windows那行里面填好。
  2. UG里面导入模型,打开prt文件。(剩下的操作和之前类似,打开运动导航器,新建仿真……)
  3. 设置仿真环境,RecurDyn结算方案选“协同仿真”。注意,设置之前需要先右键左侧菜单的模型(step上面的一行),修改求解器为RecurDyn求解器。
  4. 跟之前一样,建立连杆和运动副。RecurDyn会自动给固定连杆建固定副的,不用自己设置。注意滑块滑动副可以把全局坐标系的坐标原点设置成原点。转动副可以重点观察一下方位,到底怎么转角度是正值(我觉得可能局部坐标系和全局重合比较方便看)
  5. 点击菜单(M),插入,工厂,工厂输入。在最上面一行的“加载“里面选择”矢量力“,全局坐标系正方向,指定原点先选择面上的点,确定面的x坐标,再选择”点对话框“,直接设置坐标y和z,放在中心。幅值选择函数,函数管理器,插入,”工厂输入“,Pin001,回去幅值那边把这个函数施加上去。(可以调整显示图例大小,这样才能看到力的箭头,参考之前的笔记)
  6. 建立传感器*4,测量对象选择滑块的位移(分量z,相对,选择滑块运动副)、速度(分量z,相对,选择滑块运动副)、摆杆运动副的角度(分量RZ,相对,选择旋转副)、角速度(分量RZ,相对,选择旋转副)。
  7. 插入工厂输出*4,分别将上面4个传感器都定义为工厂输出(每个传感器一个输出)。
  8. 添加解算方案,分析类型是控制/动力学,时间30s,步数1000步,重力对摆杆运动很重要所以要加上。保存。
  9. 对模型求解,协同仿真选Simulink。目前还没有结果。
  10. 回到文件夹下面,多出来两个m文件Plant和PlantIO。
  11. 打开Simulink,建立控制框图,和上次建的一样就好(用最简单的一环控制转角)。
  12. 后续思路是把状态空间模型块替换成UG的模块,输出分别用四个示波器显示就好,角度有一个初始值需要加进去(因为simulink定义的坐标系目标角度是0°,而UG模型本身有一个初始-5°的角度,所以UG模型的目标角度是5°。注意全部用弧度表示!!)。
  13. 把两个多的m文件在MATLAB打开,运行plant文件,出现了一个运动框图,可以复制粘贴进自己画的控制框图里。
  14. 绘制好框图后,稍微做一些调整。联动的时候容易出现崩溃的情况,因此插入一个延时函数transport delay,0.001s=1ms,放在PID和UG模块之间,经过延时再输入进来。
  15. 建立一个示波器,显示PID的结果,也就是驱动力。
  16. 再来看看PID模块。直接run一下试试(记得把simulink的stop time改成30s和UG一致,但是好像还是不够,还有什么地方也要调……),看结果发现位移是匀速运动(动态平衡),因为只做了一环控制。回到UG可以看动图,在初始的一瞬间就达到了平衡……好吧……
  17. 修改PID模块参数,可以看不同的效果。
  18. 双击NX的模块,可以看到我们设置的工厂输入和工厂输出。
  19. 可以加两环控制。还可以去UG里面直接看运动结果图,更清楚一些。

http://www.kler.cn/a/405146.html

相关文章:

  • 《人工智能深度学习的基本路线图》
  • C++标准模板库 -- map和set
  • 排序算法(三)--插入排序
  • 动态规划子数组系列一>等差数列划分
  • React可以做全栈开发吗
  • uni-app快速入门(六)--rpx尺寸单位与Flex布局
  • 算法.图论-习题全集(Updating)
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】自定义View
  • 力扣 LeetCode 513. 找树左下角的值(Day8:二叉树)
  • [服务器] 腾讯云服务器免费体验,成功部署网站
  • PBDL (基于物理的深度学习)-Chapter 1
  • 深度学习day2-Tensor 2
  • 【Git】git从暂存区中移除文件
  • 山泽HDMI切换器:提升家庭娱乐与办公体验的利器
  • 支持向量机SVM——基于分类问题的监督学习算法
  • HBase 原理
  • 蓝桥杯每日真题 - 第19天
  • 第27天 安全开发-PHP应用TP 框架路由访问对象操作内置过滤绕过核心漏洞
  • 生产环境centos8 Red Hat8部署ansible and 一键部署mysql两主两从ansible脚本预告
  • 经验笔记:远端仓库和本地仓库之间的连接(以Gitee为例)
  • 在Sui 区块链上创建、部署和管理 NFT 的完整教程
  • java 设计模式 模板方法模式
  • shell脚本-笔记25
  • leetcode105:从前序与中序遍历构建二叉树
  • Java API 学习指南:从入门到精通的全面指导
  • 2.13 转换矩阵