EDA365电子论坛网
标题:
s函数报错
[打印本页]
作者:
勇往直前11
时间:
2020-9-28 11:08
标题:
s函数报错
s函数报错“during flag=i call must be a real vector of length n” ,怎么解决?
. W' F6 ?9 s' \* S& m
代码如下:
2 v2 a3 ]1 _1 B
function [sys,x0,str,ts] = PMSM_chaos_controller(t,x,u,flag)
! K/ Q9 G X) q! z: @, f: z0 {" K
switch flag,
8 ^- o( Y3 ^; b9 r2 G8 Y7 ]
case 0,
+ ^$ x8 ~$ K/ {7 q j' Q
[sys,x0,str,ts] = mdlIniticializeSizes;
3 a+ c1 w8 I, E" O5 F; B3 @ a' P
case 3,
) ~2 D9 V/ \9 v' y$ d
sys = mdlOutputs(t,x,u);
/ ~ ?: Q' w ]6 x
case {1,2,4,9},
2 ?/ o# g7 @% _+ O$ Y$ D
sys = [];
0 ?% j1 c" H6 {8 X) |$ d
otherwise,
: W; g" K7 n% F! ~" v, m) z. i
DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
& z" k! ]5 E! D4 q9 R
end
$ P6 ^! z+ K4 L6 r7 s4 S
# v) R" |9 C4 \/ k9 g* h
function [sys,x0,str,ts] = mdlIniticializeSizes
! L' v8 K; B% ]) V* d0 u
sizes = simsizes;
1 F, y T/ N+ z9 @4 E) L/ T
sizes.NumContStates = 3; %连续状态个数
) ?& h/ R6 N6 G* O! x4 r
sizes.NumDiscStates = 0; %离散状态个数
0 C8 C3 r( S f4 }2 w+ z
sizes.NumOutputs = 3; %输出变量个数
: s+ F" c# ~. S1 q6 T! k
sizes.NumInputs = 9; %输入信号个数
0 |& `2 c( F9 J& y& k. g w. `- {
sizes.DirFeedthrough = 1; %输入直接传入输出信号否
6 A! v7 ^- V$ i3 U6 \: d, O6 z5 f1 L
sizes.NumSampleTimes = 0; % at least one sample time is neededWO 一般来说为1个
+ s5 \, k2 M3 D3 W9 C8 }
sys = simsizes(sizes);
; y3 k1 b. P: f- T
x0 = [0.001 0.001 0.001];
: x- D% s5 T2 V; G8 L1 X
str = [];
$ K+ ?0 p/ F# y6 g' j
ts = [];
9 ^. r& W% T" h& q3 I3 T. \
8 C8 F3 \ y" G/ v& J2 [
function sys=mdlOutputs(t,x,u)
0 F: z! |, \" N: ]6 N( B
e1=u(1);e2=u(2);e3=u(3);
& G4 j( l+ l8 w2 I' L, K0 U
s21=u(4);s22=u(5);s1=u(6);
5 D, m- Z) _: V. }$ x% R& ^5 K
es_w=u(9);
0 U) C% ~, L. ^
alpha = 0.8;
' @+ c! C }6 t; N8 _/ @
alpha1 = 5/7; beta1 = 7/5;
5 W; V7 c& ]0 d4 B# F
alpha2 = 7/9; beta2 = 9/7;
* Q/ G2 ?& ~! J& _0 L; S* @& q
k1 = 1;
; P' c; h( c" n) }+ W
k2 = 1.2;
, l6 y0 p" }6 m# j& y4 y* u, R
miu = 10;
% ^$ [" c& F6 t: |9 s2 |& K& H
delta = 5.46;
?- L* ]3 Z" a3 A2 L; J% R
%assert(all(imag(u)==0), 'u is imaginary or nan');不起作用
) D6 k; g# k# o' O; x# n
if e3==0
4 D, q8 C: P9 |5 y& N/ T u
u1 = e1 - es_w*e1 - 10*((abs(e1))^alpha)*sign(e1) - 10*e1 - k2*((abs(s21))^alpha2)*sign(s21) -k2*((abs(s21))^beta2)*sign(s21) - miu*s21;
, f% x! \) G( \8 x9 ^8 J& w9 B7 Z u
u2 = e2 - es_w*e2 - 10*((abs(e2))^alpha)*sign(e2) - 10*e2 - k2*((abs(s22))^alpha2)*sign(s22) -k2*((abs(s22))^beta2)*sign(s22) - miu*s22;
' O, f/ l1 `5 j! c3 {" @: c
u3 = -delta*(e2-e3) - 10*((abs(e3))^alpha)*sign(e3) - 10*e3 - k1*((abs(s1))^alpha1)*sign(s1) -k1*((abs(s1))^beta1)*sign(s1) - miu*s1;
: S# h+ N7 n1 m! d
else
6 O! w8 G) M6 T5 I2 [- M, M5 H
u1 = 0;
7 l4 W5 F6 b- Q
u2 = 0;
* Q5 M/ w: |* h6 a$ W& M
u3 = -delta*(e2-e3) - 10*((abs(e3))^alpha)*sign(e3) - 10*e3 - k1*((abs(s1))^alpha1)*sign(s1) -k1*((abs(s1))^beta1)*sign(s1) - miu*s1;
2 t' c5 I: F& l9 \4 F
end
; W/ G& h& G9 D1 S1 D8 _# `9 Q
sys(1) = u1;
8 c& G. Q' I/ Y E* k
sys(2) = u2;
# {+ l# Q1 d+ c+ _' X) F
sys(3) = u3;
& t# |# a& l$ m- z' O
复制代码
作者:
Uifhjvv
时间:
2020-9-28 13:09
帮你顶一下
作者:
小小鲁班
时间:
2020-9-28 13:21
8 P/ a' y! m1 {7 q. d$ _
你这个没有用到状态变量吧
作者:
zaiyiaaaa
时间:
2020-9-28 14:01
你上传一下simulink仿真图?
作者:
zzz.dan
时间:
2020-9-28 14:05
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2