线性磁悬浮多输入多输出(MIMO)系统的线性系统控制器设计、实现和分析(Matlab代码实现)

news2024/10/5 21:20:58

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

​磁悬浮列车作为一种新型地面交通工具,已经在实践中得到了成功的应用。传统的EMS型磁悬浮系统在结构上简单可靠,而且在技术上已经相当成熟,但是由于悬浮力全部由电磁铁来提供,因而电流和功耗都很大,而且影响悬浮气隙的进一步增大。

本项目利用Matlab软件探索了线性磁悬浮多输入多输出(MIMO)系统的线性系统控制器设计、实现和分析。控制器是使用经典控制和现代控制方法为系统工厂设计的。为工厂设计并实施了两个PID控制器(每个输入输出模式一个)和一个带观察器的状态反馈控制器,以满足所需的设计规范。

📚2 运行结果

主函数部分代码:

clcclearclose all   % Since there is no motion in magnets so d^2y1=d^2y2=0syms y1 y2 u1 u2 a b c d m g yc y1_0 y2_0 u1_0 u2_0    a = 1.65;  b = 6.2;  c = 2.69;  d = 4.2;N = 4;m = 0.12; g = 9.8; yc = .12; y1_0=.02; y2_0=-0.02;%  Calculation of u10 and u20  u1_0= a*(b + y1_0)^4*(g*m + c/(d - y1_0 + y2_0 + yc)^4) u2_0=a*(g*m - c/(d - y1_0 + y2_0 + yc)^4)*(b - y2_0)^4E= (4*c) /(((d - y1_0 + y2_0 + yc)^5))F= (4*u1_0)/(a*(b + y1_0)^5)G= 1       /(a*(b + y1_0)^4)H= (4*u2_0)/(a*(b - y2_0)^5)I= 1       /(a*(b - y2_0)^4)% ***************************************************88fprintf( '\n ------------------------------------------------------------------------------------------------------------\n') fprintf('x=Ax+Bu\n')  fprintf('Y=Cx+Du\n') %  [0 1 0 0, -(F+E)/m  0  E/m 0 , 0 0 0 1, E/m 0 (H-E)/m 0 ] fprintf('A=\n') fprintf('   0        1     0        0 \n') fprintf('-(F+E)/m    0    E/m       0 \n') fprintf('   0        0     0        1 \n') fprintf('   E/m      0   (H-E)/m    0 \n') fprintf('B=\n') fprintf('  0       0   \n') fprintf(' G/m      0    \n') fprintf('  0       0    \n') fprintf('  0      I/m   \n') fprintf('\n ------------------------------------------------------------------------------------------------------------\n')A=[0 1 0 0; -(F+E)/m  0  E/m 0 ; 0 0 0 1; E/m 0 (H-E)/m 0 ] B=[0 0 ; G/m 0; 0 0 ; 0 I/m] C=[1 0 0 0; 0 0 1 0 ] D=[ 0 0 ; 0 0 ] fprintf('\n ------------------------------------------------------------------------------------------------------------\n') fprintf('\n  State Space Model \n')sys=ss(A,B,C,D)%3 Transfer function of the open-loop system. fprintf('\n ------------------------------------------------------------------------------------------------------------\n') fprintf('\n Transfer function of the open-loop system.\n')fprintf('           Y ( S )                   − 1       \n')fprintf('TF ( S ) =---------- =  C ( SI − A )    B + D \n')fprintf('           U ( S )\n')        TF=tf(sys)TF11=TF(1,1)TF22=TF(2,2) fprintf('\n ------------------------------------------------------------------------------------------------------------\n') [num1,den1] = tfdata ( TF11,'v')[A1,B1,C1,D1] = tf2ss ( num1, den1 ) fprintf('************************* \n')sys1 = ss ( A1, B1, C1, D1 ) [num2,den2] = tfdata ( TF22,'v')[A2,B2,C2,D2] = tf2ss ( num2, den2 )sys2 = ss ( A2, B2, C2, D2 ) ;fprintf('\n ------------------------------------------------------------------------------------------------------------\n')%%4 Controllable, Observable, and Jordan canonical forms.fprintf('---------------------------------------------------------------------------------------\n')fprintf('3----Obtain the controllable, observable, and Jordan canonical forms.\n')fprintf('---------------------------------------------------------------------------------------\n')Cx=ctrb(A,B);Rank_Cx=rank(Cx);Cx=ctrb(A,B);Rank_Cx=rank(Cx);B1=B(:,1)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if (Rank_Cx==size(A,1))fprintf("This system is Controllable")  CP_A =round(poly(A),6) n=size(A,1)  IA1 = eye(n-1,n-1);  Ac1=zeros(n,n);  Bc1=zeros(n,1);  Ac1(1:n-1,2:n)=IA1;  Ac1(n,:)=-CP_A(:,n+1:-1:2)  Bc1(n,1)=1%    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    Cx1=ctrb(A,B1)        Cxc1=ctrb(Ac1,Bc1)     Tc1=Cx1*inv(Cxc1)    Cc1=C*Tc1     Dc1=D    if Bc1==round(inv(Tc1)*B1,4)        disp('********************  Successfull ')else     disp('you did wrong')    inv(Tc1)*B1      pauseend

