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

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里面直接看运动结果图,更清楚一些。

相关文章:

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

Simulink进行PID控制及调参: 建立系统动力学框图(把状态方程翻译出来),设置成subsystem建立PID反馈回路。示波器叫scope,多变量输出用demux和mux。可以用自动调参Tune模块,调整响应速度和稳定性&#xff0…...

【Python】30个Python爬虫的实战项目!!!(附源码)

Python爬虫是数据采集自动化的利器。本文精选了30个实用的Python爬虫项目,从基础到进阶,每个项目都配有完整源码和详细讲解。通过这些项目的实战,可以全面掌握网页数据抓取、反爬处理、并发下载等核心技能。 一、环境准备 在开始爬虫项目前…...

uni-app 界面TabBar中间大图标设置的两种方法

一、前言 最近写基于uni-app 写app项目的时候,底部导航栏 中间有一个固定的大图标,并且没有激活状态。这里记录下实现方案。效果如下(党组织这个图标): 方法一:midButton的使用 官方文档:ta…...

什么是Sass,有什么特点

Sass 概述 什么是 Sass? Sass(Syntactically Awesome Style Sheets)是一种 CSS 预处理器,它扩展了 CSS 的功能,使其更加强大和灵活。Sass 允许开发者使用变量、嵌套规则、混合宏、继承等高级特性,从而编写…...

服务器端渲染 (SSR) 与客户端渲染 (CSR)

嘿程序员!我们都知道,新时代的 Javascript 已经彻底改变了现代网站的结构和用户体验。如今,网站的构建更像是一个应用程序,伪装成一个能够发送电子邮件、通知、聊天、购物、支付等的网站。今天的网站是如此先进、互动,…...

数据结构(Java版)第一期:时间复杂度和空间复杂度

目录 一、数据结构的概念 1.1. 什么是数据结构 1.2. 算法与数据结构的关系 二、算法效率 三、时间复杂度 3.1. 大O的渐进表⽰法 3.2. 计算冒泡排序的时间复杂度 3.3. 计算二分查找的时间复杂度 四、空间复杂度 4.1. 空间复杂度 4.2. 冒泡排序的空间复杂度 4.3.…...

基于web的音乐网站(Java+SpringBoot+Mysql)

目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1 MYSQL数据库 2.2 B/S结构 2.3 Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性能分析 3.2.1 系统安全性 3.2.2 数据完整性 …...

用go语言后端开发速查

文章目录 一、发送请求和接收请求示例1.1 发送请求1.2 接收请求 二、发送form-data格式的数据示例 用go语言发送请求和接收请求的快速参考 一、发送请求和接收请求示例 1.1 发送请求 package mainimport ("bytes""encoding/json""fmt""ne…...

GeekChallenge 2024 第十五届极客大挑战 pwn AK

GeekChallenge 2024 第十五届极客大挑战 pwn AK 🍀前言☘️ez_shellcode(shellcode,栈溢出)🌿分析🌿解题🌿exp ☘️买黑吗喽了吗(整数溢出,栈溢出)&#x1f3…...

禅道是什么,nas是什么,ssh是什么,finalshell是什么,git命令feat 、fix分别什么意思

禅道(Zentao)是一款开源的项目管理软件,专为软件开发团队设计。它集成了项目管理、产品管理、质量管理、文档管理和事务管理等多种功能,旨在帮助团队提高工作效率和项目交付质量。禅道支持敏捷开发方法,同时也适用于传…...

点云-半径搜索法-Radius Search

核心作用 在于通过设定一个空间范围(半径)寻找点的邻域点集合,从而支持对局部区域的分析和操作。 因为空间半径不会随着密度变化而改变点云输出的结果,处理密度变化大的点云时很重要。 应用场景 稀疏点检测:当点云密度…...

P11290 【MX-S6-T2】「KDOI-11」飞船

题目大意:有i种加油站,最开始速度为1,每次加油可以使速度*v,每次加油有一个时间代价,求到达终点所需最小时间。 思路:不妨考虑dp,贪心是错误的。 对于速度而言,,所以速…...

WebGIS地图框架有哪些?

地理信息系统(GIS)已经成为现代应用开发中不可或缺的一部分,尤其在前端开发中。随着Web技术的快速发展,许多强大而灵活的GIS框架涌现出来,为开发人员提供了丰富的工具和功能,使他们能够创建交互式、高性能的…...

量化加速知识点(整理中。。。)

量化的基本概念 通过减少模型中计算精度,从而减少模型计算所需要的访存量。 参考...

BLIP-2模型的详解与思考

大模型学习笔记------BLIP-2模型的详解与思考 1、BLIP-2框架概述2、BLIP-2网络结构详解3、BLIP-2的几点思考 上一篇文章上文中讲解了 BLIP(Bootstrapping Language-Image Pretraining)模型的一些思考,本文将讲述一个BLIP的升级版 BLIP-2&am…...

2024年11月22日 十二生肖 今日运势

小运播报:2024年11月22日,星期五,农历十月廿二 (甲辰年乙亥月庚寅日),法定工作日。 红榜生肖:马、猪、狗 需要注意:牛、蛇、猴 喜神方位:西北方 财神方位&#xff1a…...

小米C++ 面试题及参考答案上(120道面试题覆盖各种类型八股文)

进程和线程的联系和区别 进程是资源分配的基本单位,它拥有自己独立的地址空间、代码段、数据段和堆栈等。线程是进程中的一个执行单元,是 CPU 调度的基本单位。 联系方面,线程是进程的一部分,一个进程可以包含多个线程。它们都用于…...

SQL SELECT 语句:基础与进阶应用

SQL SELECT 语句:基础与进阶应用 SQL(Structured Query Language)是一种用于管理关系数据库的编程语言。在SQL中,SELECT语句是最常用的命令之一,用于从数据库表中检索数据。本文将详细介绍SELECT语句的基础用法&#…...

微服务即时通讯系统的实现(服务端)----(1)

目录 1. 项目介绍和服务器功能设计2. 基础工具安装3. gflags的安装与使用3.1 gflags的介绍3.2 gflags的安装3.3 gflags的认识3.4 gflags的使用 4. gtest的安装与使用4.1 gtest的介绍4.2 gtest的安装4.3 gtest的使用 5 Spdlog日志组件的安装与使用5.1 Spdlog的介绍5.2 Spdlog的安…...

《Spring 依赖注入方式全解析》

一、Spring 依赖注入概述 Spring 依赖注入(Dependency Injection,DI)是一种重要的设计模式,它在 Spring 框架中扮演着关键角色。依赖注入的核心概念是将对象所需的依赖关系由外部容器(通常是 Spring 容器)进…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...