モデルにより対策方法は様々ですが、ステップ サイズや許容誤差を変更する他、ソルバーの固定ステップ / 可変ステップの変更、可変ステップの場合、ソルバーの種類をode15s,ode23sなどStiffなソルバーに変えてトライしてみる方法が考えられます。
下記ドキュメントにソルバーの情報があります。
それでも、エラーが解消しない場合、モデルやパラメータ条件の見直しが必要です。
類似のエラー事例は、MATLAB Answersに多数あります。
clc
clear
Ts=0.0001;
T=0.1;
m=1740;
ig=3214;
kf=60000;
kr=122000;
lf=1.4;
lr=1.414;
lg=0.342;
vx=80/3.6; %/ m/s
x0=[0 0 0 0 0 0];
xv0=[0 0 0 0 0 0];
xrou_0=[0;0];
xq_0=[0; 0; 0; xrou_0(1); vx*xrou_0(1); xrou_0(2)];
w=3.5;
x=50;
r=(1/3.5)*(x^2+(3.5/2)^2);
C=2*asin(((2*x)^2+(3.5)^2)^(1/2)/(4*r)); %/ θ=c
K=r*C; %/ 弧の長さ(目標軌道の半分)
rou1=1/r;
rou2=-1/r;
t_c1=1;
t_c2=t_c1+(K/vx);
t_c3=2*t_c2-t_c1;
yr_0=0;
da=0.001;
b=[0 ; 1];
b_=b';
c=[1 ; 0];
theta=1;
omega_n=10;
Er_0=0;
I=diag([1 1]);
Iv=diag([1 1 1 1 1 1]);
I2=diag([1 1]);
O2=diag([0 0]);
Mp=diag([m ig]);
H=[1 1 ;lf lg];
H_=H';
Ku=diag([kf kr]);
omega_lg=I+lg*c*b';
M=inv(omega_lg)*Mp*omega_lg;
Bpu=inv(M)*H*Ku;
Bpu_=Bpu';
Bpu_gyaku=inv(Bpu);
A32=(1/vx)*Bpu*H'*(vx*c*b'-da*I2);
A33=-((1/vx)*Bpu*transpose(H)+da*I2);
Bu=[O2 ; O2 ; I2];
Bu_=[O2 O2 I2];
Bp=Bu*Bpu;
Arou=[0 1 ;-omega_n^2 -2*theta*omega_n ];
brou=[0 ; 1 ; 0 ; 0 ; 0; 0];
Ap=[vx*c*b' I2 O2 ;
O2 -vx*c*b' I2 ;
O2 A32 A33];
By=[O2; I2; O2];
By_=By';
Bua=H'*[(-(da/vx)*I+c*b')*By'-Bu'/vx];
betax=1;
bv=[0;0;1];
Av_beta=[0 1 0; 0 0 1; -1 -3 -3];
Bry=[1 0; 0 1; 1 0; 0 1; 0 0; 0 0];
Bry_=Bry';
Br=[I2; O2; O2];
Br_=Br';
vxc=80;
vx_dot=0;
R=diag([0.1 0.1]);
Q=diag([1 1 1 1 100 1]);
Q=diag([1 1 1 1 100 1]);
[P1,l,g]=care(Ap,Bp,Q,R);
F1=inv(R)*Bp'*P1;
R2=diag([0.1 0.1]);
Q2=diag([1 1 1 1 100 1]);
[P2,l,g]=icare(Ap,Bp,Q2,R2);
F2=inv(R2)*Bp'*P2;
websave('soturon_2.slx', 'https://jp.mathworks.com/matlabcentral/answers/uploaded_files/1242312/soturon_2.slx');
open_system('soturon_2.slx')
%set_param(bdroot,'SolverType','Variable-Step');%Try changing 'Variable-Step' or 'Fixed-Step'
%set_param(bdroot,'Solver', 'ode15s'); %Try changing solver for Variable-Step
%set_param(bdroot,'Solver', 'ode14x'); %Try changing solver for Fixed-Step
sim('soturon_2')