matlab仿真限幅发散,simulink仿真收敛,但用m文件实现却是发散的,是怎么回事?...

本帖最后由 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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值