🎉3 参考文献

[1]李才永. 非线性系统多模型分析及增益调度PID控制器设计[D].华北电力大学(河北),2004.

点击文章左下角【阅读全文】

部分理论引用网络文献,若有侵权联系博主删除。

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

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

相关文章

学习C#基础知识和应用:

C#语言基础知识:了解C#的开发环境、变量、语法和程序结构等基础内容。这些知识是理解和开发C#自动化控制系统的前提。刚好,我这里有上位机入门,学习线路图,各种项目,需要留个6。 Winform窗体控件的应用:Wi…

京东零售 / hotkey 热点key探测工具使用

1、安装etcd 在etcd下载页面下载对应操作系统的etcd,https://github.com/etcd-io/etcd/releases 使用3.4.x以上。 2、启动worker(集群) 下载并编译好代码,将worker打包为jar,启动即可。如: java -jar $J…

北邮国院物联网 Microprocessor 微处理器笔记

Introduction-随便聊 嵌入式系统是什么?专用的计算机系统。为专门功能可能对计算机架构,外设等做出一些取舍。 通常的限制:Cost(比如大量部署传感器节点),Size and weight limits(特定应用场景…

PHP代码审计(一)之PHP代码审计的意义

PHP代码审计的意义 什么是代码审计 什么是代码审计?代码审计就是获取目标的源代码,这个目标可以是一个网站,也可以是一个手机app,只要我们得到了目标的源代码,我们就可以去挖掘目标系统的漏洞,代码审计是…

详解Jenkins配置邮件通知

前言 这几天Darren洋在使用Jenkins定时构建jmeter脚本中,要用到邮箱配置,故记录之。 一、Jenkins默认邮箱通知 这里填好smtp服务器地址和邮箱后缀,这样下面的账号就不用加邮箱后缀了。 网易邮箱设置以下我就不说废话文学了,直接上…

从零搭建ros间的通信,各功能包、节点之间的通信

新建消息类型 catkin_create_pkg car_interfaces roscpp rospy std_msgs message_generation message_runtime书写自定义的msg: 比如我写一个GlobalPathPlanningInterface.msg: float64 timestamp #时间戳 float32[] startpoint #起点位置&#x…

【技能实训】DMS数据挖掘项目-Day01

文章目录 任务1 项目准备一、开发环境二、系统简介三、项目创建 任务2【任务2.1】菜单项设计及其测试【任务2.2】使用数组存储采集的数据【任务2.3】控制显示采集的数据 任务1 项目准备 一、开发环境 1.JDK8下载及其环境变量配置(JDK8以上版本) 2.IDE :Eclipse 或…

马可·坎图 (Marco Cantú) 荣获尼克劳斯·沃斯奖 (Niklaus Wirth Award) Pascal最具价值贡献者奖

我们非常高兴地宣布,我们自己的Marco Cant荣获由西班牙萨拉曼卡大学主办的国际Pascal大会颁发的Niklaus Wirth奖。 评审团的引文最后这样一句话:“ Marco Cant 是Pascal社区最杰出、最原创、最杰出的人物之一”。我不认为我们自己可以说得更好。 国际Pa…

rabbitmq使用笔记

前言 mq的优点:异步提速、解耦、流量削峰 mq的缺点: mq宕机可能导致消息丢失、消费者未成功消费如果保证整个系统架构的事务安全、消息可能被重复消费出现幂等问题、消息未被消费到引发死信问题、消息出现消费延迟或消费异常引发的顺序消费错乱问题...…

Linux 修改网卡 MAC 地址

使用 iproute2 修改网卡 MAC 地址 1. 使用如下命令查看当前所有网卡及其 MAC 地址; sudo ip link show2. 如笔者这里想要修改网卡 ens224 的 MAC 地址,先使用如下命令关闭该网卡; sudo ip link set dev ens224 down3. 设置该网卡的 MAC 地…

阿里云:机器学习平台及OpenSearch

机器学习流程 相关项目 BladeDISC-AI编译优化 EasyRec-推荐算法库 EasyCV-视觉图像算法库 EasyNLP-NLP/多模态算法库 模型开发中算法团队面临的工程挑战 Develop platform OpenSearch 向量检索库

亚马逊云科技迁移只需5个简单步骤(2023年迁移到云)

您是否正在考虑亚马逊云科技迁移,并将本地项目迁移到云中? 但是不知道从哪里开始以及如何去做? 在这篇文章中,我将指导您完成亚马逊云科技迁移。 什么是亚马逊云科技? 亚马逊云科技或亚马逊网络服务是最受欢迎的云平…

jar程序部署的外部依赖和按名传参和shellUtil传参json串及返回pid问题

文章目录 指定jar程序运行的外部依赖指定参数名称传参给程序shellUtil命令传参JSON串shellUtil获取回调nohub启动程序后的pid 指定jar程序运行的外部依赖 nohup java -Djava.ext.dirs./lib/ -cp DataSourceAccessPage.jar com.sitech.adapter.JsonAdapter arg0 arg1java -cp 命…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令,将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

Linux开发环境的搭建

文章目录 系统安装工具软件安装Xshell远程登录VScode远程登录Linux 下GCC安装 系统安装 (虚拟机安装、云服务器)Ubuntu18.04 网络类型:桥接模式网络、NAT(network access transation)网络地址转换模式、仅主机模式 注意&#xff…

模拟电压与数字脉冲占空比控制的应用与发展前景

摘要:本文将讨论模拟电压控制和数字脉冲占空比控制在嵌入式控制方面的应用场景、共同点和不同点,并探讨它们在未来发展中的前景。 引言: 模拟电压控制和数字脉冲占空比控制都是嵌入式系统中常用的控制方式。模拟电压控制将电压作为控制信号&…

electron 应用优雅的配置 about 信息

使用 electron 的 dialog tray 托盘栏菜单优雅简单的配置 about 关于本应用的信息,效果下图所示。 项目依赖 {"electron": "^24.4.1","electron-builder": "^23.6.0","electron-builder-squirrel-windows": &q…

线程那些事

线程锁 线程锁(Thread Lock),也被称为互斥锁(Mutex Lock),是一种用于多线程编程中的同步机制。它用于保护共享资源在多个线程之间的访问,以避免出现竞态条件(Race Condition&#x…

企业内容建站系统 ModStartCMS v6.8.0 内容页面自定义模板,内容区块功能增强

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

【状态估计】一维粒子滤波研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…