本帖最后由 black1man 于 2018-11-29 23:57 编辑
我先说下我的仿真:
是对一个船舶系统进行反步滑模控制,其中simulink仿真中的闭环控制可以完美收敛,可是同样用m文件来做,却是彻底的发散。
(需要说一下,开环的情况下,simulink和m文件的仿真结果完全一致,只有在闭环情况下,一个收敛,一个发散)
请问:是我的m文件哪里编的不对吗?为什么会出现这种情况。程序和simulink都传到了附件里。
研究了一个晚上,完全没有发现问题所在,脑子都懵了,不知道哪里犯了错误,希望有朋友指点迷津。谢谢!
我把m文件贴了出来贴出来:(附件里有simulink和m程序,可以下载后直接运行)
clear;clc;format long;
T = 0.5; count = 200; step_T = 2; %周期,周期数,周期步数
h = T/step_T;
%% 船体数据
M = 1e9* [ 0.0068 0 0; 0 0.0113 -0.0340 ; 0 -0.0340 4.4524];
D = 1e8* [0.0008 0 0 ; 0 0.0025 -0.0203 ; 0 -0.0203 3.8481];
L1=diag([0.22;0.22;22]); L2=diag([4e6;10e6;900e6]); % 反步法的增益
omega_bar=[5e6;5e6;5e6]; % 干扰的上限
%% 变量初始化
eta=[10;10;1];
eta = J_func(eta); %弧度转换到[-pi,pi]之间
nu= [0;0;0];
omega=[0;0;0]; %干扰
tau=[0;0;0]; %控制力
etad=[0;0;0]; %期望值
detad=[0;0;0]; %期望值的一次导
ddetad=[0;0;0]; %期望值的二次导
%% 画图
t_draw = zeros(1,count);
eta_draw = zeros(3,count);
omega_draw=zeros(3,count);