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 usizes = simsizes;1 F, y  T/ N+ z9 @4 E) L/ T
sizes.NumContStates  = 3;    %连续状态个数
) ?& h/ R6 N6 G* O! x4 rsizes.NumDiscStates  = 0;    %离散状态个数
0 C8 C3 r( S  f4 }2 w+ zsizes.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 Lsizes.NumSampleTimes = 0;    % at least one sample time is neededWO  一般来说为1个
+ s5 \, k2 M3 D3 W9 C8 }sys = simsizes(sizes);
; y3 k1 b. P: f- Tx0 = [0.001 0.001 0.001];
: x- D% s5 T2 V; G8 L1 Xstr = [];$ 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 Us21=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# Falpha2 = 7/9; beta2 = 9/7;* Q/ G2 ?& ~! J& _0 L; S* @& q
k1 = 1;
; P' c; h( c" n) }+ Wk2 = 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# nif 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 Qsys(1) = u1;
8 c& G. Q' I/ Y  E* ksys(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