首页 > 编程知识 正文

verilog仿真,滑模变结构控制matlab仿真第四版

时间:2023-05-04 10:05:51 阅读:171609 作者:4492

最近在读论文,不太清楚幻灯片控制是什么,开始学习了。 使用本文的代码实现了3359 blog.csdn.net/sinat _ 38887014/article/details/103115218

但是,这个文章代码好像无法追踪正弦波信号,将其修正后终于成功了。

呃,不贴代码。 和这篇文章基本一样。 修正了控制量u

导出过程如下

之后,用控制器进行了修正,引入了期望值的sita d的导数,因此在simulink上也进行了修正。 图:

模拟结果如下。

第一条曲线是期望值,第二条曲线是跟踪值,第三条曲线是跟踪值的主导数。

附上我觉得写得太好了的另一篇文章。 https://blog.csdn.net/xiaohejiaoyiya/article/details/90271529

附加代码:

此处输入代码片段function [sys,x0,str,ts ]=simple _ adaptive _ controller [ t,x,u,flag]switchflag,case 0,[sys,xtr,xts,ts ] _e case 2,sys=[]; case 3,sys=MDLoutputs(t,x,u ); %计算输出子函数case 4,sys=[]; %计算下一个模拟时刻的子函数case 9,sys=[]; %退出模拟器函数otherwisedastudio.error (Simulink : blocks : unhandled flag )、num2str ) flag ); end function [sys,x0,str,ts,simstatecompliance ]=mdlinitializesizes %初始化子函数sizes=simsizes; sizes.NumContStates=0; %连续状态变量的个数sizes.NumDiscStates=0; %离散状态变量的个数sizes.NumOutputs=1; %输出变量sizes.NumInputs=4; %输入变量sizes.DirFeedthrough=1; %输入信号在输出侧是否为sizes.NumSampleTimes=0; % atleastonesampletimeisneededsys=simsizes (sizes; x0=[]; %初始值str=[]; ts=[]; %[0 0]用于连续系统,[-1 0]表示之前的采样时间设置simstatecompliance=' unknownsimstate '; functionsys=MDLoutputs(t,x,u ) %计算输出子函数J=2; THD=u(1; th=u(2; DTH=u(3; e=th - thd; de=dth; c=10; s=c*e de; xite=1.1; k=0; %ut=j*(-c*DTH-1/J* ) k*sxite*sign ) ) ) %ut=-c*j*DTH-sign(s )/j; ut=-j*sign(s )-j*c ) ) de-u )4)- thd; sys(1)=ut; function [sys,x0,str,ts]=plant(t,x,u,flag ) switch flag,case 0,[sys,x0,str,ts ]=mdlinitialializestizesizesizes %调用微分子函数case 2的计算,sys=[]; case 3,sys=MDLoutputs(t,x,u ); %计算输出子函数case 4,sys=[]; %计算下一个模拟时刻的子函数case 9,sys=[]; %退出模拟器函数otherwisedastudio.error (Simulink : blocks : unhandled flag )、num2str ) flag ); end function [sys,x0,str,ts,simstatecompliance ]=mdlinitializesizes %初始化子函数sizes=simsizes; sizes.NumContStates=2; %连续状态变量的个数sizes.NumDiscStates=0; %离散状态变量的个数sizes.NumOutputs=2; %输出变量sizes.NumInputs=1; %输入变量sizes.DirFeedthrough=0; %输入信号在输出侧为sizes.NumSampleTimes=1; % atleastonesampletimeisneededsys=simsizes (sizes; x0=[ 0,0 ]; %初始值str=[]; ts=[0 0]; %[0 0]用于连续系统,[-1 0]表示之前的采样时间设置simstatecompliance=' unknownsimstate '; 计算functionsys=MDLderivatives(t,x,u ) %微分子函数J=2; dt=sin(t; ut=u(1; sys(1)=x ) 2; sys(2)=1/j* ) utdt; 函数sys=MDL outputs (t,x,u ) %计算输出子函数sys )1)=x )1); sys(2)=x ) 2;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。