m基于MPC模型预测的网络控制系统simulink仿真

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.MATLAB核心程序

4.完整算法代码文件


1.算法仿真效果

matlab2022a仿真结果如下:

2.算法涉及理论知识概要

       随着通信网络和信息理论的迅速发展,网络控制系统引起了研究人员和工程师的兴趣。 众所周知,网络控制系统是一个非常具有挑战性和前景的研究领域。 因此,网络控制系统(NCS)实现了传感器,控制器和执行器之间的数字和无线通道之间的信息交换。 NCS由于其系统布线减少,系统诊断和维护的便利性以及系统敏捷性的提高而在许多应用领域得到了应用。 典型的NCS架构如图1所示。

      然而,通信网络在反馈控制环路中的插入导致了拥塞,时间延迟和数据包丢失等几个具有挑战性的问题,这些问题很可能使控制性能劣化,甚至使控制系统不稳定。 为了应对这些挑战,已经开展了网络延迟研究。 而且,传输速率和通信带宽的限制正在成为一个新的热点。

         网络化控制系统是控制学科的一个新的发展方向,涉及控制、计算机与网络通 讯等多学科理论和技术。网络的引进对控制系统既是机遇又是挑战。一方面,网络 让控制系统具有了开放性、数字互连、维护方便以及更好的可靠性和容错能力等特 点;另一方面,时延、丢包等网络因素给控制系统的控制品质和稳定性带来负面影 响。为了探讨网络特性对整个控制系统性能的影响,本文研制了一种基于网络仿真 软件NS2 (Network Simulator V2) 的网络化控制系统综合仿真平台。利用这个仿真平 台,一方面可以进行网络和控制系统的综合仿真,另一方面也可以验证关于网络化 控制系统的各种假设和结论。 网络化控制系统的网络服务质量会影响控制系统的控制品质甚至使系统不稳 定,本文首先介绍了网络化控制系统的研究现状、建模和模型、两个稳定性判定定 理和定量评估控制品质的方法。 
       网络控制系统的模型是分析网络控制系统的稳定性、网络化控制器设计的基础。 由于网络控制系统是一个复杂的混杂控制系统(Hybrid Control System),其建模方法 不同于传统的线性系统,而是有自己的独特方法——基于时延模型的方法或基于网 络参数的方法。根据被控对象和控制器的驱动模式的不同,建模方法可以有很多 种。这里只讨论被控对象是时间驱动、控制器是事件驱动的模式下基于网络时延的 建模方法。 
        在网络化控制系统中,被控对象和传感器是连续的对象;同时,控制器和网络数 据包的信号都是离散信号;网络化控制系统是一个典型的混杂控制系统。因而在对 网络化控制系统进行建模的时候,被控对象的传感器和执行器采用时间驱动的方式, 即定时采样;控制器采用事件驱动的方式,用数据包或消息的方式驱动 。

       网络控制是指通过一系列的通信信道构成一个或多个控制闭环,同时具备信号处理、优化决策和控制操作的功能,控制器可以分散在网络中的不同地点。

首先,结构是:

       然后将对象换为电机,然后调整相应的控制器,然后进行实现如上的网络控制结构。那么,结合电机和控制器的系统,在simulink的仿真模型结构基本就是这么一个结构了

       然后在这个控制器结构上,增加采样模块,对外接口,基本就是我们上述的仿真模型了。这里,采用较为简单的永磁直线电机,控制算法,采用较为经典的MPC控制算法。

        通过matlab,将电机的参数转换为空间状态方程,然后就得到了simulink中的

3.MATLAB核心程序

 这个结构和

控制器,通过传感器,然后送入到network1,然后接受传感器,然后进入到控制对象。

所以控制器结构上和系统完全一样了。

.....................................................................
%加载
cd toolbox
setenv('TTKERNEL',pwd)
cd matlab
cd help
addpath(pwd)
cd ..
addpath(pwd)
cd ..
addpath(pwd)
cd ..

%电机设计模型,计算ABCD
a        =-44.12;
b        = 9.3;
%b/(s^2 - a1*s)
G        = tf([0 b],[1 -1*a 0]);
G
G1= ss(G);
G1
A = G1.a;
B = G1.b;
C = G1.c;
D = G1.d;

%控制器参数初始化
Position = 10;
%速度约束
Speed_max =  0.5;
Speed_min = -0.5;
%Sample time
Ts      = 0.001;    
%预测水平
p       = 5000;     
%控制水平
m       = 10;     
MPC_set = mpc(G,Ts,p,m);

%
%MPC输出范围限定
MPC_set.MV=struct('Min',-300,'Max',300);
%设置MPC迭代次数
MPC_set.Optimizer.MaxIter = 50;

MPC_set.ManipulatedVariables.RateMax = 40;
MPC_set.ManipulatedVariables.RateMin = -40;

MPC_set.ManipulatedVariables.RateMaxECR = 0.5;
MPC_set.ManipulatedVariables.RateMinECR = 0;

MPC_set.Optimizer.MinOutputECR = eps;

MPC_set.Weights.ManipulatedVariablesRate=0.05;
12_036_m

4.完整算法代码文件

V

猜你喜欢

转载自blog.csdn.net/hlayumi1234567/article/details/129843963